Hallo ich habe eine 8fach Relaiskarte von Conrad. Ich versuche gerade sie mit Python anzusteuern. Die einzelnen Relais können eingeschaltet werden. Die Relaiskarte sollte mir aber eine Antwort schicken: 252-Adr.-x-XOR Ich empfange aber eine ganz andere Antwort. Ich habe dann versucht mit hterm die Relaiskarte mit dem Code 3113 zu schalten. Es funktioniert aber nicht. Das ist der Code: outval = value << number port = serial.Serial('/dev/ttyUSB'+str(i), 19200, timeout=1, xonxoff=0, rtscts=0) port.write('%c%c%c%c' % (chr(3), chr(1), chr(outval), chr(3^1^outval))) c=port.read(4) print c Wäre dankbar falls jemand einen Tipp hat wieso die Antwort von der Relaiskarte nicht richtig ausgelesen werden kann.
Relais schrieb: > wieso die Antwort von der > Relaiskarte nicht richtig ausgelesen werden kann. Was kommt denn raus? Mit print wirst du wohl nicht weiterkommen. Lass dir die Antwort mal in hex ausgeben, das dürfte leserlicher sein.
Mit Python habe ich mich noch nicht viel beschäftigt. Habe diese Zeilen geschrieben: c=port.read(4) hex(c) Es kommt aber ein TypeError.
Habe dieses Programm geschrieben. Es empfängt 0xfc aber bei der if-Bedingung kommt es immer in den else-Block
1 | outval = value << number |
2 | port = serial.Serial('/dev/ttyUSB1', 19200, timeout=1, xonxoff=0, rtscts=0) |
3 | print port.name |
4 | print(port.is_open) |
5 | port.write('%c%c%c%c' % (chr(3), chr(1), chr(outval), chr(3^1^outval))) |
6 | c=port.read(1) |
7 | print hex(ord(c)) |
8 | if c == 0xfc: |
9 | print('OK') |
10 | else: |
11 | print('falsch') |
12 | |
13 | port.close() |
Keine Ahnung von Python*), aber ich würde das versuchen: if ord(c) == 0xfc: *) Eine Sprache die Einrückungen als syntax betrachtet ist für mich kompletter Schwachsinn.
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.