Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

startsWith関数で

startsWith関数は引数に指定した文字列を持っていた場合true/falseを返す関数です。

実際のところ

前回のコードを元に、GPS受信パケットから"$GPGGA"を切り出すのは以下の通り

#include <SoftwareSerial.h>

#define SOFT_RX 10
#define SOFT_TX 11

SoftwareSerial mySerial(SOFT_RX, SOFT_TX);
String strBuf   = "";
char   buffWord = 0;

void setup() {
  mySerial.begin(9600);
  Serial.begin(115200);
  while (!mySerial && !Serial) {;}
  Serial.println("GPS Logging...");
}

void loop() {
  if (mySerial.available() > 0) {
      buffWord = mySerial.read();
      strBuf = strBuf + "" + buffWord;
      
      if (buffWord == 0x0d) {
        if(strBuf.startsWith("$GPGGA")) {
          Serial.println(strBuf);
        }
        strBuf = "";
      }

  }
}

動くと、こんな感じになります

GPS Logging...
$GPGGA,155927.000,,,,,0,0,,,M,,M,,*45
$GPGGA,155929.000,,,,,0,0,,,M,,M,,*4B
$GPGGA,155932.000,,,,,0,0,,,M,,M,,*41
$GPGGA,155934.000,,,,,0,0,,,M,,M,,*47
$GPGGA,155936.000,,,,,0,0,,,M,,M,,*45
$GPGGA,155937.000,,,,,0,0,,,M,,M,,*44
$GPGGA,155939.000,,,,,0,0,,,M,,M,,*4A
...