前提・実現したいこと
Arduinoを用いて複数(5個)のシリアルデータを収集して、Pythonプログラムを用いてそれぞれ複数(5個)のグラフを出力させます。
Ardunioから入ってくるブランクデータを無視するプログラムを教えてもらいたいです。
発生している問題・エラーメッセージ
Arduinoから入ってくるシリアルデータにブランクデータが挿入されており、そのデータが無視できずにシリアルデータがブランクデータ挿入される度に一つずつデータがずれていきます。結果的に出力グラフも5個のデータを正確に表示できません。
b'0.59\r\n' b'0.63\r\n' b'26.18\r\n' b'61.88\r\n' b'1028\r\n' b'0.59\r\n' b'0.66\r\n' b'26.20\r\n' b'61.87\r\n' b'1028\r\n' b'' ←ブランクデータ b'0.58\r\n' b'0.66\r\n' b'26.17\r\n' b'61.91\r\n' b'1029\r\n' b'' ←ブランクデータ b'0.57\r\n' b'0.65\r\n' b'26.20\r\n' b'61.99\r\n' b'1029\r\n'
該当のソースコード
import serial """ シリアルポート設定 """ ser = serial.Serial('COM3', 115200, timeout=1) """ データ取り込み """ while True: data1 = ser.readline() data2 = ser.readline() data3 = ser.readline() data4 = ser.readline() data5 = ser.readline() if data1 != b'\r\n'and data1 != b'' and data1 != b'Config_Reg : \r\n' and data1 !=b'6E\r\n': data12 = bytes.decode(data1, encoding = "utf-8", errors = "strict") data13 = float(data12.strip("\r\n")) if data2 != b'\r\n'and data2 != b'' and data2 != b'Config_Reg : \r\n' and data2 !=b'6E\r\n': data22 = bytes.decode(data2, encoding = "utf-8", errors = "strict") data23 = float(data22.strip("\r\n")) if data3 != b'\r\n'and data3 != b'' and data3 != b'Config_Reg : \r\n' and data3 !=b'6E\r\n': data32 = bytes.decode(data3, encoding = "utf-8", errors = "strict") data33 = float(data32.strip("\r\n")) if data4 != b'\r\n'and data4 !=b'' and data4 != b'Config_Reg : \r\n' and data4 !=b'6E\r\n': data42 = bytes.decode(data4, encoding = "utf-8", errors = "strict") data43 = float(data42.strip("\r\n")) if data5 != b'\r\n'and data5 !=b'' and data5 != b'Config_Reg : \r\n' and data5 !=b'6E\r\n': data52 = bytes.decode(data5, encoding = "utf-8", errors = "strict") data53 = float(data52.strip("\r\n")) print(data1) print(data2) print(data3) print(data4) print(data5)
試したこと
Arduino側を調べてみましたが、ブランクデータが出る理由がわかりませんでした。
補足情報(FW/ツールのバージョンなど)
Visual Studio Code
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/12 00:03