Hallo Allerseits,
ich habe mal eine Frage an die "Experten" hier...
Ich habe eine Mikrocontroller (uC) -gesteuerte LED-Leiste mit 14 LEDs.
Per Signal vom PC sollen die gesteuert werden. Die Hardware funktioniert soweit.
Damit das ganze Funktioniert, git es ein festgelegtes Übertragungsprotokoll für den uC.
Sieht wie folgt aus:
__________________________________________________ _______
|| Kommando(1 Byte) || Parameter(0..n Bytes) || CHK(1 Byte) ||
-----------------------------------------------------------------------------
-Das Kommando für die Funktion LEDs steuern ist 0x04
-Die Parameter für die jeweiligen LEDS sind:
Bit0: 1=LED1 an, 0=LED1 aus
Bit1: 1=LED2 an, 0=LED2 aus
Bit2: 1=LED3 an, 0=LED3 aus
...........bis ..-->
Bit6: 1=LED7 an, 0=LED7 aus
Bit7: nicht belegt
Bit8: 1=LED8 an, 0=LED8 aus
..........bis....-->
Bit14: 1=LED14 an, 0=LED14 aus
Bit15: nicht belegt
Als Antwort gibt der uC 1 Byte aus, mit 0x01=OK oder 0x00= Fehler
Die CHK wird gebildet aus = (Kommando+Parameter) xor 0xFF
Wie nun kann ich mir den zu sendenden String vorstellen? Habe schon einiges probiert, aber nix geht.
Ich habe es z.B. probiert mit
TComPort-Komponente)
comport1.writestr(#$4+#$FE+#$FE); //4 ist das Kommando LEDs an, FE entspricht dann 11111110 (jeweils alle 7 LEDs an)
Nur die Cheksumme würde in diesem Beispiel ja deutlich größer als 1 Byte werden ($4FE01)- wo ist mein Denkfehler?
Muss alles zusammen in einem String gesendet werden, oder muss das ganze aufgeteilt werden??
Hat irgendjemand Erfahrung mit ähnlichen Systemen?????