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

MKS PR4000控制器RS232串口通信Python脚本无响应问题咨询

问题原因

  1. 缺少指令结束符:PR4000的RS232协议要求每条指令末尾必须附加回车符(\r,ASCII 0x0D)作为结束标识。你在超级终端输入指令后按下回车时会自动发送该字符,但现有Python代码仅发送了输入的指令内容,未附加结束符,控制器无法识别完整指令,因此不会返回响应。
  2. 其他潜在问题:
    • 读取逻辑鲁棒性不足,0.1s的等待时间可能不足以让控制器完成响应返回
    • 未匹配设备的流控设置,若超级终端开启了RTS/CTS硬件流控,pySerial默认关闭流控会导致通信失败

修正后的代码

import time
import serial

# 串口参数与超级终端配置完全保持一致
ser = serial.Serial(
    port='COM7',
    baudrate=9600,
    parity=serial.PARITY_ODD,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.SEVENBITS,
    # 若超级终端开启了硬件流控请取消下一行注释
    # rtscts=True
)

if ser.isOpen():
    print('串口已打开,输入指令后按回车发送,输入exit退出')

while True :
    data_in = input(">> ")
    if data_in == 'exit':
        ser.close()
        break
    else:
        # 指令末尾附加回车符,用ascii编码匹配7位数据位要求
        ser.write((data_in + '\r').encode('ascii'))
        out = b''
        # 延长等待时间,循环读取直到没有新数据
        time.sleep(0.3)
        while ser.inWaiting() > 0:
            out += ser.read(ser.inWaiting())
            time.sleep(0.1)
        if out:
            print(out.decode('ascii').strip())

验证步骤

  1. 先输入查询指令?RT测试,正常会返回远程模式状态
  2. 再输入RT,ON开启远程模式后,即可发送压力读取指令获取压力计数值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:57:02