0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术C#通过串口读取GPS模块定位数据的方法

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-01-14 11:33 次阅读

有人云:'GPS的应用,仅受人们的想象力制约。'GPS问世以来,已充分显示了其在导航定位领域的霸主地位。许多领域也由于GPS的出现而产生革命性变化。目前,几乎全世界所有需要导航定位的用户,都被GPS的高精度、全天候、全球覆盖、方便灵活和优质价廉所吸引。在嵌入式产品的开发应用中,很多领域都涉及到GPS导航和定位的应用;英创的很多用户,就是在英创的嵌入式主板的基础上,外接GPS应用模块,来实现GPS在各种领域的合理运用。英创随之也向用户提供了相关GPS的方案和例程,供用户在实际应用中进行参考。本文介绍了英创C# GPS例程通过串口读取GPS模块定位数据的方法。
GPS模块只要处于工作状态就会源源不断地把接收并计算出的GPS导航定位信息传送到连接到它的嵌入式主板串口之上,在没有进一步处理之前,传送的数据是一长串字节流信息。因此必须经过程序将其转化为有实际意义的;可供高层决策使用的定位信息数据。与其他通信协议类似,GPS模块都遵循NMEA-0183协议,GPS进行信息提取,必须明确其帧结构,然后才能根据其结构完成对各个定位信息的提取;其发送到串口的数据主要由帧头,帧尾和帧内数据组成。根据数据帧的不同,帧头也不相同,主要有“#GPGGA”,“$GPGSA”,“$GPRMC”等。这些帧头标识了后续帧内数据的组成结构,各帧均以回车符和换行符作为帧尾标识一帧的结束。对于通常的情况,大家所关心的定位数据如经纬度、速度、时间、航向等均以“$GPRMC”中获取得到。该帧的结构及各字段释义如下:
例:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50
字段0:$GPRMC,语句ID,表明该语句为Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐最小定位信息
字段1:UTC时间,hhmmss.sss格式
字段2:状态,A=定位,V=未定位
字段3:纬度ddmm.mmmm,度分格式(前导位数不足则补0)
字段4:纬度N(北纬)或S(南纬)
字段5:经度dddmm.mmmm,度分格式(前导位数不足则补0)
字段6:经度E(东经)或W(西经)
字段7:速度,节,Knots
字段8:方位角,度
字段9:UTC日期,DDMMYY格式
字段10:磁偏角,(000 - 180)度(前导位数不足则补0)
字段11:磁偏角方向,E=东W=西
字段16:校验值
对于用户的应用程序来讲,要读取GPS模块的定位数据,无非是实现两个简单的步骤:(1)读取串口数据;(2)将读取的数据解析出来。
我们以预装了WinCE嵌入式操作系统ARM9主板EM9161来连接GPS模块,用C#来实现读取GPS模块发过来的串口数据,最方便的方法是直接使用VS2005提供的SerialPort串口类,这个串口类提供一个DataRecieved事件响应机制,可以简单方便地读取串口数据,如:
private SerialPort myserialPort = new SerialPort(); // 定义SerialPort串口类对象myserialPort
……
myserialPort.DataReceived += new SerialDataReceivedEventHandler(myserialPort_DataReceived);
// 当串口有数据收到时,启动myserialPort_DataRecieved事件函数
收到的串口数据是标准的string字符串,以“$GPRMC”开头的帧为例,收到的每一帧数据string都以回车换行符为结尾,可以以回车换行符为标志将数据string提取出来;而且这个数据帧的每个元素均以逗号分隔,可以通过逗号分隔将这个数据帧的每个元素提取到一个string数组里面进行进一步处理。如:
string GPS_text = ''; // 字符串GPS_text = 接收到的串口数据,缺省定义为空
// 串口有数据收到
private void myserialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
GPS_text = GPS_text + myserialPort.ReadExisting(); // 读取串口数据
if (GPS_text.EndsWith('\n')) // 如果GPS_text字符串最后一个字符是“回车”
{
Invoke(new EventHandler(update_data)); // 通过Invoke方法执行update_data函数
}
}
private void update_data(object sender, EventArgs e)
{
string[] GPS_info = GPS_text.Split(','); // 按照逗号分隔把$GPRMC各种信号分割到字符串数组
…… // 处理GPS_info字符串数组,完成GPS数据显示、处理等功能
GPS_text = ''; // 置空GPS_text以便存储新的串口接收到的字符串
}
英创提供的例程运行界面如下:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6085

    浏览量

    35210
