フィルタリングしたい大量のデータを出力する Arduino に接続された GPS ユニットがあります。
出力のスニペットを次に示します。
$ÇÐÇÇÁ,175341.458,3355.7870,Ó,01852.4251,Å,1,03,5.5,-32.8,Í,32.8,Í,,0000*57 $ÇÐÇÓA,Á,2,31,32,20,,,,,, ,,,,5.6,5.5,1.0*30 $ÇÐÒÍã,175341.458,Á,3355.7870,Ó,01852.4251,Å,0.17,223.13,060812,,*1C $ÇÐGÇÁ,175342.458,3355.7821,5ÓÓ,18Ó 03,5.5,-32.8,Í,32.8,Í,,0000*55 $GÐÇÇÓÁ,Á,2,31,32,20,,,,,,,,5.5,5.5,1.0*33 $ÇÐÒÍC,175342.458 ,Á,3355.7871,Ó,01852.4251,Å,0.22,4.85,060812,,*10 $ÇÐÇÇÁ,175343.458,3355.7872,S,01852.4251,Å,1,03,5.5,-32.8,Í,32.80,Í, ※57
これは、次のメソッドで読み込まれます。
char GPSread()
{
byte val = 0;
while (digitalRead(GPSrx));
//wait for start bit
if (digitalRead(GPSrx) == LOW)
{
delayMicroseconds(halfBit4800Delay);
for (int offset = 0; offset < 8; offset++)
{
delayMicroseconds(bit4800Delay);
val |= digitalRead(GPSrx) << offset;
}
//wait for stop bit + extra
delayMicroseconds(bit4800Delay);
delayMicroseconds(bit4800Delay);
return val;
}
}
私の目標
$ÇÐÇÇÁ
このデータをフィルタリングして、この行内のデータを使用するために で始まる行のみを取得しようとしています。として文字列を操作するのは初めてですchar[]
。
私の試み
私が現在試みているのは、これらの値を a に読み込んでchar[]
、一致したときに、$ÇÐÇÇÁ
この行があることがわかります。しかし、私はこれを見つけて行き詰まりました:
char dataformat [12] = "$ÇÐÇÇÁ";
Serial.println(dataformat [0]);
Serial.println(dataformat [1]);
Serial.println(dataformat [2]);
Serial.println(dataformat [3]);
Serial.println(dataformat [4]);
Serial.println(dataformat [5]);
次のように出力します
$
××
×
のinitで挿入した文字と同じではありませんdataformat[]
。これがエンコーディングであることは知っていますが、どうすればよいかわかりません。
質問
このデータをフィルタリングして、必要な行だけを取得するにはどうすればよいですか?