解析GPS数据 - 虚拟IoT硬件和Raspberry Pi 在本课的这一部分中,您将解码由Raspberry Pi或虚拟IoT设备从GPS传感器读取的NMEA消息,并提取纬度和经度。 解析GPS数据 一旦从串行端口读取了原始的NMEA数据,就可以使用开源的NMEA库进行解码。 任务 - 解析GPS数据 编写程序以解析GPS数据。 如果尚未打开,请打开 应用程序项目。 安装 Pip包。此包包含用于解码NMEA消息的代码。 在 文件的导入部分添加以下代码,以导入 模块: 将 函数的内容替换为以下内容: 此代码将使用 库来解析从UART串行端口读取的行。 如果消息的句子类型是 ,则使用 函数进行转换。 然后检查纬度的方向,如果纬度为南,则将其转换为负数。同样,如果经度为西,则将其转换为负数。
在本课的这一部分中,您将解码由Raspberry Pi或虚拟IoT设备从GPS传感器读取的NMEA消息,并提取纬度和经度。
一旦从串行端口读取了原始的NMEA数据,就可以使用开源的NMEA库进行解码。
编写程序以解析GPS数据。
如果尚未打开,请打开gps-sensor应用程序项目。
安装pynmea2Pip包。此包包含用于解码NMEA消息的代码。
pip3 install pynmea2
在app.py文件的导入部分添加以下代码,以导入pynmea2模块:
import pynmea2
将print_gps_data函数的内容替换为以下内容:
msg = pynmea2.parse(line) if msg.sentence_type == 'GGA': lat = pynmea2.dm_to_sd(msg.lat) lon = pynmea2.dm_to_sd(msg.lon) if msg.lat_dir == 'S': lat = lat * -1 if msg.lon_dir == 'W': lon = lon * -1 print(f'{lat},{lon} - from {msg.num_sats} satellites')
此代码将使用pynmea2库来解析从UART串行端口读取的行。
如果消息的句子类型是GGA,则使用dm_to_sd函数进行转换。
然后检查纬度的方向,如果纬度为南,则将其转换为负数。同样,如果经度为西,则将其转换为负数。
最后,将坐标打印到控制台,连同用于获取位置的卫星数量。
运行代码。如果您正在使用虚拟IoT设备,请确保CounterFit应用程序正在运行并且正在发送GPS数据。
pi@raspberrypi:~/gps-sensor $ python3 app.py 47.6423109,-122.1390293 - from 3 satellites
您可以在code-gps-decode/virtual-device文件夹或code-gps-decode/pi文件夹中找到此代码。
您的GPS传感器程序成功地进行了数据解析!
声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。