Ich bin neu bei der Verwendung von Python3 für die Datenerfassung. Ich versuche einen Weg zu finden, um binäre Daten von einem seriellen Port unter Linux zu analysieren.On-the-Fly-Analyse von binären seriellen Daten in Python
import serial
ser = serial.Serial(
port='/dev/ttyS0',
baudrate = 9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1)
counter = 0
while 1:
x = ser.read(31)
print (x)
Das gibt mir eine Zeichenfolge, die ich nicht sicher über das Format von bin:
x='\x00\x00\x91\x00\x02\x88BM\x00\x1c\x00\x00\x00\x01\x00\x01\x00\x00\x00\x01\x00\x01\x00\xe1\x00K\x00\x1a\x00\x02\x00\x00'
mit
x.encode('hex')
eine Reihe von Hex gibt Werte
x='000091000288**424d**001c00000001000100000001000100e1004b001a00020000'
wo 0x42
ist das Ende von mir ssage und 0x4d
ist der Beginn der Nachricht.
ich es in eine Basis-10-Liste konvertieren kann mit
y = map(ord,x)
print(y)
Dann habe ich eine Möglichkeit, die Nachricht über die Indizes neu zu ordnen, aber sicher gibt es eine sauberere Art und Weise? Wie erstelle ich eine Liste, die bei 0x4d
beginnt, mit zu analysieren?
Hallo, habe ich versucht, diese erste, wenn man sich die codierten Hex-String aussehen 0x4D gibt es aber in der ersten Ausdruck mit \ x88BM ersetzt wurde, die ich enthält 0x88 nehmen, sondern fassen, wie fusionierte 0x42 und 0x4D mit BM. – josh
'\ x88BM' ist drei separate Bytes. 0x88 (\ x88), 0x42 (B) & 0x4d (M) –
ok, das macht Sinn, also müsste man im hex Code zuerst hexen? Wie machst du das, um eine Hex-Liste zu bekommen? – josh