我有連接到我的Arduino的,其輸出大量的數據,我想過濾的GPS單元。如何處理奇怪的字符在Arduino的代碼
下面是輸出的一個片段:
$ÇÐÇÇÁ,175341.458,3355.7870,呵呵,01852.4251,A,1,03,5.5,-32.8,W,32.8,在0000 ,, * 57 $ÇÐÇÓA,ON,2,31,32,20 ,,,,,,,,,, 5.6,5.5,1.0 * 30 $ÇÐÒÍÃ,175341,458,ON,3355.7870,呵呵,01852.4251,A,0.17,223.13, 060812 ,, * 1C $ÇÐGÇÁ,175342.458,3355.7871,呵呵,01852.4251,A,1,03,5.5,-32.8,W,32.8,在0000 ,, * 55 $GÐÇÓÁ,ON,2,31,32, 20 ,,,,,,,,,, 5.5,5.5,1.0 * $ 33 ÇÐÒÍC,175342,458,在,3355.7871,呵呵,01852.4251,A,0.22,4.85,060812 ,, 10 * $ÇÐÇÇÁ,175343.458,3355.7872 ,S,01852.4251,A,1,03,5。 5,-32.8,在32.8,在0000 ,, * 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[]
工作。
我嘗試
那麼我目前正試圖讀入這些值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]);
輸出作爲
$
的的
的
這是不一樣的我插在初始化的字符dataformat[]
。我知道這是一個編碼的事情,但不知道如何去做。
問題
我怎麼能過濾此數據只獲得我想要的線路?
嘗試使用if(isAlphanum(mychar)){...}來過濾字符,或者if(strncmp(「MYSTRING」,myString「,5)== 0){...}」來檢查在一行的開頭有一個特定的五個字符 – paulsm4 2012-08-06 19:20:51
@ paulsm4但是如果我檢查它是否是字母數字,它會有什麼幫助 – LouwHopley 2012-08-06 19:25:07