前提・実現したいこと
ラズパイから複数のデータをシリアル通信によってPCへ送信したいが、下記のような問題が生じています。
コードのどの部分に不都合があるのかわかりません。
発生している問題・エラーメッセージ
ラズパイ側、PC側のそれぞれで各コードを実行すると、一つ目の”105”しかPCに転送されない。(”107”の値がPC側で出力されない)
該当のソースコード
Python3
1 2ラズパイ側 3# -*- coding: utf-8 -*- 4import serial 5 6# 文字列をシリアル送信 \n区切りで 7def stamp_to_pc(stamp_string="hello"): 8 port = serial.Serial( 9 port = "/dev/ttyS0", 10 baudrate=115200, 11 parity = serial.PARITY_NONE, 12 stopbits = serial.STOPBITS_ONE, 13 bytesize = serial.EIGHTBITS, 14 timeout = 0 15 ) 16 print(stamp_string) 17 stamp_string = stamp_string + "\n" 18 stamp_bytes = stamp_string.encode('utf-8') #文字列をバイト型に変換 19 print(stamp_bytes) 20 21 port.write(stamp_bytes) 22 port.close() 23 24height_size = 105 #この値をPCに送りたい 25width_size = 107 #この値をPCに送りたい 26 27height_stamp_string = str(height_size) 28stamp_to_pc(height_stamp_string) 29width_stamp_string = str(width_size) 30stamp_to_pc(width_stamp_string) 31 32 33PC側 34# -*- coding: utf-8 -*- 35import serial 36 37# 文字列をシリアル受信 \n区切りで 38def stamp_receive(): 39 ser = serial.Serial( 40 port = "COM6", 41 baudrate=115200, 42 parity = serial.PARITY_NONE, 43 stopbits = serial.STOPBITS_ONE, 44 bytesize = serial.EIGHTBITS, 45 timeout = None 46 ) 47 stamp_bytes = ser.readline() #\nまで受信 48 stamp_str = stamp_bytes.rstrip().decode("UTF-8") #バイト型を文字列変数に変換 49 50 ser.close() 51 return stamp_str 52 53height_size_str = stamp_receive() 54height_size = int(height_size_str) 55print(height_size) 56 57width_size_str = stamp_receive() 58width_size = int(width_size_str) 59print(width_size) 60
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/07 21:45
2018/09/08 04:39
2018/09/09 07:03
2018/09/09 12:48
2018/09/11 21:05
2018/09/11 22:43