Att skicka binäre värden är i grunden enkelt - men inte speciellt intuitivt. Och det är en bitch att "sniffa" för att se om det kommer fram...
Därför använder jag ASCII (text) som dataöverföring.
Mitt projekt med labb-displayen (
http://elektronikforumet.com/forum/view ... =3&t=74522) använder just detta. När jag tryckar på endera av de 4 knappar kommer det en textsträng från displayen till vem-som-är-i-andra-ändan:
STX "00" "0" ETX
I hex:
0x02 0x30 0x30 0x03
Detta betyder, byte för byte:
* STX, start text. Rensar inputbuffern hos mottagaren.
* '0' MSB av adressen (max. 255 adresser möjliga).
* '0' LSB av adressen. Adressen är hexadecimal.
* '0' Knapp noll. De andra knappar ger '1', '2' hhv '3'.
* ETX, end text. Detta får mottagaren att fatta att nu är det slut på det roliga, börja jobba.
Om jag ändrar enhetens adress (är såklart ställbar mellan 0x00 och 0xFE då 0xFF är gruppkall) syns det såklart på adressbyten.
Om jag t.ex. skriver tillbaka till displayen:
Rad 1: " Intensitet: xxx% "
Rad 2: " Colour: xx "
kommer textsträngen som skickas att se ut som följer:
STX "00" 0x04 " Intensitet: xxx% " 0x05 " Colour: xx " ETX
Då utan citationstecken och mellanslag utanför citationstecken. Det blir ju bara en lång textsträng med ett par kontrolltecken inbäddad.
0x04 0xh 0x05 placerar cursorn på översta rad, första position hhv. understa rad, första position.
Så om ni ska överföra värden ska det vara något tecken som skiljer blocken ifrån varandra. Det kan vara CRLF eller annat, dock gillar jag CRLF då det med sniffning på ett terminalprogram blir så snyggt uppradat.