2016-04-23 101 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'嗎? –