[ハードウェア]
シリアル通信は、3本のケーブル(Send,Receive,GND)を使った1対1の通信です。
PCと2台のArduino(AとB)を接続するには、PCに二つのシリアルモジュール(仮に'/dev/rfcomm0'と'/dev/rfcomm1'と呼びます)を接続して、'/dev/rfcomm0'とArduino Aをシリアルケーブルでつなぎ、'/dev/rfcomm1'とArduino Bをシリアルケーブルでつないでください。
[ソフトウェア]
readline()を使ってデータが取得できているという事は、Arduinoからは'\n'で終端を表した文字列が送られてくるのだと思います。
シリアル通信でデータが送られてきたかどうかは、serial.available()で判断できます。
データが届いたら、次の区切り文字('\n')までをserial.readline()をつかって読み出します。
シリアル通信が2つありますから
・Arduino Aからデータが届いていたら、データをserA.readline()で読み出して、printで表示する。
・Arduino Bからデータが届いていたら、データをserB.readline()で読み出して、printで表示する。
を繰り返します。
コードは、以下のような感じになるでしょう。
import serial
// 2つのシリアル通信
serA = serial.Serial('/dev/rfcomm0',9600,timeout=None)
serB = serial.Serial('/dev/rfcomm1',9600,timeout=None)
while True:
if serA.available() // ArduinoAからデータが届いていたら
line = serA.readline() // '\n'までの文字列を読み出す
print('From A: ' + line) //Arduino Aから届いたデータであることが分るように、先頭に文字を追加して、データをプリント
elif serB.availabe() // ArduinoBからデータが届いていたら
line = serB.readline() // '\n'までの文字列を読み出す
print('From B: ' + line) //Arduino Bから届いたデータであることが分るように、先頭に文字を追加して、データをプリント
ser.clone()
<補足>
Arduinoから「データの送信を終わります」という合図(例えば'END'という文字列が送られてくる)が届いたら、シリアル通信をcloseします。
(どのようにしてArduinoとPCの間でやり取りするのか(Protocol)を定めると、いろんなことができるようになります)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。