PySerial无法读取LoRa E5 Mini返回响应的问题排查
PySerial读取LoRa-E5 mini无响应修复方案
你的代码存在多个直接导致通信失败的问题,逐一修复即可正常读取数据:
- 端口配置错误:你标注设备实际连接在COM5,但代码里硬编码的端口是
COM4,端口不匹配根本无法和设备建立连接。 - 未设置读超时:PySerial默认初始化时
timeout=None,调用readline()会永久阻塞等待换行符,只要设备没有返回带\n结尾的数据,程序会直接卡死在读操作上,不会抛出任何异常。 - 发送的测试指令不符合设备协议:LoRa-E5 mini出厂默认使用AT指令集交互,所有有效指令必须以
\r\n(CR+LF)作为结尾,你发送的test既不是合法AT指令,也没有带协议要求的结束符,设备不会返回任何响应。 - 异常捕获逻辑错误:你使用了裸
except捕获所有类型的异常,还统一打印"Keyboard Interrupt",把端口连接失败、数据解码错误、格式转换错误全部和手动中断混为一谈,根本看不到实际报错原因,无法排查问题。 - 数据解析逻辑过于激进:你读取到数据后直接截断字节强制转换为float,只要设备返回非数字内容(比如AT响应的
+OK、LoRa接收报文前缀、报错信息),就会触发异常直接跳出循环,根本等不到有效数据。 - 缺少设备启动等待时间:USB转串口芯片在打开串口的瞬间会触发LoRa模块复位,模块上电启动需要数百毫秒,打开串口立刻发指令会直接丢失。
修复后的测试代码
先运行这段代码验证基础通信是否正常:
import serial import time print("串口测试启动") # 初始化串口,显式配置所有通信参数 ser = serial.Serial() ser.baudrate = 9600 # LoRa-E5出厂默认波特率为9600,如果你改过就换成实际值 ser.port = 'COM5' # 修正为设备实际连接的端口号 ser.timeout = 1 # 设置1秒读超时,避免读操作永久阻塞 ser.bytesize = serial.EIGHTBITS ser.parity = serial.PARITY_NONE ser.stopbits = serial.STOPBITS_ONE ser.open() print(f"串口打开状态: {ser.is_open}") time.sleep(0.5) # 等待模块复位完成,进入稳定工作状态 # 发送AT测试指令验证连通性,注意必须带\r\n结尾 ser.write(b"AT\r\n") print("已发送AT测试指令,等待设备响应...") time.sleep(0.2) while True: try: ser_bytes = ser.readline() # 超时没读到数据会返回空字节,直接跳过进入下一轮循环 if not ser_bytes: continue # 解码字符串,去掉首尾的换行、回车、空格,忽略无法解码的异常字节 recv_str = ser_bytes.decode("utf-8", errors="ignore").strip() print(f"收到串口数据: {recv_str}") # 如果你后续需要解析数值类数据,先判断字符串格式再转float,不要直接强转 # 示例逻辑: # if recv_str.replace('.', '', 1).lstrip('-').isdigit(): # sensor_val = float(recv_str) # print(f"解析到数值: {sensor_val}") except KeyboardInterrupt: print("\n检测到用户手动中断,退出程序") break except Exception as e: print(f"运行出错: {str(e)}") break ser.close() print("串口已关闭")
后续验证注意事项
- 运行代码前先打开Windows设备管理器,在「端口(COM和LPT)」分类下确认LoRa-E5对应的端口号确实是COM5,避免端口号被系统动态分配后记错。
- 运行上述代码如果通信正常,会收到LoRa-E5返回的
+OK字符串,证明串口链路完全正常。 - 如果你的需求是读取LoRa射频端收到的远端节点数据,不需要主动发送测试指令,保持循环读取即可——LoRa-E5收到射频数据后会主动通过串口上报
+RECV: <数据长度>,<原始数据>格式的报文,你再根据自己的传输协议解析对应字段就行。 - 如果运行后还是没有响应,先确认你没有修改过LoRa-E5的串口波特率,如果之前改过,把代码里的
baudrate参数改成你设置的实际值即可。
内容的提问来源于stack exchange,提问作者UltraScienceGuy
相关产品推荐
相关产品推荐

