I am trying to write a very simple program to output a serial string including hex codes when I press a button. It works fine if the string does not include 0x00, but if it does this is treated as 'end of string' and does not output.
printf ("\x01\x02\x00\x03\x04")
SBUF =0x01 SBUF =0x02 SBUF =0x00 SBUF =0x03 SBUF =0x04
"Remember that string is just a convenient contraction of null terminated string and you will not fall into the same trap again." However, if you try sending this down an RS232 link, you could fall into another trap: ASCII codes below 0x20 are control codes; eg 0x0D is Carriage Return; 0x0A is Line Feed; 0x13 is XOFF; 0x11 is XON. If you need to send pure binary data down an RS232 link, you need to check very carefully that the entire link supports it - an won't go interpreting some of your data as control codes! This is why we have things like Intel Hex, Motorola S-Records, MIME, etc for sending binary data...