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

news2024/11/26 10:34:28

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
    在这里插入图片描述
    在这里插入图片描述
  • 🔖我这里配置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,如果全部解析放到屏幕上做动态显示,内容将更新十分频繁,其他的一些数据信息并不是想要的。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1160996.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android 如何在Android studio中快速创建raw和assets文件夹

一 方案 1. 创建raw文件夹 切成project浏览模式——>找到res文件粘贴要放入raw文件夹下的文件。 当然此时raw文件还没有&#xff0c;直接在右侧输入框中出现的路径~\res后面加上\raw即可。 2. 创建assets文件夹 同理在main文件夹下粘贴要放入assets文件夹的文件&#xff0…

【深度学习基础】专业术语汇总(欠拟合和过拟合、泛化能力与迁移学习、调参和超参数、训练集、测试集和验证集)

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

【高光谱与多光谱:空间-光谱双优化模型驱动】

A Spatial–Spectral Dual-Optimization Model-Driven Deep Network for Hyperspectral and Multispectral Image Fusion &#xff08;一种用于高光谱与多光谱图像融合的空间-光谱双优化模型驱动深度网络&#xff09; 深度学习&#xff0c;特别是卷积神经网络&#xff08;CNN…

【算法练习Day35】01背包问题分割等和子集

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 01背包问题分割等和子集总结…

C语言从入门到精通之【编译过程】

&#xff01;&#xff01;&#xff01;本文内容毕业生面试必问哈。 编译过程 编译包含四个阶段&#xff0c;预处理&#xff08;Preprocessing&#xff09;、编译&#xff08;Compilation&#xff09;、汇编&#xff08;Assembly&#xff09;、链接&#xff08;Linking&#x…

JAVA 实现PDF转图片(spire.pdf.free版)

1.引入jar包 导入方法1&#xff1a; 手动引入。将Free Spire.PDF for Java下载到本地&#xff0c;解压&#xff0c;找到lib文件夹下的Spire.PDF.jar文件。在IDEA中打开如下界面&#xff0c;将本地路径中的jar文件引入Java程序&#xff1a; 导入方法2&#xff1a;如果您想通过…

Day17力扣打卡

打卡记录 参加会议的最多员工数&#xff08;拓扑排序 分类讨论&#xff09; 链接 计算内向基环树的最大基环&#xff0c;基环树基环为2的情况分类讨论。 class Solution { public:int maximumInvitations(vector<int> &favorite) {int n favorite.size();vector…

STM32中微秒延时的实现方式

STM32中微秒延时的实现方式 0.前言一、裸机实现方式二、FreeRTOS实现方式三、定时器实现&#xff08;通用&#xff09;4、总结 0.前言 最近在STM32驱动移植过程中需要用到微秒延时来实现一些外设的时序&#xff0c;由于网上找到的驱动方法良莠不齐&#xff0c;笔者在实现时序过…

链表指定节点的插入

向现有链表中插入结点&#xff0c;根据插入位置的不同&#xff0c;可分为以下 3 种情况&#xff1a; 插入到链表的头部&#xff0c;作为新的链表中第一个存有数据的结点&#xff08;又称为”首元结点”&#xff09;&#xff1b;插入到链表中某两个结点之间的位置&#xff1b;插…

通达信对子数的指标公式大全

对子数&#xff1a;形如9.22,12.21, 4.44,11.00等 顺子数&#xff1a;形如&#xff13;.89,4.98,7.56等 进一步的了解,自行百度。 在通达里查找价格为对子数的个股&#xff0c;有两个自带的函数&#xff0c; INTPART(X),返回数值的整数部分&#xff0c; FRACPART&#xff…

安达发|APS生产排程解决五金制造企业的需求

在五金制造行业中&#xff0c;生产排程一直是一个非常重要的环节。然而&#xff0c;由于五金行业的特点和痛点&#xff0c;传统的生产排程方法往往难以满足企业的需求。本文将针对五金行业的痛点&#xff0c;探讨如何利用APS生产排程解决这些问题。 首先&#xff0c;我们需要了…

代码随想录二刷Day 56

1143.最长公共子序列 本题和动态规划&#xff1a;718. 最长重复子数组 (opens new window)区别在于这里不要求是连续的了&#xff0c;但要有相对顺序&#xff0c;即&#xff1a;"ace" 是 "abcde" 的子序列&#xff0c;但 "aec" 不是 "abcd…

大模型时代目标检测任务会走向何方?

参考&#xff1a; 大模型时代目标检测任务会走向何方&#xff1f; 细数从常见的目标检测到现在 MLLM 盛行的时代&#xff0c;和 Object Detection 的任务以及近期涌现的新任务。>>加入极市CV技术交流群&#xff0c;走在计算机视觉的最前沿 你或许很好奇&#xff0c;现在…

人工智能时代八大类算法你了解吗?(文末包邮送书6本)

文章目录 本文导读1. 关联规则分析2. 回归分析3. 分类分析4. 聚类分析5. 集成学习6. 自然语言处理7. 图像处理8. 深度学习9. 书籍推荐&#xff08;包邮送书6本&#xff09; 本文导读 从零带你了解人工智能时代需要掌握的8大类算法&#xff0c;包括基础理论、关联规则分析、回归…

Vue 创建自定义 ref 函数

Vue 创建自定义 ref 函数 customRef customRef 用于&#xff1a;创建一个自定义的 ref 函数&#xff0c;并对其依赖项跟踪和更新触发进行显式控制。 使用 customRef 创建自定义 ref 函数 // 创建自定义 ref 函数 function myRef(value) {return customRef((track, trigger) &g…

自动曝光算法(第一讲)

序言 失业在家无事&#xff0c;想到以后换方向不做自动曝光了&#xff0c;但是自动曝光的工作经验也不能浪费了&#xff0c;准备写一个自动曝光的教学&#xff0c;留给想做自动曝光的小伙伴参考。笔者当时开发自动曝光没有按摄影的avtvevbvsv公式弄&#xff0c;而是按正确的增…

[架构之路-251/创业之路-82]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 商业智能、决策支持系统、知识管理

目录 前言&#xff1a; 一、企业信息化的结果&#xff1a;常见企业信息化软件 1.1 商业智能 - 管理层 1.1.1 什么是商业智能What 1.1.1.1 商业智能常见工具 1.1.2 为什么需要商业智能Why&#xff1f; 1.1.3 谁需要商业智能who&#xff1f; 1.1.4 商业智能在企业管理中的…

微信小程序开发(搭建)

首先去微信开发者网站下载微信开发者工具 然后打开电脑命令框wincmd 全局安装 vue-clinpm install --global vue-cli创建一个基于 mpvue-quickstart 模板的新项目vue init mpvue/mpvue-quickstart my-project安装依赖cd my-projectnpm install启动构建npm run dev 记得为vue配…

Docker dnmp 多版本php安装 php8.2

Laravel9 开发需要用到php8.1以上的版本&#xff0c;而dnmp只支持到php8.0。安装php8.2的步骤如下&#xff1a; 1. 从/services/php80目录复制一份出来&#xff0c;重命名为php82&#xff0c;extensions目录只保留 install.sh 和 install-php-extensions 这两个文件 2. 修改.en…

C++使用栈实现简易计算器(支持括号)

使用C实现&#xff0c;使用系统自带stac 支持括号处理支持小数计算支持表达式有效性检查支持多轮输入。 运行结果示例&#xff1a; 代码&#xff1a; #include <iostream> #include <stack> #include <string> using namespace std;//判断是否是数字字符 …