项目学习总结: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.服务端

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

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

相关推荐
Codigger官方3 小时前
Linux 基金会牵头成立 React 基金会:前端开源生态迎来里程碑式变革
linux·前端·react.js
爱吃喵的鲤鱼3 小时前
仿mudou——Connection模块(连接管理)
linux·运维·服务器·开发语言·网络·c++
递归不收敛3 小时前
吴恩达机器学习课程(PyTorch适配)学习笔记:1.3 特征工程与模型优化
pytorch·学习·机器学习
CoderIsArt3 小时前
SQLite架构
数据库·sqlite
让子弹飞023 小时前
永久解决ubuntu网络连接问题
linux·运维·ubuntu
充哥单片机设计3 小时前
【STM32项目开源】基于STM32的智能家居安防系统
stm32·嵌入式硬件·智能家居
爱吃小胖橘3 小时前
Unity网络开发--超文本传输协议Http(1)
开发语言·网络·网络协议·http·c#·游戏引擎
lixora3 小时前
银河麒麟高级服务器操作系统(ADM64 版)V10(SP1)搭建 Oracle 19c RAC
数据库
郝学胜-神的一滴3 小时前
使用Linux的read和write系统函数操作文件
linux·服务器·开发语言·数据库·c++·程序人生·软件工程