#1
|
|||
|
|||
Writing 4 bytes to COM Port
Hello all,
I have a device that has 8 switches (relay). This device has controller which is linked to COM Port. In order to manipulate switches first the device needs to be intialized with 4 bytes: 1 1 0 and the fourth is XOR of these first three, (0). So I need to send 1 1 0 0 in order to intialize this device. I've tried to open com port and write this as characthers: "00000001 00000001 00000000 00000000" - (no space between) There is also some kind of driver, a monitor tool that monitors traffic between PC and the device. This monitor after sending above string says that only 2 bytes are sent. The device will not respond until 4 bytes are sent. Does anybody have any clues that can be useful? I've searched everywhere but nothing to solve it, so I am trying my luck here Thanks in advance, asmith [added]: tried with c and yes it is char type Last edited by AgentSmith; 04-06-2005 at 23:33. |
#2
|
|||
|
|||
What you mean by writing as characters? Do you mean C data type character, then make sure that you are not using string API
Visu Last edited by visu; 04-06-2005 at 22:51. |
#3
|
|||
|
|||
Hi,
You must make own program with following windows API func. CreateFile(), SetCommTimeouts, SetCommMask, GetCommState, BuildCommDCB and finaly WriteFile to send data |
#4
|
|||
|
|||
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 ... |
Thread Tools | |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
int3 and stolen bytes ! | Newbie_Cracker | General Discussion | 4 | 03-14-2007 16:48 |
ASProtect 1.22 - 1.23 Beta 21 stolen bytes? | Crassy | General Discussion | 1 | 05-22-2004 22:34 |
Damaged stolen bytes | *RemedY* | General Discussion | 9 | 05-22-2004 16:58 |
DVDRegionFree 3.25 Stolen bytes | MaRKuS-DJM | General Discussion | 2 | 01-05-2004 00:23 |
22 stolen bytes? | SvensK | General Discussion | 2 | 11-06-2003 17:13 |