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

Python串口无法正常发数据但Termite终端可行,求排查方案

串口命令发送异常排查:Python发送无效但Termite正常

作为大型应用的一部分,我需要从PC向设备发送串口命令,但Python始终无法正确发送数据,相同命令用Termite终端发送却完全正常,已经排查多日仍没找到原因。

已排除的问题点

  • 串口配置错误:已确认波特率、数据位、奇偶校验、停止位与Termite完全一致(这些也是串口默认设置)
  • 命令正确性与终止符:Termite中需追加CRLF作为终止符,Python里也在命令末尾添加了\r\n;经示波器和串口监视器验证,两者发送的命令(包括终止符)完全一致,无丢位情况
  • 首次发送干扰问题:尝试在每条命令前添加\r\n(设备要求的命令终止符),认为可能存在垃圾数据干扰,但无效
  • 输入缓冲区问题:考虑到不读取响应可能引发异常,即使设备无有效反馈,每次发送前都会读取所有可用字节清空缓冲区,无效果
  • 端口状态问题:确认Windows未关闭端口,当前无报错,且串口监视器显示端口可正常读写

代码片段

以下是串口配置与命令发送的代码片段:

try:
    self.SPC = serial.Serial(port=connectionData.get("spc_com"), baudrate=115200, timeout=1)
except serial.SerialException as err:
    print(f'SPC Serial Error: {err.strerror}')
    return False

def SPCCommand(self, command: str):
    if not command:
        return

    try:
        self.readAndClearBuffer()
        self.SPC.write(command.encode())
    except serial.SerialException as err:
        print(f'SPC Serial Error: {err.strerror}')
        return

def readAndClearBuffer(self):
    data = ''

    while True:
        try:
            data = self.SPC.read(1024)

            if not data:
                return

            print(data)
        except serial.SerialException as err:
            return

self.SPCCommand("\r\n8000011200000000")

示波器和串口监视器都显示发送的命令完全一致,我已经没有其他排查思路了,请问还存在哪些可能的问题?有什么其他排查方向?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:36:17