解析GPS数据-虚拟IoT硬件和RaspberryPi


文档摘要

解析GPS数据 - 虚拟IoT硬件和Raspberry Pi 在本课的这一部分中,您将解码由Raspberry Pi或虚拟IoT设备从GPS传感器读取的NMEA消息,并提取纬度和经度。 解析GPS数据 一旦从串行端口读取了原始的NMEA数据,就可以使用开源的NMEA库进行解码。 任务 - 解析GPS数据 编写程序以解析GPS数据。 如果尚未打开,请打开 应用程序项目。 安装 Pip包。此包包含用于解码NMEA消息的代码。 在 文件的导入部分添加以下代码,以导入 模块: 将 函数的内容替换为以下内容: 此代码将使用 库来解析从UART串行端口读取的行。 如果消息的句子类型是 ,则使用 函数进行转换。 然后检查纬度的方向,如果纬度为南,则将其转换为负数。同样,如果经度为西,则将其转换为负数。

解析GPS数据 - 虚拟IoT硬件和Raspberry Pi

在本课的这一部分中,您将解码由Raspberry Pi或虚拟IoT设备从GPS传感器读取的NMEA消息,并提取纬度和经度。

解析GPS数据

一旦从串行端口读取了原始的NMEA数据,就可以使用开源的NMEA库进行解码。

任务 - 解析GPS数据

编写程序以解析GPS数据。

  1. 如果尚未打开,请打开gps-sensor应用程序项目。

  2. 安装pynmea2Pip包。此包包含用于解码NMEA消息的代码。

    pip3 install pynmea2
  3. app.py文件的导入部分添加以下代码,以导入pynmea2模块:

    import pynmea2
  4. 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函数进行转换。

    然后检查纬度的方向,如果纬度为南,则将其转换为负数。同样,如果经度为西,则将其转换为负数。

    最后,将坐标打印到控制台,连同用于获取位置的卫星数量。

  5. 运行代码。如果您正在使用虚拟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传感器程序成功地进行了数据解析!

声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。


作者与出处
原作者: microsoft
来源:microsoft
许可证:MIT
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: microsoft 转发
评论区 (0)
U