0

フィルタリングしたい大量のデータを出力する 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[]。これがエンコーディングであることは知っていますが、どうすればよいかわかりません。

質問

このデータをフィルタリングして、必要な行だけを取得するにはどうすればよいですか?

4

0 に答える 0