前提・実現したいこと
arduinoでシリアルモニターに出した値をpythonに送り、decodeしたあと、その文字列が数字か調べるようにしたいと考えています。
数字の場合はTrueを返すようにしたいです。
しかしうまいこといきません。Arduinoのシリアル通信で送った文字列と数字はすべてFalseになってしまいます。
よい解決方法や新しいアイデアがありましたら教えて頂きたいです。
Arduinoのコード
void setup() { Serial.begin( 9600 ); } void loop() { Serial.println(12.3); Serial.println("ヘロー"); delay(1000); }
該当のソースコード
python
1import serial 2import re 3 4ser = serial.Serial('/dev/cu.usbmodem1421',9600,timeout=None) 5 6def float_or_int(s): 7 if re.match("^-?\d*.?\d+$", s) is None: 8 return False 9 else: 10 return True 11 12while True: 13 line = ser.readline() 14 str_line = line.decode("UTF-8") 15 print(float_or_int(str_line)) 16 17ser.close() # 一応 18
試したこと
pythonコードでstr_lineの部分に直接数字の文字列を書くとTrueを返します
私の考えではシリアル通信の文字列はダブルクォーテーションがないからできないのかな?と思います。
どうすれば.....
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください
回答1件
あなたの回答
tips
プレビュー