2016-08-30 1 views
0

Ich kommuniziere mit einer Stromversorgung über RS232. Ich kann kein Problem kommunizieren, wenn ich zum Beispiel an:Der Versuch, eine String-Variable in der seriellen zu verwenden. In Python schreiben

port.write("\x31") 

aber wenn stattdessen ich habe eine Zeichenfolge als eine Variable

teststring='"\\x31"'  

(was druckt als "\ x31")

und Ich versuche:

port.write(teststring) 

es sendet nicht den Befehl an die Versorgung. Ich habe versucht:

port.write(bytes(teststring,'utf-8')) 

und

port.write(teststring.encode('utf-8')) 

Aber es ist immer noch irgendwie nicht das gleiche wie das Senden nur den Text eingeben. Ich muss in der Lage sein, diese Variable zu ändern, also kann ich den Text nicht einfach einkodieren. Irgendwelche Hilfe wird geschätzt!

Kommentare unten unter Verwendung verwende ich nun eine ganze Zahl

testint = 31 und wenn ich drucke

chr (testint) I eine eine ungeradee Box mit 00 in der oberen Reihe und 1f in der GET Unterseite. Was ich jetzt tun muss, ist die 31 in 0x31 zu konvertieren, also kann ich chr (0x31) verwenden, was beim Drucken 1 ergibt. Hoffentlich wird der .write Befehl chr (0x31) genauso behandeln wie "\ x31"?

Antwort

0

teststring In Ihrem Beispiel entkommt der Backslash; Sie haben "\\x30" anstelle von "\x30". "\x30" ist eine Länge-1-Zeichenfolge, die das Byte 0x30 enthält; "\\x30" ist eine Zeichenfolge der Länge 4, die die Zeichen \, x, 3 und 0 enthält. Das Löschen des ersten Schrägstrichs in teststring sollte sich genau wie das Verwenden von port.write("\x30") verhalten.

+0

Wenn ich die Zeichenfolge erstellen, muss ich das Extra hinzufügen \ oder es gibt einen Fehler. Wenn ich Teststring auf den Bildschirm drucke, ist es nur "\ x30" – KBadgley

+0

Exakt; Wenn Sie es richtig machen, sollte es "0" (das ist 0x30 in ASCII) drucken. Welchen Fehler bekommst du? –

+0

Ich erstelle Teststring tatsächlich aus drei Strings. Einer, der so aussieht: '"\\ x' ', einer ist die Zahl und der letzte ist' ''. Wenn ich beim Erstellen der ersten Zeichenfolge die zweite \ abbringe, erhalte ich den Fehler "ungültige \ x-Escape". – KBadgley

Verwandte Themen