2016-04-23 11 views
2

私はPythonの初心者だと言って始めましょう。基本的に私は、シリアルデータの2行を読み取って、特定のフィールドについて1分ごとにポンピングし、その値を印刷するものを作成しようとしています。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)) '今はhexstringを持っていますが、シリアル回答の出発点はどこですか?シリアルデータをランダムに読み取ることはできません!すべての読書のための開始点と終了点(または時間のギャップ)が必要です(おそらくあなたのメッセージは答えられません(バッファオーバーフロー!))!最良の方法: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'を見ましたか? –