求助:如何解码Genius 7纸币接收器RS232输出的二进制数据?
求助:解码Genius 7纸币接收器的RS232数据
以下是从设备获取的原始字节数据:
b'\x00\x00\x00\xf9Y^^,d,\x00\x00\x00' b'\x00\x00\x00Ydd,\x89,\x00\x00\x00' b'\x00\x00\x00\xf9Y^\x92,^,\x00\x00\x00' b'\x00\x00\x00\xf9Ydd,\x89,\x00\x00\x00' b'\x00\x00\x00z\x97\x89,\x89,\x00\x00\x00'
场景说明
这些数据来自Genius 7纸币接收器,我通过RS232将其连接到树莓派,用于开发家庭迷你售货机。目前已成功获取数据,但无法解码。测试时插入的是20泰铢纸币,数据中应该包含金额“20”的相关信息,但设备手册只有接线说明,没有数据协议相关内容,已经卡了4天,急需帮助。
Python代码
import serial import struct import chardet if __name__ == '__main__': ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1) ser.reset_input_buffer() while True: if ser.in_waiting > 0: line0 = ser.readline() line1 = line0.replace(b'\x00', b'') line2 = line1.decode("cp1252") #line3 = line1.decode("utf-16le") result = chardet.detect(line0) print(line0) #print(line1) print(line2) #print(line3) print(result)
已尝试的解码结果
我用chardet检测编码,结果多显示为Windows-1252,但解码后内容无意义;尝试utf-16le也无效,以下是部分输出:
b'\x00\x00\x00\x11\x97d\x89,\x89,\x00\x00\x00' —d‰,‰, {'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''} b'\x00\x00\x00\xf9Ydd,d,\x00\x00\x00' ùYdd,d, {'encoding': 'ISO-8859-9', 'confidence': 0.4122478846530419, 'language': 'Turkish'} b'\x00\x00\x00\x11Yd\x89,\x89,\x00\x00\x00' Yd‰,‰, {'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''} b'\x00\x00\x00\xf9\x97d/\xec,^,\x00\x00\x00' ù—d/ì,^, {'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''} b'\x00\x00\x00\x11Ydd,^,\x00\x00\x00' Ydd,^, {'encoding': 'ascii', 'confidence': 1.0, 'language': ''} b'\x00\x00\x00\x11\xdfd/^,d,\x00\x00\x00' ßd/^,d, {'encoding': 'ISO-8859-1', 'confidence': 0.73, 'language': ''} b'\x00\x00\x00\x11Y^d,^,\x00\x00\x00' Y^d,^, {'encoding': 'ascii', 'confidence': 1.0, 'language': ''} b'\x00\x00\x00\xf9\x97d/d,d,\x00\x00\x00' ù—d/d,d, {'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''} b'\x00\x00\x00\x11\x97d/d|^,\x00\x00\x00' —d/d|^, {'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''} b'\x00\x00\x00\x11Y^d,^,\x00\x00\x00' Y^d,^, {'encoding': 'ascii', 'confidence': 1.0, 'language': ''} b'\x00\x00\x00\xf9\x97\x89,\x89\x9c\x00\x00\x00' ù—‰,‰œ {'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''} b'\x00\x00\x00\xf9\x97\x89,\x89\x9c\x00\x00\x00' ù—‰,‰œ {'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''} b'\x00\x00\x00\xf9Y\x89,\x89\xc9\x00\x00\x00' ùY‰,‰É {'encoding': None, 'confidence': 0.0, 'language': None} b'\x00\x00\x00\x11\x97\x89,\x89\x9c\x00\x00\x00' —‰,‰œ {'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''}
内容的提问来源于stack exchange,提问作者Family is Famly
相关产品推荐
相关产品推荐

