python - Python:如何在 COM 端口上读取()直到指定字符串?
问题描述
我正在制作一个 Python 程序,用于使用 AT 命令自动设置调制解调器(知道那是什么并不重要)
我使用串行模块进行 COM 端口通信。
它的工作方式是我发送一个命令,然后我想“保存”响应,直到最后出现一个说“OK”的字符串。我试过这个:
import serial
ser = serial.Serial(port='COM15', baudrate=115200, timeout=3, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE)
intline =''
ser.write('AT+COPS?'+'\r\n') '''This specific commands asks for network status'''
while ser.inWaiting() >0:
intline += ser.read(1)
if 'Greentel' in intline:
print "Internet access"
else:
print "No internet access"
我的麻烦是有时我会收到多行回复。例如,对于此处使用的命令,我得到了响应:
"+UMWI: 0,4
+UMWI:0.5
AT+警察?
+COPS: 0,0,"Greentel",7
好的”
我真正想要的是创建一个函数,我可以调用它来阅读,直到它满足,将文本放在字符串/列表中,然后让我在其中搜索特定的单词。
解决方案
想我会发布我的解决方案,因为其他人在 Python 中使用 AT 命令的可能性很小。我所做的是创建一个函数,该函数读取输入并将其存储在字符串中,直到遇到所选的停止标志。我是这样设计的:
def read2sign(command, stopSign):
ser.flushInput()
temp = ''
ser.write(command +'\r\n')
while stopSign not in temp:
temp += ser.read(1)
print "---" '''For debugging purpose'''
print temp
print temp
return temp
我也有点想对过早发布表示抱歉。我想我只需要尝试更长的时间:-)
推荐阅读
- c++ - 为什么两个目标使用 cmake 以不同方式链接?
- react-native - null 不是对象(评估 RNReactNativeDocViewer.openDoc
- javascript - 由于浏览器中的长脚本运行错误,ajax 调用抛出不起作用
- javascript - Javascript增加和减少按钮为2、5和10的倍数
- android - Android Parcelable 不支持默认值 App Crash
- android - Cordova 发布内置 APK 无法在 Android 上安装
- drupal-7 - Drupal 7:自定义模块模板中的自定义表单
- git - 无法推送到 Heroku git
- r - R Shiny 模块不会在同一事件中响应式更新
- vue.js - Buefy 表未在 nuxt 项目中呈现