peinkid 2018-12-19 15:33 采纳率: 0%
浏览 2520

pyserial 如何传输十六进制数据?(python3)

import serial

ser = serial.Serial('COM3',9600,timeout=0.5)
li = "\x55\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\x03\xFD\xD4\x14\x01\x17\x00"
data = bytes(li,'utf-8')
ser.write(data)
n=ser.inWaiting()                          
if n: 
    data= str(binascii.b2a_hex(ser.read(n)))[2:-1]        
    print(data)                         
time.sleep(1)

请问如何发送data数据至NFC开发板PN532,上述代码的\X55会自行转换成"U",是等价的吗,发送这个data数据是它的唤醒命令,但并没有回应
  • 写回答

1条回答 默认 最新

  • 禾戊之昂 Python领域新星创作者 2024-04-07 13:17
    关注

    发送十六进制数据
    在Python中,你可以直接使用字节(bytes)对象来发送十六进制数据。你的li变量已经是一个十六进制数据的列表,但是当你使用bytes(li, 'utf-8')时,你试图将这个列表当作UTF-8编码的字符串来转换,这是不正确的。你应该直接创建一个bytes对象,如下所示:

    li = b"\x55\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\x03\xFD\xD4\x14\x01\x17\x00"  
    ser.write(li)
    

    注意,这里我们在字符串前加了一个b,表示这是一个bytes字面量。这样,Python就会按照你提供的十六进制值来创建bytes对象,而不是尝试将其解释为一个UTF-8编码的字符串。

    评论

报告相同问题?

悬赏问题

  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容