USART HMI串口屏+GPS模块显示时间和经纬度

USART HMI串口屏+GPS模块显示时间和经纬度


📋在不使用其他单片机做数据中转处理情况下,利用USART HMI串口屏主动解析模式,来接收并解析GPS模块数据并显示,功能包括串口屏幕发送配置指令给GPS模块。
  • 🌿GPS模块使用的是u-box m8130kt GPS模块
  • 🌿有关具体的GPS配置指令介绍,可以参考上面的相关篇内容。
  • 🌿串口屏主动解析基本知识参考:http://wiki.tjc1688.com/advanced/recmod/recmod_base.html#recmod
    在这里插入图片描述
    在这里插入图片描述
  • 🔖我这里配置GPS+BEIDOU模式的话,实际上操作的发送相关配置指令给GPS模块。

🛠功能实现与代码逻辑

  • 🌿在主动解析模式下,判断帧头和帧尾信息
if(usize>0&&u[0]!=0x24&&u[1]!=0x47)//判断帧头"$G"
{
  udelete 1
}
if(usize>=2)
{
  usize2=usize-1
  for(length=0;length<usize2;length++)
  {
    if(u[length]==0x0d&&u[length+1]==0x0a)//回车换行 \r\n
    {
      totalLength=length+2
      ucopy t10.txt,0,length,0
      udelete totalLength
    }
  }
}
  • 🌿时间信息和经纬度信息,可通过解析$GNRMC$GNZDA获取。
  • 🔨具体数据内容的解析,主要是对字符串数据进行加工处理。
    • 🔖提取帧头信息并判断是不是要找的对象:
spstr t10.txt,t11.txt,",",0 //以,为分隔符,截取第0个
if(t11.txt=="$GNRMC"||t11.txt=="$GNZDA")
{
  btlen t10.txt,n1.val//只有帧头为$GNRMC和 $GNZDA保留
}
if(t11.txt=="$GNZDA")
{
  //$GNZDA,132628.00,01,11,2023,00,00*76
  spstr t10.txt,t24.txt,",",4//截取年-存入到t24
  spstr t10.txt,t26.txt,",",3//截取月-存入到t26
  spstr t10.txt,t25.txt,",",2//截取日-存入到t25
}
if(t11.txt=="$GNRMC")
{
  substr t10.txt,t12.txt,7,6  //时分秒
  t23.txt=t12.txt
  //  spstr t10.txt,t12.txt,",",1    //以^为分隔符,截取第1个,t10为"030906.00"
  //  spstr t10.txt,t13.txt,",",9    //日-月-年,"311023,"
  //  substr t13.txt,t24.txt,4,2//截取年23存入到t24
  //  substr t13.txt,t25.txt,0,2//截取日
  //  substr t13.txt,t26.txt,2,2//截取月
  spstr t10.txt,t17.txt,",",3    //纬度格式 ddmm.mmmmm 2750.92061,N,
  spstr t10.txt,t16.txt,",",5//经度dddmm.mmmmm 11342.51677,E,0
  t14.txt="N"+t17.txt+"°"+" "+"E"+t16.txt+"°"
  //把文本t13.txt转为数字n0.val
  n0.val=0
  covx t23.txt,n0.val,2,0//获取时
  n0.val+=8//换算北京时间
  if(n0.val>24)
  {
    n0.val-=24
    covx n5.val,t13.txt,2,0
    covx n6.val,t25.txt,2,0
    n6.val+=1
    covx t25.txt,n6.val,2,0
  }
  t28.txt=t24.txt+"-"+t26.txt+"-"+t25.txt//拼接年月日
  if(t28.txt!=t27.txt)
  {
    t27.txt=t28.txt
  }
  covx n0.val,t22.txt,0,0
  substr t12.txt,t20.txt,2,2
  substr t12.txt,t21.txt,4,2
  t19.txt=t22.txt+":"+t20.txt+":"+t21.txt
}

📑GPS模块配置指令

printh B5 62 06 17 14 00 00 41 00 02 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 75 57 B5 62 06 17 00 00 1D 5D//配置NMEA协议4.1,接收BEIDOU信号
delay=10
printh B5 62 06 01 03 00 F0 08 01 03 20//使能打印$GNZDA
delay=10
printh B5 62 06 08 06 00 E8 03 01 00 01 00 01 39 B5 62 06 08 00 00 0E 30//GPS time 1000ms打印一次
delay=10
printh B5 62 06 01 03 00 F0 03 00 FD 15//不使能打印$GBGSV
delay=10
printh B5 62 06 01 03 00 F0 05 00 FF 19//不启用 GxVTG
  • 📜配置后的实际输出数据内容:
    在这里插入图片描述
  • 🔖上面的数据信息,其中放到屏幕显示上显示的,只有$GNRMC$GNZDA,如果全部解析放到屏幕上做动态显示,内容将更新十分频繁,其他的一些数据信息并不是想要的。

⛳精度相关说明

  • 🌿模块输出的原始GPS坐标 (WGS-84),如果需要配合地图查询使用,需要做转化,
  • 🌿国内地图采用了非标坐标系所致。国内常见地图如高德地图使用 GCJ-02 坐标系, 百度地图使用 BD-09 坐标系,故此开发者需要对模块输出的经纬度进行加偏处理,才能在国内的地图上实现精确定位。
  • 📍数据转化以及查询可以参考:http://old.openluat.com/GPS-Offset.html

📚基于淘晶驰TJC4827T143_011C_I_P20创建的工程

链接:https://pan.baidu.com/s/1WW-dsk02kHM3smLPWhxJ_g 
提取码:s7jf
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值