Page 1 of 1

FiveWin + Com Port with Terminal Server

Posted: Fri Nov 04, 2011 12:19 pm
by ali
Hi People!

Do somebody work with Windows Terminal Server + FiveWin + COM Port redirection?

I have edit a litte sample Programm from Enrico. That read the Com Port imput. On a Local Machine it works fine but on a Terminal Server I get no DATA. With a other Programm (no FW) it works. I hope someone can help me.

Here the source:

Code: Select all

// Working sample of a simple ASCII terminal program - Developed by Enrico M. Giordano

#include "Fivewin.ch" 

FUNCTION MAIN() 

    LOCAL oDlg 

    LOCAL oGet, cTxt := "" 

    LOCAL nCom 

    DEFINE DIALOG oDlg; 
           SIZE 500, 500; 
           TITLE "Terminale" 

    @ 0, 0 GET oGet VAR cTxt MEMO READONLY 

    oGet:bKeyDown = { | nKey | Tasti( nCom, nKey ) } 

    ACTIVATE DIALOG oDlg; 
             ON INIT ( oGet:AdjClient(),; 
                       nCom := APRICOM( oDlg, oGet ),; 
                       IF( nCom < 0, oDlg:End(), ) ); 
             CENTER 

    IF nCom >= 0; CLOSECOMM( nCom ); ENDIF 

    RETURN NIL 


STATIC FUNCTION TASTI( nCom, nKey ) 

    SENDSTR( nCom, CHR( nKey ) ) 

    RETURN NIL 


STATIC FUNCTION APRICOM( oDlg, oGet ) 

    LOCAL nCom, cDcb 

    BEGIN SEQUENCE 
        nCom = OPENCOMM( "COM1", 2048, 128 ) 

        IF nCom < 0 
            ? "Errore di apertura della porta di comunicazione." 
            BREAK 
        ENDIF 

        BUILDCOMMDCB( "COM1:9600,N,8,1", @cDcb ) 

        IF !SETCOMMSTATE( nCom, cDcb ) 
            ? "Errore di impostazione della porta di comunicazione." 
            BREAK 
        ENDIF 

        oDlg:bCommNotify = { | nCom | Connect( nCom, oGet ),; 
                                      EnableCommNotification( nCom, oDlg:hWnd, 1, -1 ) } 

        IF !ENABLECOMMNOTIFICATION( nCom, oDlg:hWnd, 1, -1 ) 
            ? "Errore di abilitazione della notifica." 
            BREAK 
        ENDIF 
    RECOVER 
        nCom = -1 
    END SEQUENCE 

    RETURN nCom 


STATIC FUNCTION CONNECT( nCom, oGet ) 

    LOCAL cStr 

    ENABLECOMMNOTIFICATION( nCom, 0, 1, -1 ) 

    cStr = RECEIVESTR( nCom ) 

    cStr = STRTRAN( cStr, CHR( 13 ), "" ) 
    cStr = STRTRAN( cStr, CHR( 10 ), CRLF ) 

    oGet:Append( cStr ) 

    RETURN NIL 


STATIC FUNCTION SENDSTR( nCom, cString ) 

    LOCAL nBytes := WRITECOMM( nCom, cString ) 

    RETURN nBytes = LEN( cString ) 


STATIC FUNCTION RECEIVESTR( nCom ) 

    LOCAL cBuf := SPACE( 1000 ) 

    RETURN LEFT( cBuf, READCOMM( nCom, @cBuf ) )
 

Re: FiveWin + Com Port with Terminal Server

Posted: Fri Nov 04, 2011 1:26 pm
by Enrico Maria Giordano
Are you sure that com port is COM1 on terminal server? And, anyway, do you get one of the error messages that are in the sample? Or any other error message?

EMG

Re: FiveWin + Com Port with Terminal Server

Posted: Fri Nov 04, 2011 1:55 pm
by ali
Hi!

With the no FW Program I get data from COM 1. The Port is correct. No error messages. nothing happend. Is it possible to set the timer to receiving Data up to give the Prog. more time?

Best regards

Aljoscha

Re: FiveWin + Com Port with Terminal Server

Posted: Fri Nov 04, 2011 4:04 pm
by Enrico Maria Giordano
A timer is needed only for polling technique not for the better interrupt technique that my sample uses.

EMG