GOOGLE ADS

Dienstag, 26. April 2022

Senden Sie den Terminalbefehl über das pyserielle ASCII-Format

Ich möchte ein Python-Programm wie ein Terminal erstellen, um eine Anfrage mit Pyserial zu senden.

Aber wenn ich eine Anfrage wie "dataid 60000 get value" sende, zeigt es mir eine Fehlermeldung wie: TypeError: unicode strings are not supported, please encode to bytes: 'dataid 60000 get value'

Ich habe versucht,.encode zu verwenden, aber kein Ergebnis.

Siehe unten mein Code:

#Modules
from base64 import encode
import serial
port = "COM5"
baud = 115200
#Serial port configuration
com = serial.Serial(port, baud, timeout=1)
if com.isOpen():
print(com.name + ' is open...')
#Print output
while True:
cmd = input("Enter command or 'exit':")
if cmd == 'exit':
com.close()
exit()
else:
com.write(cmd)
out = com.read()
print('Receiving...'+out)

Danke im Voraus!:)


Lösung des Problems

Um Befehle über den seriellen/Konsolen-Port zu senden, verwenden Sie:
com.write(cmd.encode("utf-8")) oder
com.write(b"string")

Dadurch wird Ihre Eingabe in Bytes codiert.

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...