Forum: Mikrocontroller und Digitale Elektronik Probleme richtige Daten zu empfangen


von Relais (Gast)


Lesenswert?

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.

von Nick M. (Gast)


Lesenswert?

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.

von Relais (Gast)


Lesenswert?

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.

von Relais (Gast)


Lesenswert?

Wie war es gemeint, ohne print in hex ausgeben.

von Relais (Gast)


Lesenswert?

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()

von Nick M. (Gast)


Lesenswert?

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.

von Relais (Gast)


Lesenswert?

Danke hat gepasst

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
Noch kein Account? Hier anmelden.