我有RFID阅读器。物理接口与RS - 232规范兼容。1个起始位,8个数据位,1个停止位,无奇偶校验。下面是我用来运行阅读器和阅读超高频RFID标签的代码
import serial
ser = serial.Serial(port='COM8', baudrate=115200, timeout=0.01)
ba_antenna_set_1 = b'\xA0\x04\x01\x74\x00\xE7'
ba_antenna_set_2 = b'\xA0\x04\x01\x74\x10\xD7'
ba_inventory = b'\xA0\x04\x01\x89\x01\xD1'
ser.write(ba_antenna_set_1);
ser.write(ba_antenna_set_2);
while True:
ser.write(ba_inventory);
if ser.in_waiting > 0:
data = ser.readline()
print(data)
当我运行这段代码时,我得到这样的输出:
b'\xa0\x04\x01t\x10\xd7'b'\xa0\x13\x01\x89t0\x000\x083\xb2\xdd\xd9\x01@\x00\x00\x00M\xbe' b'\xa0\n'b'\x01\x89\x00\x00\x10\x00\x00\x01\xbb' b'\xa0\x13\x01\x89\x040\x00\x00\x083\xb2\xdd\xd9\x01@\x00\x00\x00\x00N
我希望我的输出如下,我需要这方面的帮助
'A0 04 01 74 00 E7' 'A0 04 01 74 10 D7' 'A0 04 01 89 01 D1' 'A0 13 01 89 24 30 00 30 08 33 B2 DD D9 01 40 00 00 00 00 50 0B' 'A0 0A 01 89 00 00 11 00 00 00 01 BA'
2条答案
按热度按时间eeq64g8w1#
data=ser.readline()
返回一个bytes
数组,因此您希望将其转换为十六进制字符串。有一个内置的方法,.hex()
,它返回一个十六进制字符串,默认情况下没有空格,但你可以指定一个空格,你可以使用.upper()
将a-f字符转换为大写。y1aodyip2#
试试这个: