如何用Python实现RPI 4与UWB传感器的minicom自动化操作?
可行,直接操作串口比自动化minicom更可靠
为什么不推荐自动化minicom?
用os.system调用minicom后,Python无法直接控制这个独立终端进程的交互流程,就算借助expect这类工具实现自动化,步骤也繁琐且不稳定。直接操作串口是更简洁高效的方案。
实现步骤
- 安装Python串口库
pip install pyserial
- 编写Python代码直接控制串口
以下代码完全模拟你手动操作的流程,可直接运行获取数据:
import serial import time # 配置串口参数,根据你的传感器实际参数调整 ser = serial.Serial( port='/dev/ttyACM0', # 注意你之前写的ttyAMC0大概率是笔误,用ls /dev/tty*可确认正确路径 baudrate=115200, # 替换为你的UWB传感器实际波特率 parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=1 ) try: # 1. 按两次回车键 ser.write(b'\r\n') time.sleep(0.1) ser.write(b'\r\n') time.sleep(0.1) # 2. 输入"nmt"并回车 ser.write(b'nmt\r\n') time.sleep(0.1) # 3. 按两次回车键 ser.write(b'\r\n') time.sleep(0.1) ser.write(b'\r\n') time.sleep(0.1) # 4. 输入"lec"并回车,开始获取数据 ser.write(b'lec\r\n') time.sleep(0.1) # 持续读取并打印传感器数据 print("开始获取传感器数据:") while True: if ser.in_waiting > 0: data = ser.readline().decode('utf-8').strip() print(data) # 可在此添加数据处理逻辑,比如保存到文件、解析计算等 except KeyboardInterrupt: print("\n停止读取数据") finally: ser.close()
关键注意事项
- 串口路径:用
ls /dev/tty*命令确认传感器的正确设备名,避免路径写错 - 波特率:必须和UWB传感器的配置完全一致,常见值为9600、115200
- 延时调整:
time.sleep()的时长可根据传感器响应速度微调,确保每一步操作完成后再执行下一步 - 权限问题:若提示权限不足,执行
sudo usermod -aG dialout $USER,重启树莓派后生效
内容的提问来源于stack exchange,提问作者Park Bo
相关产品推荐
相关产品推荐

