Page 1 of 1

Comm port init

Posted: Sat Apr 15, 2006 3:26 pm
by pawelu
Antonio,

It's possible in FWPPC initiate comm port eg. baud=9600, parity=e, data=8, stop=1 before send data to port ?

Thanks
Pawel

Posted: Sat Apr 15, 2006 3:48 pm
by Antonio Linares
Pawel,

You have to use the Windows API SetCommState() function.

Posted: Wed May 10, 2006 9:55 am
by Raymond Fischbach
Antonio Linares wrote:Pawel,

You have to use the Windows API SetCommState() function.
Hello Antonio,

Could you please give us a small example on how to do it?
Where can I find doc on these functions?

Sorry for these basic questions but this is my first approach to Api and Dll calls.

Best regards,

Posted: Fri May 12, 2006 5:18 pm
by Antonio Linares
This is a sample:

Code: Select all

#include "FWCE.ch"

#define GENERIC_WRITE   0x40000000 
#define OPEN_EXISTING   3 
#define FILE_ATTRIBUTE_NORMAL 0x00000080

function Main()

   local hComm := CreateFile( "COM1:",; // change the number as needed 
                              GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL )

   // baud=1200 parity=N data=8 stop=1
   MsgInfo( SetComm( hComm, 1200, .f., 8, 1 ) )

   CloseHandle( hComm )
   
return nil

#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>

HB_FUNC( SETCOMM )
{
   DCB dcb;
   
   GetCommState( ( HANDLE ) hb_parnl( 1 ), &dcb );
   
   dcb.BaudRate = hb_parnl( 2 );
   dcb.Parity = hb_parl( 3 );
   dcb.ByteSize = hb_parnl( 4 );
   dcb.StopBits = hb_parnl( 5 );
   
   hb_retl( SetCommState( ( HANDLE ) hb_parnl( 1 ), &dcb ) );
}

#pragma ENDDUMP   

Posted: Fri May 12, 2006 6:05 pm
by Raymond Fischbach
Many thanks Antonio,

I will try it tomorrow.

Best Regards

Posted: Wed May 17, 2006 9:56 am
by Raymond Fischbach
Hi Antonio,

I tried it and it works like a charm :D

Many thanks again.
Raymond