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
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