Hallo. Ich bräuchte bitte eure Hilfe. (mal wieder) Ich möchte per serieller Schnittstelle eine Sequenz an meine K8056 senden um ein Relais zu schalten (ganz einfach gehalten um zu testen und zu lernen) (Raspberry 3B+ und Python3) Die Anleitung wie diese Sequenz aufgebaut sein muss habe ich als link kopiert: https://www.velleman.eu/downloads/0/illustrated/illustrated_assembly_manual_k8056.pdf und die Programmzeilen hab ich aus meinem Python-Lehrbuch: ### import serial ser = serial.Serial("/dev/ttyUSB0", 2400, timeout = 10) ser.write(13, card adress, instruction, adress, checksum) ser.close() ### Adresse der Karte müsste 1 sein. Instruktion wäre S um das erste Relais einzuschalten Adresse wäre dann 1 für 1.Relais Wie schreibe ich das dann damit es auch richtig ankommt und wie bilde ich die "checksum"?
Stefanus F. schrieb: > Wenn man sich ganz dumm stellt, findet man sogar eine fix und fertige > Klasse in Python, die genau das umsetzt: > https://github.com/jerch/python-k8056 Wenn man sich noch dummer anstellt, fragt man zweimal das Selbe ohne sich die Antworten anzuschauen.
Dennis H. schrieb: > 5. checksum (2-complement of the sum of the 4 previous bytes + 1) Gelesen hab ich es auch schon aber ich verstehe es leider nicht.
Stefanus F. schrieb: > Wenn man sich noch dummer anstellt, fragt man zweimal das Selbe ohne > sich die Antworten anzuschauen. Ich hab mir die Antworten mehr als einmal abgesehn aber leider funktioniert es nicht. Deshalb versuche ich es jetzt so.
Matthias schrieb: > Gelesen hab ich es auch schon aber ich verstehe es leider nicht. Tja, dann musst du wohl den Quelltext benutzen oder abschreiben, den ich Dir auf dem Silbertablett präsentiert habe.
https://de.wikipedia.org/wiki/Zweierkomplement sum heißt Summe Vorzugsweise der 4 Bytes. um ein Hochgezählt. Und dann 2-er-Komplement
Der Python Code entspricht der Doku. Du solltest hier nicht verschweigen, dass du auch mit dem Programm von Vellemann keine Reaktion erreichen konntest. Wenn zwei völlig unterschiedliche Programme nicht funktionieren, sollte man mal in eine andere Richtung denken. Dann ist wohl etwas an der Hardware nicht in Ordnung. Hast du ein Oszilloskop oder einen Logic Analyzer? Wenn nicht, kaufe Dir einen, damit kann man das prima untersuchen. Kostet keine 10 Euro.
Sequenz: 13 1 'B' (66) 2 13+1+66+2=82 2-er-Komplement (82-1)xor 255=174 python-sample 243-2-66-1=174 Irgendwie kommt mir da das (+1) aus der PDF nicht vor. Die Velleman-Software sendet genau das gleiche wie oben berechnet. (+1) kommt da nicht vor.
:
Bearbeitet durch User
Es kommt vor wenn man mit 2er Kompliment rechnet. Bei Umstellung der Rechnung auf XOR verschwindet es.
Das Python Script sendet wie du die Kanalnummer binär. Die Nummer des Relais sendet es hingegen als Zeichen (n+48), also nicht 1 sondern '1'. Im Zweifelsfall könntest du unabhängig vom Algorithmus einfach mal alle 256 Möglichkeiten durchprobieren. Ich würde außerdem mal probieren, nach der Checksumme einen zusätzlichen Zeilenumbruch (13) zu senden. Ich würde mich allerdings erst mal auf das Programm von Vellemann konzentrieren. Vielleicht ist dein USB-UART Adapter irgendwie inkompatibel. Auf https://forum.vellemanprojects.eu/t/serial-cable-to-k8056/5727/5 und https://forum.classic-computing.de/forum/index.php?thread/8581-apple-c-f%C3%BCr-robotik-nutzen/ steht, dass der COM-Port COM1 oder COM2 heißen muss. Das kann man ja irgendwo in der Systemsteuerung beeinflussen (lang ist's her, dass ich das mal machen musste).
Stefanus F. schrieb: > steht, dass der COM-Port COM1 oder COM2 heißen muss. Diesen Fehler in der Software könnte man ja auch beheben, und dann auch dafür sorgen, daß Schnittstellen > COM9 mit der korrekten Syntax ("\\.\COMx" statt "COMx") angesprochen werden, wie es seit über einem Vierteljahrhundert in der Windows-API-Dokumentation steht. Kann natürlich sein, daß das der Python-Wrapper schon erledigt, aber den kenne ich nicht.
Stefanus F. schrieb: > Hast du ein Oszilloskop oder einen Logic Analyzer? Wenn nicht, kaufe Dir > einen, damit kann man das prima untersuchen. Kostet keine 10 Euro. Ich hab mir jetzt mal ein kleines oszilloskop besorgt. Auf dem Bild das Ergebnis wenn ich zwischen txd und gnd vom Adapter Messe. Messfehler oder kommt hier wirklich kein richtiges Signal an? Wenn ich das Programm starte kommen diese kurzen ausschläge aber mehr passiert da nicht.
Matthias schrieb: > Wenn ich das Programm starte kommen diese kurzen ausschläge aber mehr > passiert da nicht. So wie es aussieht, ist das Ding schlicht zu langsam. Ein Bit bei 2400 dauert gerade mal 400µs. Du hast da pro Pixel etwa 1ms...
Lothar M. schrieb: > So wie es aussieht, ist das Ding schlicht zu langsam. Ein Bit bei 2400 > dauert gerade mal 400µs. Du hast da pro Pixel etwa 1ms Zu dem Entschluss kam ich auch gerade. Da werd ich mir wohl ein anderes holen müssen.
Stefanus F. schrieb: > dass der COM-Port COM1 oder COM2 heißen muss. Es gibt bereits eine überarbeitete Version die auch andere com's erkennt. Wenn ich relais schalte in der vellemansoftware wird auch etwas über den Adapter gesendet. Ich kann zwar mit meinem langsamen oszi nicht sehen was gesendet wird aber es gibt bei jedem Klick eine Reaktion.
Matthias schrieb: > Es gibt bereits eine überarbeitete Version die auch > andere com's erkennt. > Ich kann zwar mit meinem langsamen oszi nicht > sehen was gesendet wird aber es gibt bei jedem Klick eine Reaktion. Na das ist doch schon mal eine wertvolle Information. Jetzt wäre wirklich interessant, das Signal in seiner ganzen Pracht zu sehen.
Matthias schrieb: > aber es gibt bei jedem Klick eine Reaktion. Stell doch einfach mal eine ganz langsame Baudrate ein, die das Ding können müsste. Und sende definierte Daten, wie z.B. ein 'U', das dir die Bitfolge 01010101 beschert. Denn so wie es aussieht, wird da nur ganz wenig oder ganz schnell gesendet.
Hab jetzt mal txd und rxd verbunden um auszulesen was da überhaupt gesendet wird. Auf dem Bild sieht man was dabei rauskommt. Wörter und Buchstaben kommen 1zu1 an aber aus dem befehlsarray wird so ein komisches 'ding'. Hat das schon mal jemand gesehen? Soll das so sein? Oder ist der Konverter überfordert?
Matthias schrieb: > aber aus dem befehlsarray wird so ein > komisches 'ding'. Logisch, weil das Binärdaten sind, kein Text. Das ist soweit in Ordnung. Ist Dir der Unterschied zwischen 1 und '1' klar? Hat etwas mit ASCII Code zu tun.
Das hilft mir dann bei der Fehlersuche schon mal weiter. Mit binärdaten und der ASCII Tabelle bin ich schon etwas vertraut aber das ausgelesene binärdaten als kraklige Vierecke im terminal erscheinen ist mir neu.
Matthias schrieb: > aber das ausgelesene > binärdaten als kraklige Vierecke im terminal erscheinen ist mir neu. Da verhält sich jedes Programm anders, dafür gibt es keine einheitliche Regelung. Du kannst Binärdaten recht gut mit dem Hammer Terminal darstellen. Überhaupt ist dieses Programm für solche Diagnose-Aufgaben meiner Meinung nach das Beste.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.