1. 移远RM500 AT指令串口读取

该Python脚本用于每隔1秒读取Quectel模块的信号状态,通过串口通信。当串口丢失时,程序不会报错,而是记录异常信息到txt文档。脚本首先初始化串口,寻找特定命名的Quectel串口,然后发送AT+QENG命令获取服务小区信息,并将结果保存到文本文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

  1. 每隔1s读取信号状态
  2. 中途串口丢失,不会程序报错
  3. log信息保存txt文档

import serial
import serial.tools.list_ports
import time
from datetime import datetime

#程序初始化
time_start =  datetime.now()
time_step = 1
f = open('rm500_qeng.txt','w')
CMD1 = 'AT+QENG="servingcell"\r\n'

#读取串口信息
Port_at = ["AT","DM","NMEA"]
plist = list(serial.tools.list_ports.comports())
if len(plist) == 0:
    print("无可用的串口")
else:
    for i in range(0,len(plist)):
        #print(plist[i].name,":",plist[i])
        if "Quectel USB AT Port" in str(plist[i]):
            Port_at[0] = str(plist[i].name)
            print("找到AT串口 = ", plist[i].name)
        if "Quectel USB DM Port" in str(plist[i]):
            Port_at[1] = str(plist[i].name)
            print("找到DM串口 = ", plist[i].name)
        if "Quectel USB NMEA Port" in str(plist[i]):
            Port_at[2] = str(plist[i].name)
            print("找到NMEA串口 = ", plist[i].name)

#串口初始化
ser_at = serial.Serial(str(Port_at[0]),115200,timeout=0.1)
ser_at.write("AT+CFUN = 0 \r\n".encode())
time.sleep(1)
ser_at.write("AT+CFUN = 1 \r\n".encode())
time.sleep(1)

#循环写命令和读数据
while True:
    time_interval = datetime.now() - time_start
    try:
        tmp_str = ser_at.readline().decode('utf-8').rstrip()
        # 写命令:
        if time_interval >= time_step:
            ser_at.write(CMD1.encode())
            #print("成功发送命令: ",CMD1.replace("\r\n",""))
            time_start = datetime.now()
        # 读数据
        if len(tmp_str) > 4 and "+QENG: " in tmp_str :
            print(tmp_str)
            f = open('rm500_qeng.txt','a')
            f.write(tmp_str + "\n")
            f.close()
    except serial.serialutil.SerialException:  
        print("serial.serialutil.SerialException, 检查USB线是否松动!")
        time.sleep(1)
  

time_interval.total_seconds() 将时间差转化为s。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值