我使用串口將GP-635T GPS模塊連接到我的Arduino UNO(GPS TX-> UNO RX [引腳0])。GP-635T GPS模塊丟棄數據
然後,我只是讀取傳入的數據字節,將它們添加到一個字符串,因爲它們被讀取,當我到達一個換行符時(13),我只是打印完整的字符串數據並重置數據字符串以便下一次運行。
代碼:
void setup()
{
Serial.begin(9600);
Serial.println("Initialized Serial port..");
}
String data = "";
void loop()
{
while(Serial.available())
{
char gpsByte = Serial.read();// Read a byte from the GPS
data += gpsByte;
if(gpsByte == 13){
Serial.print(data);
data = "";
}
}
delay(100);
}
此代碼的工作,因爲它是。但這裏的問題是我從中得到的數據。
該模塊使用NMEA-0183標準以1Hz打印出多個數據線。我不知道它是如何決定打印什麼的,因爲數據對於(幾乎)完整數據集的超過5個「打印」不一致。
例:
$GPGGA,213948.00,,,,,0,00,99.99,,,,,,*63
$GPGSA,A30 <--- A30?
$GPGSV,1,1,01,29,,,30*70
$GPGLL,,,,,213948.00,V,N*4F
$GPRMC,213949.00,V,,,,,,,290314,,,N*74
$GPVTG,,,,,,,,,N*30
$GPGGA,213949.00,,,,,0,00,99.99,,,,,,*62
$GPGSA,A,1,,,,PGSV,1,1,01,29,,,30*70 <--- PGSV?
$GPGLL,,,,,213949.00,V,N*4E
$GPRMC,213950.00,V,,,,,,,290314,,,N*7C
$GPVTG,,,,,,,,,N*30
$GPGGA,213950.00,,,,,0,00,99.99,,,,,,*6A
...
$GPGGA,214045SA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
$GPGSV,1,1,01,29,,,30*70$GPRMC,214046.00,V,,,,,,,290314,,,N*75 <--- Missing linebreak?
$GPVTG,,,,,,,,,N*30
$G00,99.99,,,,,,*63 <--- $G00??
$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
$GPGSV,1,1,02,20,,,27,29,,,30*74
$GPGLL,$GPRMC,214047.00,V,,,,,,,290314,,,N*74 <--- Missing data?
$GPVTG,,,,,,,,,N*30
$GPGGA,214047.00,,,,,0,00,99.99,,,,,,*62
$,99.99*30 <--- Alot of missing data
我想你明白了吧,我沒有什麼,但連接到Arduino的GPS。 我試過用一些無線模塊無線發送數據,沒有任何變化。 我已經嘗試過使用AltSoftSerial和SoftwareSerial,但是我用後者得到了messier數據。 我已經嘗試了不同的波特率,沒有運氣。
有沒有人有任何想法,爲什麼會發生這種情況?該模塊是全新的,我不知道它爲什麼會這樣。
注意:我的家裏沒有一個非常好的GPS信號給我的模塊,我嘗試着去外面看,看看我是否可以從大約3顆衛星上得到一個信號,但是沒有,不改變輸出。