ラップトップを使用して複数のロボットを制御したい。ロボットには知能がなく、センサー値を計算して結果をロボットに送り返すPCにセンサー値を送信します(PCを使用したロボットの集中制御)。
ロボットは、Zigbeemuduleを使用したシリアル通信を介してPCと通信しています。
問題:{sen1、sen2、sen3 ..、robot id}のような(ロボットからの)構造を作成して送信する方法。ここで、sen1、sen2 ..はセンサー値であり、robotidは特定のロボットを認識します。編集後.....センサーの送信に使用していたコードは次のようになりました。
void TxData(unsigned char tx_data)
{ SBUF = tx_data; //Transmit data that is passed to this function
while(TI == 0); //wait while data is being transmitted
}
センサー値を1つずつ送信します
TxData(left_whiteline_sensor);
TI=0; // resetting transmit interrupt after each character
TxData(middle_whiteline_sensor);
TI=0;
TxData(right_whiteline_sensor);
TI=0;
TxData(front_sharp_sensor);
TI=0;
PC側で、バッファ内のこれらの値を読み取ります
read(fd, buf1, sizeof(buf1));
.....
options.c_cc[VMIN]=4; // wait till not getting 4 values
これは、ロボットが1つしかない場合は正常に機能していましたが、現在は複数のロボットがあり、各ロボットが上記の機能を使用してデータを送信しているため、PC側のすべてのロボットのセンサー値が混在しています。一つの解決策は、私が上で述べた構造を作り、それをPCに送ることです。これが私が聞きたいことです。「このような構造を作成して送信する方法」以前は質問を正しくフレーミングできなかったことをお詫びします。
ありがとう...