将 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().

来投射它