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

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


  • 相关篇《基于u-box GPS模块通过串口指令调整输出信息》
在不使用其他单片机做数据中转处理情况下,利用USART HMI串口屏主动解析模式,来接收并解析GPS模块数据并显示,功能包括串口屏幕发送配置指令给GPS模块。
  • GPS模块使用的是u-box m8130kt GPS模块
  • 有关具体的GPS配置指令介绍,可以参考上面的相关篇内容。
  • 串口屏主动解析基本知识参考:http://wiki.tjc1688.com/advanced/recmod/recmod_base.html#recmod
    USART HMI串口屏+GPS模块显示时间和经纬度_第1张图片
  • 我这里配置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
  • 配置后的实际输出数据内容:
    USART HMI串口屏+GPS模块显示时间和经纬度_第2张图片
  • 上面的数据信息,其中放到屏幕显示上显示的,只有$GNRMC$GNZDA,如果全部解析放到屏幕上做动态显示,内容将更新十分频繁,其他的一些数据信息并不是想要的。

基于淘晶驰TJC4827T143_011C_I_P20创建的工程

链接:https://pan.baidu.com/s/1WW-dsk02kHM3smLPWhxJ_g 
提取码:s7jf

你可能感兴趣的:(DIY,GPS模块,串口屏)