当前位置: 首页 > news >正文

项目学习总结:LVGL图形参数动态变化、开发板的GDB调试、sqlite3移植、MQTT协议、心跳包

一、如何可以使参数动态变化(多线程操作)

(一)创建使图形显示线程:用来显示图形

        1.在显示线程加入:lv_timer_create(timer_call,1000,NULL);

        2.回调函数的创建:

   if(guider_ui.screen_table_1 != NULL)
{
lv_table_set_cell_value(guider_ui.screen_table_1, 1, 1, buf);        //动态参数显示在表格指定位子
}

(二)创建图形内参数变化线程:采集到的传感器动态数据

二、GDB调试

(一)配置设置

        1.如果板子的编译工具链中存在gdbserver,将其复制到挂载的rootfs/bin目录下

        2.如果没有在官网下载并移植到rootfs/bin目录下

(二)调试步骤

        1.pc端Makefile编译中加入-g选项

        2.arm端gdbserver :2000 ./demo

        3.pc端用对于gdb编译工具 ./demo

        4.pc端(gdb):target remote 192.168.1.100:2000使程序远端开始调试

(三)调试命令

        0:where/bt:查看栈结构,函数调用关系

        1.b+行号(函数名):设置断点

        2.n:(步过)运行完此行

        3.s:(步入)跟踪进入此函数

        4.display/p:查看变量

        5.info breakpoints:查看断点

        6.delete:删除所有断点

        7.c/r:代码运行

        8.return:返回函数调用处

三、find ./ -iname 'vt.c'                //查找指定文件

四、sqlite3移植到开发板

(一)sqlite官网下载压缩包

(二)复制到对应目录,解压文件

(三)进入解压后的sqlite文件

(四)创建新的文件夹

(五)指定编译器和主机:./configure --host=arm-linux-gnueabihf --prefix=/home/linux/nfs/imx6/rootfs/sqlite-3.7.3/sqlite_install

(六)此时生成了Makefile:修改Makefile文件

(七)make install:在新建的目录下生成需要移植的文件

(八)将sqlite3复制到 挂载目录的usr/bin下

(九)将新建的文件夹下的bin和lib文件里面的内容复制到挂载目录下的bin和lib里面

(十)写makefile        //指定生成的lib和头文件位置

(十一)检测是否移植成功:在开发板创建数据库

五、MQTT协议

(一)消息队列遥测传输协议(基于TCP/IP协议):发布方给服务器的内容,服务器可以选择先存起来,等订阅方需要时可以直接给予。

(二)工作方式:发布者(客户端)-->代理(服务器)-->订阅者(客户端)

(三)三中消息发布的服务质量(QoS)

        1.(0):只发送一次。智能设备推送消息时未联网,推送过去未收到,再次联网也不会收到

        2.(1):确保消息到达,消息可能重复发送(无订阅者丢弃)

        3.(2):确保消息到达一次。在一些要求比较严格的计费系统中,可以使用此级别。(无订阅者,服务器会存储数据(有限)。发布给订阅者后会告知服务端)

        4.预留(11)

(四)消息结构

        1.主题(topic):订阅者订阅该主题,就会接收到该主题的消息内容

        2.负载(payload):可以理解为消息的内容,是指订阅者具体要使用的内容。

(五)数据报结构(2字节)

        1.固定头(4~7bit):MQTT控制报文的类型,报文的数据流向

       2.标志位(0~3bit):用于指定控制报文类型的标志位(QoS)

        2.可变头和消息体(剩余bit位)

(六)优点

        1.极简协议,开销小:固定头部最小仅2字节,消息载荷紧凑,无冗余信息。

        2.发布/订阅模式,解耦彻底:消息发布者和订阅者不需要知道对方的存在,只需与代理通信。

        3.支持不同服务质量(QoS)

        4.具备遗言消息:客户端可预设一个“遗言”主题和消息。当客户端异常断开时,代理会自动发布此消息。

六、心跳包

(一)作用:维持客户端与服务器连接,并且检测连接的健康状态

        1.检测连接是否断开:网络环境复杂,客户端可能会因为网络异常、程序崩溃、机器断电等原因“非正常”断开。服务器需要通过心跳来及时检测到这些“僵尸连接”并将其清理,释放资源。

        2.维持连接不断开:许多网络设备(如NAT路由器、防火墙)会定期清理不活跃的连接映射表(NAT表老化)。如果一个连接长时间没有数据交互,就会被这些设备主动断开。心跳包可以“保活”连接,防止被中间设备误杀。

        3.感知网络质量:通过计算心跳包往返时间,可以间接评估网络的延迟和稳定性。

(二)工作机制)(客户端与服务端建立TCP长连接,连接的空闲期)

        1.客户端

                ①间隔一定时间(30~60s)向服务端发送心跳包

                ②固定时间内等待服务端发送的回应心跳包

                ③判定连接是否断开:固定时间内没接收到服务端的回应表示连接断开

        2.服务端

                ①等待客户端心跳包,收到立刻回应

                ②未收到(设定超时机制,超时断开即可)

http://www.dtcms.com/a/466730.html

相关文章:

  • 统一高效图像生成与编辑!百度新加坡国立提出Query-Kontext,多项任务“反杀”专用模型
  • 网站建设要那些东西适合个人开店的外贸平台
  • window安装wsl
  • 命题逻辑基础,形式系统,定理证明(二)
  • 如何利用数字源表进行纳米材料电特性表征?
  • 网络层协议之ICMP协议
  • 怎样做自己的网站钻钱宁波seo怎么选
  • skynet debug_console控制台中debug指令使用
  • 做棋盘游戏辅助的网站python和php做网站
  • 如何查看局域网内IP冲突问题?如何查看局域网IP环绕问题?arp -a命令如何使用?
  • 网站建设成都市南京做网站公司哪家好
  • 做电影视频网站赚钱嘛网站制作公司杭州
  • 建站平台哪个最好网站建设需要什么技术
  • 网页制作与网站建设实战大全pdf做网站的分辨率要多大
  • 主动学习:用“聪明提问”提升模型效率的迭代艺术
  • 数据链路层协议之MSTP协议
  • Debezium日常分享系列之:Debezium 3.3.0.Final发布
  • 网站的换肤功能怎么做哪个网站可以做验证码兼职
  • wordpress建站要钱吗中小型网站建设价格
  • gitee中的一些开源项目整理20251010
  • [JS]面试八股文
  • Linux中的进程监控,top界面解析
  • 构建一个属于组件的组件库
  • 【Linux笔记】网络部分——socket 编程 TCP实现多台虚拟机使用指令访问云服务器
  • 4.5 IP多播 (答案见原书 P208)
  • 照片素材库网站免费免费客户管理软件排行
  • 网站建站建设怀化最新消息今天
  • 社区类网站开发实践辽宁城乡建设厅网站
  • 花生壳建设网站线上运营的5个步骤
  • C语言 ——— 文件操作的核心概念与函数使用