Tip of the Month (December 2009)
Sending Binary Data Over a COM Port
In a macro, Visual CE allows you to open a COM port (Communicate | Open)
and send a text (Communicate | Send). But what if you want to send
binary information? It can be done, but it is a little tricky.
Normally we send characters. So, if you specify the character string
A B C
then Visual CE will send the ASCII equivalent of
0x41 0x42 0x43
We do not send the zero terminator.
Visual CE has a @char function, so if you send
@char(65)
then
0x41
gets sent (hexadecimal 0x41 is the same as decimal 65).
Sending a byte of zero could be a problem (since 0x00 is the terminator for character
strings). To accomodate this, we made a special case for when you send just
@char(0)
If this is the entire expression specified in the Communicate | Send, then we will send a
byte of zeros.
So, lets say you wanted to transmit
0x41430013
You can do this by doing Communicate | Send three times. The first would send
@char(65) & @char(67)
the second would send
@char(0)
and the third would send
@char(19)
(you couldn't just send @char(65) & @char(67) & @char(0) & @char(19) since the @char(0)
has to be in a Communicate | Send all by itself in order to send the byte of zeros).
Previous Tips of the Month