私はArduinoにいくつかのセンサーが付いています。私はXbeeプロS1であるXbeeを使って1台のリモートPCにセンサーデータを送信しています。 Xbeeモジュールは、38400ボーレートで機能します。私はワイヤレスで送信するために合計15個のセンサーデータと2個の時間情報を持っています。私のセンサが移動中のプラットフォーム上に置かれているため、回転中にデータパケットが失われ、時間情報付きセンサデータの完全なセットを受信側で受信することができません。Arduino + Xbeeのために複数の文字列を連結します
Iがこの
URT*364.00*348.00*432.00*350.00*427.00*357.00*0.22*0.18*0.81*1.00*0.73*-0.37* 0.15*-0.06*-0.19*6.00*17324.00
URT*364.00*348.00*432.00*349.00*428.00*357.00*0.22*0.18*0.81*1.00*0.73*-0.24* 0.16*-0.06*-0.19*8.00*2976.00
URT*361.00*345.00*428.00*345.00*424.00*353.00*0.22*0.18*0.81*1.00*0.73*-0.24* 0.16*-0.06*-0.19*9.00*53812.00
URT*363.00*347.00*430.00*349.00*427.00*356.00*0.23*0.18*0.81*1.00*0.61*-0.12* 0.15*-0.05*-0.19*11.00*39380.00
ように見える次のコードテンプレート
Serial.write('U'); Serial.write('R'); Serial.write('T');
Uint1.ival=rawX_ADXL337;
dtostrf(Uint1.ival,4, 2, dtostrfbuffer);
Serial.write("*");
Serial.write(dtostrfbuffer);
Uint1.ival=rawY_ADXL337;
dtostrf(Uint1.ival,4, 2, dtostrfbuffer);
Serial.write("*");
Serial.write(dtostrfbuffer);
Uint1.ival=rawZ_ADXL337;
dtostrf(Uint1.ival,4, 2, dtostrfbuffer);
Serial.write("*");
Serial.write(dtostrfbuffer);
Uint1.ival=rawX_ADXL377;
dtostrf(Uint1.ival,4, 2, dtostrfbuffer);
Serial.write("*");
Serial.write(dtostrfbuffer);
Uint1.ival=rawY_ADXL377;
dtostrf(Uint1.ival,4, 2, dtostrfbuffer);
Serial.write("*");
Serial.write(dtostrfbuffer);
Uint1.ival=rawZ_ADXL377;
dtostrf(Uint1.ival,4, 2, dtostrfbuffer);
Serial.write("*");
Serial.write(dtostrfbuffer);
//value after multiplication needed to be less than 2^15=32768
Uint1.ival=ax;
dtostrf(ax,4, 2, dtostrfbuffer);
Serial.write("*");
Serial.write(dtostrfbuffer);
Uint1.ival=ay;
dtostrf(ay,4, 2, dtostrfbuffer);
Serial.write("*");
Serial.write(dtostrfbuffer);
Uint1.ival=az;
dtostrf(az,4, 2, dtostrfbuffer);
Serial.write("*");
Serial.write(dtostrfbuffer);
Uint1.ival=gx;
dtostrf(Uint1.ival,4, 2, dtostrfbuffer);
Serial.write("*");
Serial.write(dtostrfbuffer);
Uint1.ival=gy;
dtostrf(gy,4, 2, dtostrfbuffer);
Serial.write("*");
Serial.write(dtostrfbuffer);
Uint1.ival=gz;
dtostrf(gz,4, 2, dtostrfbuffer);
Serial.write("*");
Serial.write(dtostrfbuffer);
Uint1.ival=mx;
dtostrf(mx,5, 2, dtostrfbuffer);
Serial.write("*");
Serial.write(dtostrfbuffer);
Uint1.ival=my;
dtostrf(my,4, 2, dtostrfbuffer);
Serial.write("*");
Serial.write(dtostrfbuffer);
Uint1.ival=mz;
dtostrf(mz,4, 2, dtostrfbuffer);
Serial.write("*");
Serial.write(dtostrfbuffer);
Uint1.ival=wHighNow;
dtostrf(Uint1.ival,4, 2, dtostrfbuffer);
Serial.write("*");
Serial.write(dtostrfbuffer);
Uint1.ival=wLowNow;
dtostrf(Uint1.ival,4, 2, dtostrfbuffer);
Serial.write("*");
Serial.write(dtostrfbuffer);
Serial.write("\n");
delay(100);
を有するIは、文字列形式に変換した(静的チャーdtostrfbuffer [15];)と個別に送信します。私は以下のリファレンス(ArduinoStringConcat)を使用してすべての情報を含む単一の文字列を形成しようとしていますが、できません。
すべてのセンサーデータを1つのテレグラムにまとめて送信するにはどうしたらいいですか?私の例では、いくつかのデモの例やコードスニペットを提供してください。
Xbee Pro s1がこの最終的な大きな電報を送ることは可能でしょうか?
おかげ
は「原因私のセンサーが回転中に、移動プラットフォーム上に配置されているという事実に、データ・パケットが失われている」、によるハードウェアに発生しています - あなたが示唆するように、センサーとデータ損失の間に必要な因果関係はありません。 – Olaf
混乱して申し訳ありません。私は、センサーが高速で回転しているのを発見しました。私はすべてのパケット(すべての感覚の塊)を取得しません。したがって、いくつかのpacketlosが発生しているか、アンテナが回転角によっては機能していないと思われます。 –
これはまだ変更されていないことを意味するものではありません(あなたのテキストが意味するものです)。とにかくあなたが何を求めているのかははっきりしない。私は、これがこのような質問をするのに最適な場所ではないかもしれないと考えています。電子機器のFAQをチェックしているのでしょうか? – Olaf