将 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()
.
来投射它
我正在尝试使用 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()
.