You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pySerial串口通信问题:树莓派控制伺服驱动器无响应求助

解决伺服驱动器串口无响应的思路

核心问题排查:字节发送格式错误

你在SerialTool Pro中发送的011001101AF24AD5是十六进制指令,工具会自动将其解析为对应的二进制字节发送(比如01对应字节0x01);但你用ser.write(b'011001101AF24AD5')发送的是ASCII字符的字节流(比如'0'对应0x30,'1'对应0x31),这和伺服预期的指令格式完全不符,这是最可能的原因。

修正代码:

# 将十六进制字符串转换为字节数组后发送
cmd_hex = '011001101AF24AD5'
ser.write(bytes.fromhex(cmd_hex))

其他排查方向

  • 严格匹配串口参数:确保树莓派pySerial的配置(波特率、数据位、停止位、奇偶校验)和Win10上SerialTool Pro的设置完全一致。示例配置(根据实际参数调整):
    ser = serial.Serial(
        port='/dev/ttyUSB0',
        baudrate=9600,
        parity=serial.PARITY_NONE,
        stopbits=serial.STOPBITS_1,
        bytesize=serial.EIGHTBITS,
        timeout=1
    )
    
  • 检查硬件接线:确认Waveshare模块的Tx/Rx引脚和伺服驱动器的对应引脚没有接反(Tx接伺服Rx,Rx接伺服Tx);同时确认模块的电平标准(RS232)和伺服的串口电平匹配。
  • 优化接收逻辑:伺服驱动器可能不会发送换行符,readline()会因等待换行而阻塞。改用以下方式读取:
    time.sleep(1)  # 延长等待时间,确保伺服返回数据
    rx_data = ser.read_all()  # 读取所有缓存数据
    print("read data: ", rx_data.hex())  # 以十六进制打印,方便查看
    
  • 验证串口连通性:在树莓派上用minicom或screen等工具手动发送十六进制指令,确认伺服是否响应,排除硬件或系统层面的问题;也可以将模块接回Win10,用pySerial发送转换后的字节,验证代码逻辑正确性。

内容的提问来源于stack exchange,提问作者James Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 19:16:07