2016-04-23 43 views
2

我应该首先说我对Python很新。基本上,我正在尝试制作一些能够读取几行串行数据的内容,这些数据会在特定字段的每分钟内获取,然后打印出该值。python搜索串行数据输入

我后面的部分数据是QNH字段。

QNH:1013.9 

我正在通过re库命令阅读,但它是所有与搜索命令的选项混淆。

所以我现在所在如下:

serial_line = ser.read(500) 
qnhvalue = re.search(?I don't know what to put in here?, serial_line) 

print(qnhvalue) 
+0

我应该使用匹配而不是搜索吗? – jibs

+0

串口查询的答案是字节数组,'import binascii; data = binascii.hexlify(ser.read(500))'现在你得到了十六进制串,但你的串行答案的起点在哪里?你不能随机读取串行数据!每个阅读需要开始和结束点(或时间间隔)(也许你的消息不在回答中(缓冲区溢出!))!最好的方法:1)清除缓冲区2)发送查询3)阅读答案4)关闭串行。 – dsgdfg

回答

0

PySerial其实是相当简单的。 ser.read(500)最多可以读取500个字节。然后,您需要将您的串行输入分成一系列值。如果您的分隔符是\n,您可以使用ser.readline()

就正则表达式而言,我甚至会推荐简单地使用简单的拆分命令input.split("QNH:",1)[1]。否则,您也可以使用(?:QNH:).*

http://pyserial.readthedocs.org/en/latest/shortintro.html

+0

输入上没有EOL。将串行输入分成一系列值是什么意思?我不能只搜索字符串? – jibs

+0

可能连接到缓冲区。你看过'io.TextIOWrapper'吗? –