繁体   English   中英

将GPS连接到Raspberry Pi

[英]Connection GPS to Raspberry Pi

我正在尝试使用Atmega1284p UART读取GPS模块的NMEA输出。 这是传入的ascii流的样子:

$GPGLL,3720.11677,N,12158.43719,W,031059.00,A,D*77<CR><LF>

我想获取字符串的“ 3720.11”部分,即纬度。 这不是唯一输入的字符串,而是唯一包含“ GPGLL”的字符串,因此我编写了一些代码,在uart上捕获字符,直到看到L,然后在字符串开头查找逗号。号码。 然后,它将在此之后捕获字符,而忽略小数点。

我不知道如何用Python编写该程序。 请帮我!

char ignore;
char latitude[6];

while(ignore!=0x4C)
{
    ignore=getchar();        // Look for L (4C) at start of string
}           

while(ignore!=0x2C)
{
    ignore=getchar();        // Look for comma (2C) before latitude data
}                         

latitude[0]=getchar();       // Store latitude characters
latitude[1]=getchar();
latitude[2]=getchar();
latitude[3]=getchar();
ignore=getchar();            // Ignore decimal
latitude[4]=getchar();
latitude[5]=getchar();

在Python中,您可以使用split函数将字符串分割为给定分隔符的列表。 在您的字符串中,逗号是定界符。 因此,拆分字符串,获取列表中的第二个元素,您便拥有了纬度:

def get_latitude_from_nmea(telegram):
    split_telegram = telegram.split(',')
    latitude = split_telegram[1]

    return latitude

# example:

telegram = "$GPGLL,3720.11677,N,12158.43719,W,031059.00,A,D*77"
latitude = get_latitude_from_nmea(telegram)

print(latitude)     # 3720.11677

latitude是一个字符串。 如果您希望将其作为float,则可以使用float()进行float()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM