NMEA 0183 协议解析任务

本文介绍了一项使用C语言解析和筛选GPS模块数据的任务。详细解释了如何从GPS输出中提取关键信息,如定位状态、速度值、参与定位的卫星数量及卫星信号强度,并概述了C语言软件的设计思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工作遇到一个任务:对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,等函数将文本打开并读取。同时存入字符串数组中供后续筛选条件判断。

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值