It seems that SetCommState() is not able to change the serial communication port baud rate.
Antonio, can you look at it? If you need a sample of the problem please let me know.
EMG
It seems that SetCommState() is not able to change the serial communication port baud rate.
Antonio, can you look at it? If you need a sample of the problem please let me know.
EMG
#ifdef __HARBOUR__
CLIPPER BUILDCOMMDCB( PARAMS ) // () cInfoDef, @ cDeviceBlock --> lOk
#else
CLIPPER BUILDCOMMD( PARAMS ) // CB() cInfoDef, @ cDeviceBlock --> lOk
#endif
{
DCB dcb;
GetCommState( hCom, &dcb ); // EMG
#ifdef __FLAT__
if( BuildCommDCB( _parc( 1 ), &dcb ) ) // OK
#else
if( BuildCommDCB( _parc( 1 ), &dcb ) == 0 ) // OK
#endif
{
_storclen( ( char * ) &dcb, sizeof( dcb ), 2 );
_retl( TRUE );
}
else // Error
{
_storc( "", 2 );
_retl( FALSE );
}
}#ifdef __HARBOUR__
CLIPPER SETCOMMSTATE( PARAMS ) // ()
#else
CLIPPER SETCOMMSTA( PARAMS ) // TE()
#endif
{
#ifdef __FLAT__
_retl( SetCommState( hCom, ( DCB FAR * ) _parc( 2 ) ) != 0 ); // EMG
#else
_retl( SetCommState( ( DCB FAR * ) _parc( 1 ) ) == 0 );
#endif
}Enrico,
Thanks. I guess you declare hComm as static HANDLE hComm;
But the problem I see is that you can only manage one comm port at the same time, isn't it ?
Antonio Linares wrote:Enrico,
Thanks. I guess you declare hComm as static HANDLE hComm;
Antonio Linares wrote:But the problem I see is that you can only manage one comm port at the same time, isn't it ?
Enrico,
> No, you declared it that way.
You are totally right ![]()
> Why did you organize comm.c in such way?
It has been evolving since 16 bits days: Backwards compatibity, learning and improving, changes... ![]()
short int WriteComm( short int idComDev, void FAR * lpvBuf, short int cbWrite )
{
DWORD dwBytesWritten = cbWrite;
overlap.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL ); // EMG
dwEventsRead = WriteFile( hCom, lpvBuf, cbWrite, &dwBytesWritten, &overlap );
WaitForSingleObject( overlap.hEvent, INFINITE ); // EMG
GetOverlappedResult( hCom, &overlap, &dwBytesWritten, FALSE );
CloseHandle( overlap.hEvent ); // EMG
return ( ( short int ) dwBytesWritten );
}Enrico,
I missed this one. Many thanks! ![]()
Thank you!
EMG
I try to fix comm.c with the EMG code, but
i have compiling errors:
Progetto: WP32, Ambiente: BorlandWin:
[1]:Bcc32.Exe -M -c -O2 -tW -v- -X -DHB_FM_STATISTICS_OFF -DHB_NO_DEFAULT_API_MACROS -DHB_NO_DEFAULT_STACK_MACROS -DHB_OS_WIN_32 -Ic:\ut\fwh27\include -IC:\BCC55\Include;C:\xHxFw27\Include -nObj comm.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
comm.c:
Error E2451 comm.c 58: Undefined symbol 'hCom' in function BUILDCOMMD
Error E2451 comm.c 85: Undefined symbol 'hCom' in function SETCOMMSTA
*** 2 errors in Compile ***
I have FWH 2.7 December/2005
Directory di C:\ut\fwh27\source\winapi
16/05/2003 10.05 11.841 comm.c
static HANDLE hCom = INVALID_HANDLE_VALUE;Thanks, now works.