필터링 할 데이터가 많은 Arduino에 연결된 GPS 장치가 있습니다.Arduino 코드에서 이상한 문자를 처리하는 방법
$ ÇÐÇÇÁ, 175341.458,3355.7870, O, 01852.4251, Å, 1,03,5.5, -32.8, I, 32.8, 난 ,, 0000 * 57 : 여기
출력의 니펫 $ ÇÐÇÓA, Á, 2,31,32,20 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 060812 ,, * 1C $ ÇÐGÇÁ, 175342.458,3355.7871, Ó, 01852.4251, Å, 1,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, I, 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;
}
}
내 목표
I 필터링하려고 이 데이터는 $ÇÐÇÇÁ
으로 시작하는 행만 가져 와서이 행의 데이터를 사용합니다. 나는 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]);
출력 등을
과 동일하지 않은 $
ÃÃ
Ã
내가 init의 init에 삽입 한 문자들 dataformat[]
. 나는 이것이 인코딩 된 것이라는 것을 알고 있지만 그것에 대해 어떻게 생각하는지 모른다.
질문
어떻게이 데이터를 내가 원하는 단지 라인을 얻기를 필터링 할 수 있을까?
'if (isAlphanum (mychar)) {...}'를 사용하여 문자를 필터링하거나 if (strncmp ("MYSTRING", myString ", 5) == 0) {...} – paulsm4
@ paulsm4하지만 알파벳 숫자인지 확인하면 무엇이 도움이 될까요? – LouwHopley