从UART读取数据 - GPS解析

时间:2015-04-28 18:15:46

标签: c gps avr uart

我有一个仅在启用GPS的情况下才能运行的程序。 有一段时间(1)仍然调用此函数。

gps_get_nmea(nmea_in, sizeof(nmea_in)); 

此功能用于从' $'中检索UART中的数据。到' \ n'

Gps_get_nmea函数在这里:

void gps_get_nmea(char* buf, uint8_t bufSize){
char inChar;
uint8_t curSize = 0;

do {
    inChar = gps_get_char();
} while(inChar != '$');

while( inChar != '\n' && curSize < bufSize - 2) {
    *buf++ = inChar;
    curSize++;
    inChar = gps_get_char();
}

*buf++ = '\n';
*buf = '\0';
}

在这里函数gps_get_char():

char gps_get_char(){
unsigned int in = 0;
do {
    in = uart1_getc();
} while((in & UART_NO_DATA) || (in & UART_BUFFER_OVERFLOW));

return((char) in);
}

如果GPS已关闭,整个程序将停止。 问题出现在那些循环中......做什么&#39;

但我不知道如何解决这个问题。

那么我该怎样做才能以&#39; $&#39;开头的方式获取UART数据?并以&#39; \ n&#39;结尾???

To communicate with the UART using the library from Peter Fleury.

0 个答案:

没有答案