NMEA 0183 协议解析任务

工作遇到一个任务:对GPS模块的数据进行解析和筛选。、

要求环境:C语言

GPS输出的数据格式如下:

$GPGGA,024131.194,8960.0000,N,00000.0000,E,0,0,,137.0,M,13.0,M,,*4A
$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
$GPGSV,2,1,8,07,,,34,03,,,36,11,,,35,13,,,36*45
$GPGSV,2,2,8,23,,,36,19,,,38,16,,,34,06,,,32*41
$GPRMC,024131.194,V,8960.0000,N,00000.0000,E,0.000,0.00,090180,,,N*48
$GPVTG,0.00,T,,M,0.000,N,0.000,K,N*32
$GPGGA,024132.194,8960.0000,N,00000.0000,E,0,0,,137.0,M,13.0,M,,*49
$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
$GPGSV,2,1,8,07,,,33,03,,,36,11,,,34,13,,,36*43
$GPGSV,2,2,8,23,,,35,19,,,38,16,,,33,06,,,32*45
$GPRMC,024132.194,V,8960.0000,N,00000.0000,E,0.000,0.00,090180,,,N*4B
$GPVTG,0.00,T,,M,0.000,N,0.000,K,N*32
$GPGGA,024133.093,8960.0000,N,00000.0000,E,0,0,,137.0,M,13.0,M,,*4E
$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
$GPGSV,2,1,8,07,,,33,03,,,36,11,,,34,13,,,36*43
$GPGSV,2,2,8,23,,,35,19,,,38,16,,,33,06,,,33*44
$GPRMC,024133.093,V,8960.0000,N,00000.0000,E,0.000,0.00,090180,,,N*4C

解析
输出的数据需要可以使用:是否定位、小于/大于速度值、参与定位的卫星颗数、卫星信号强度为条件进行组合筛选。

-------------------------
序号 年月日时分秒 经度 纬度 定位状态 速度 参与定位的卫星颗数 卫星信号强度

下面是对任务的思考:

要求筛选是否定位功能:

定位功能在 GPGGA的第6位 GPS(6)GPS状态位: 0 未定位 1 非差分定位  2 差分定位

小于/大于速度值 在 GPVTG的(3)(4)地面速率位:000-999

参与定位的卫星颗数 在GPGGA的(7)位 正在使用的卫星数量(00-12)

卫星信号强度在 GPGSV的(7)位信噪比(卫星强度,没有跟踪到卫星时为空)

 

C语言软件设计思路:

首先将GPS数据解析出来存入自己定义的结构体中。由于任务给的源码是存放在TXT文件中,需要用文件IO函数

fopen,fgets,fclose,等函数将文本打开并读取。同时存入字符串数组中供后续筛选条件判断。

筛选条件初步设计单个条件和组合条件筛选。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
driver_nmea0183.c 是一个 NMEA 0183 驱动程序的源代码文件。NMEA 0183 是一种用于海上导航和水下探测设备之间数据交换的协议。这个驱动程序的作用是从 NMEA 0183 设备接收数据,并进行解析和处理。 该源代码文件中可能包含以下几个重要的函数和功能。 1. `open_serial_port()`:这个函数用于打开串口以便与 NMEA 0183 设备进行通信。它会配置串口的波特率、数据位、校验位和停止位等参数,以便与 NMEA 0183 设备进行正确的通信。 2. `read_serial_data()`:这个函数用于从已打开的串口中读取接收到的数据。它会以字节为单位读取数据,并将数据存储到一个缓冲区中,以便后续的解析和处理。 3. `parse_nmea_data()`:这个函数用于解析接收到的 NMEA 0183 数据。NMEA 0183 数据由一系列以逗号分隔的字段组成,每个字段代表不同的数据类型,如位置、速度、航向等。该函数会将接收到的数据按照字段进行解析,并提取出需要的信息。 4. `process_nmea_data()`:这个函数是对解析后的数据进行进一步处理的地方。它可能根据应用需求,对数据进行筛选、计算、存储等操作,并将处理结果传递给其他模块或组件使用。 通过对以上几个关键函数的调用和处理,driver_nmea0183.c 文件完成了与 NMEA 0183 设备的通信和数据解析任务,能够将接收到的原始数据转化为可用的位置、速度等信息,以供其他应用程序或系统使用。这样,我们就能够利用该驱动程序获取准确的海上导航或水下探测数据,并进行相应的应用和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值