View Single Post
  #4  
Old 04-08-2005, 01:25
dedificator dedificator is offline
Friend
 
Join Date: Oct 2002
Posts: 89
Rept. Given: 4
Rept. Rcvd 16 Times in 6 Posts
Thanks Given: 0
Thanks Rcvd at 4 Times in 4 Posts
dedificator Reputation: 17
If you must only to write these 4 bytes to COMx, this can be done as synchronous write (no need for timeouts e.t.c).
In MS SDK (section WIN32 development, Communications) are some samples in C++ - do needed modifications, build and try. Search MSDN for this.
Requierad parts are:
Create file "COM1" with expected attributes - without Overlapped in sync. op. case,
DCB modification (speed, parity ...) - GetCommState,SetCommState,
Write data to created file,
Close handle.
Output data must be formatted as byte array.

In your case, you can pass pointer to int (0x0101) variable, length =4 as data buffer for WriteFile.

DWORD l = 0; //return value for really sent bytes
DWORD buf = 0x101; // data block 01, 01, 00, 00
WriteFile(hCom, &buf, 4, &l, NULL); //send buffer to opened COM port

or, if response isn't expected
for (int i=3; i>=0; i--) TransmitCommChar(hCom, (BYTE) (i>>1));
this function works very well for comm init strings sending w/o response.

If you must handle some incoming packets too, better would be use async. operations mode with multithreading, else this all can hang up while waiting response ...
Reply With Quote