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