收藏 人收藏

    评论

    相关推荐

    中科达荣获2024年软件和信息技术服务优秀企业

    及前百家企业”名单。中科达凭借非凡的技术实力与持续的创新能力,成功入选“2024年度软件和信息技术服务竞争力百强企业”以及“2024年软件和信息技术服务优秀企业”。
    的头像 发表于 10-30 11:44 379次阅读

    芯伯乐产品在GPS定位模块上的设计方案

    模块方框图01产品介绍及应用ProductIntroductionandApplicationGPS是英文GlobalPositioningSystem(全球定位系统)的简称。利用GPS定位
    的头像 发表于 10-15 08:07 166次阅读
    芯伯乐产品在<b class='flag-5'>GPS</b><b class='flag-5'>定位</b><b class='flag-5'>模块</b>上的设计方案

    GPS/北斗RTK差分定位系统的技术原理以及应用领域

    全球定位系统(GPS)和北斗卫星导航系统(BDS)都是使用卫星提供定位和导航信息的先进系统,它们在各个行业得到广泛应用。本文将探讨GPS/北
    的头像 发表于 09-27 10:35 641次阅读
    <b class='flag-5'>GPS</b>/北斗RTK差分<b class='flag-5'>定位</b>系统的<b class='flag-5'>技术</b>原理以及应用领域

    智慧园区人员定位及轨迹追踪技术探讨

    追踪的相关技术和应用。 一、智慧园区人员定位技术 在智慧园区中,有许多方法可以实现人员的准确定位。以下将介绍几种常见的人员
    的头像 发表于 08-28 11:31 337次阅读

    IP地址定位GPS定位技术解析与应用比较

    IP地址定位GPS定位是比较常见的定位技术。本文将与大家探讨这两种技术的工作原理、优缺点及其在
    的头像 发表于 07-16 13:50 430次阅读

    5分钟读懂GPS-RTK实时动态技术,建议收藏!

    由于”智慧工地“理念的兴起和发展,目前越来越多的企业将信息技术手段融合于施工现场安全管理,构建智能化的安全监管模式。基于此,蓝牙+LORA融合定位技术、UWB超宽带定位
    的头像 发表于 07-04 17:32 806次阅读
    5分钟读懂<b class='flag-5'>GPS</b>-RTK实时动态<b class='flag-5'>技术</b>,建议收藏!

    基于STM32单片机的GPS定位系统设计

    本次设计的定位系统,是以STM32单片机作为核心控制器,可以控制 GPS 定位模块对经纬度信息进行采集,可以对安全值进行设定,当超过安全范图
    的头像 发表于 06-24 09:50 2067次阅读
    基于STM32单片机的<b class='flag-5'>GPS</b><b class='flag-5'>定位</b>系统设计

    利用自定义数据传输在机智云上实现GPS定位数据的传输

    GPS定位数据通常以经度和纬度的形式表示,是一种地理位置信息。要将GPS定位数据加入机智云平台,可以通过
    的头像 发表于 05-09 08:10 373次阅读
    利用自定义<b class='flag-5'>数据</b>传输在机智云上实现<b class='flag-5'>GPS</b><b class='flag-5'>定位数据</b>的传输

    基于STM32的GPS定位

    简介: 基于STM32的GPS定位仪项目结合了高性能MCU与GPS技术,实现了一种功能强大、成本合理的定位方案。MCU解析
    的头像 发表于 05-07 09:45 777次阅读
    基于STM32的<b class='flag-5'>GPS</b><b class='flag-5'>定位</b>仪

    UWB定位技术GPS定位区别及应用

    GPS定位技术是一种基于卫星定位系统的全球定位技术,其主要优势在于可以覆盖全球范围,并且能够提供
    的头像 发表于 04-24 16:52 1810次阅读
    UWB<b class='flag-5'>定位</b><b class='flag-5'>技术</b>与<b class='flag-5'>GPS</b><b class='flag-5'>定位</b>区别及应用

    安信可A9G开发板上报GPS定位数据实现微信公众号定位显示

    文章目录 一、准备工作 1.1 硬件准备 1.2软件准备 1.3微信公众号 二、AT指令 三、相关配置 四、订阅信息和上报数据到公众号 五、联系我们 前言 本文将介绍如何使用将A9G通过GPS
    的头像 发表于 03-21 11:26 516次阅读
    安信可A9G开发板上报<b class='flag-5'>GPS</b><b class='flag-5'>定位数据</b>实现微信公众号<b class='flag-5'>定位</b>显示

    手机定位技术之卫星定位和移动基站定位

    GPS 是一种通过卫星信号来确定接收设备位置的定位技术。手机内置的 GPS 芯片可以接收来自卫星的信号,
    的头像 发表于 02-26 15:19 4977次阅读
    手机<b class='flag-5'>定位</b><b class='flag-5'>技术</b>之卫星<b class='flag-5'>定位</b>和移动基站<b class='flag-5'>定位</b>

    什么是gps定位? gps定位放线的步骤有哪些

    用户的位置,从而实现定位GPS定位放线是一种使用GPS技术进行精确测量和放线的方法。它常用于
    的头像 发表于 01-22 15:48 6383次阅读

    C#网络串口调试助手源码

    非常牛B网络串口调试助手C#源码,支持添加多条协议
    发表于 12-27 09:45 4次下载

    GPS能室内定位吗?

    GPS能室内定位吗? GPS(全球卫星导航系统)是一种使用卫星技术进行定位和导航的系统,它可以在户外环境下非常准确地确
    的头像 发表于 12-12 14:39 2204次阅读