Ich mache gerade meine ersten Erfahrungen mit Python, daher liegt mein Problem, von dem ich mir hier Hilfe erhoffe, sicher beim Anwender (also mir).
Ich habe den Auftrag bekommen ein kleines Programm zu schreiben, mit dem ein LED-Panel gesteuert werden kann. Weil dies später auf einem Raspberry Pi laufen soll, habe ich mich für Python als Programmiersprache entschieden (nur zur Info). Soweit so gut, alles was ich wollte konnte ich bisher auch verwirklichen.
Nun zu meinem Problem:
Diesem LED-Panel muss ich einen String zusenden, den ich im Code errechnen muss. Wenn ich Google und die Anleitung richtig verstehe, handelt es sich um den "absolute Value", also den vergleich aller Zeichen mit der Funktion: "Binäres exklusives Oder"...
Ich zitiere hier Kurz die Anleitung des LED-Panels:
Ich habe dies nun versucht, in Python abzubilden, natürlich mit einem "echten" String, den ich dann auch senden werde. Der meiner Meinung nach erfolgsversprechenste sieht folgendermassen aus:Checksum is 2 ASCII characters of one byte, which obtained by Xoring characters code of Data packet.
For Example:
Data Packet is '<L1><PA><FE><MA><WC><FE>welcome'
How to get checksum 0E?
Byte xorValue = 0
int len;
char *p = '<L1><PA><FE><MA><WC><FE>welcome';
len = strlen(p);
for (int i=0; i<len;i++)
xorValue ^= *p++
Result is xorValue = 0x0E
Code: Alles auswählen
a = "<L1><PA><F41><M42><W41><F41><A41><CA>Hallo zusammen, es funktioniert"
for i in range(0, len(a)):
b = operator.abs(int((bin(ord(a[i])))[2:])
print(b)
Leider kriege ich bei all meinen Versuchen (und dass sind inzwischen einige, ich sitze seit 3.5h an diesem Problem), werden Fehler ausgegeben. Beim oben stehenden Ansatz, ist der Fehler ein "SyntaxError" bei print(b)...ich hatte aber bereits alle möglichen Fehler, meistens hatten die irgend eine Convertierungs-Ursache.
Ich habe auch bereits versucht, die Binär-Werte mit dem Operator ^ in einer Schlaufe zu vergleichen. Leider auch ohne Erfolg.
Wer kann mir dabei bitte helfen. Was mache ich falsch?
Danke schon mal für die Hilfe.
Gruss Roland