Page 1 of 1

Upgrade Problem

Posted: Sun Aug 27, 2006 1:51 am
by Jeff Barnes
Hi Everybody,

I just upgraded from FWH2.5 to FWH2.7 and have a problem that I did not have before.

When I try to:

if ! SetCommState( cDcb )
nError = GetCommError( nComm )
MsgInfo( "SetCommState Error: " + Str( nError ) )
endif

I get a HARBOUR EXCEPTION error on the SetCommState() line.

This worked fine wit 2.5, What do I need to change in 2.7 to make this work again.

Thanks,

Jeff

Re: Upgrade Problem

Posted: Sun Aug 27, 2006 7:42 am
by Enrico Maria Giordano

Code: Select all

if ! SetCommState( nComm, cDcb )
EMG

Posted: Sun Aug 27, 2006 10:14 pm
by Jeff Barnes
Thanks Enrico,

The error is gone but it still wont work.

This is why I hate upgrading ... always end up with more problems.


It seems as if my ReadComm( nComm, @cData ) does nothing now.


Jeff

Posted: Mon Aug 28, 2006 2:11 am
by Antonio Linares
Jeff,

We have assisted you by email to solve your problem. Hopefully is running fine again.

Posted: Mon Aug 28, 2006 9:41 am
by Enrico Maria Giordano
This is a working sample:

Code: Select all

#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", 16384, 16384 )

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

        BUILDCOMMDCB( "COM1:115200,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 ) )
EMG

Posted: Mon Aug 28, 2006 7:56 pm
by Jeff Barnes
Enrico,

I tried your sample...

All I get is a white window. Nothing else happens.

I have also tried with COMM.C relinked from FWH2.5 and still nothing.

I am stuck.

Jeff

Posted: Mon Aug 28, 2006 9:33 pm
by Enrico Maria Giordano
It is a simple terminal. You can type, as an example

ATI4

and press Return and you will get the response from the modem.

EMG