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

监控系统4 - LVGL | sqlite3 | mqtt

目录

一、LVGL

1. 图形设计生成的代码解析

2. 结合mylvgl

1. 拼接显示内容

2. 设置定时器

3. 主函数与线程

3. Makefile

二、gdb调试

1. gdb移植

2. gdb命令

3. 一般调试运行

4. PC端与arm端结合调试

1. arm端

2. PC端

三、sqlite移植

1.  解压文件

2. 生成makefile

 1. 新建文件夹

2. 指定Makefile生成路径

3. 执行configure生成makefile

3. 设置Makefile

1. Makefile

2. 编译

3. 放置文件

4. 转移文件

1. 放置bin文件

2. 放置库文件

5. 测试

1. 测试代码

2. Makefile

3. 编译

4. 转移生成文件

5. 板子内测时

四、mqtt

1. 概念

2. 特点

3. 工作原理

1. 定义

2. 组成

3. 流程

​编辑

4. 报文组成

5. 心跳包

1. 概念

2. 原理

3. 实现方式

1. 应用层实现​

2. 传输层实现​

6. 操作命令

7. OneNet

1. 创建产品

2. 添加物模型

3. 添加设备

五、补充

1. 屏幕熄灭屏设置

2. 编译器阻塞

3. 只读问题

1. 修改PC端配置

2. 修改arm端配置


一、LVGL

1. 图形设计生成的代码解析

图表数据部分:

生成一个定时器,通过定时器原理经过一段时间后触发事件

2. 结合mylvgl

通过线程显示动态数据

        一个线程负责​​数据生成/采集​​,另一个线程负责​​图形渲染和显示​​

        两者通过​​线程间通信​​(如共享内存、消息队列)传递数据

图形之间不可跨线程操作,使用回调函数调用timer_call操作

1. 拼接显示内容

        参数名himi+随机值count
        添加出错处理防止段错误

2. 设置定时器

        经过1000ms时间执行 timer_call 函数,实现参数周期变化 

3. 主函数与线程

        线程1实现初始化屏幕并执行显示函数
        线程2实现传递显示的随机值
        图形之间不可跨线程操作

3. Makefile

添加允许编译pthread函数        -lpthread

编译执行实现表格内参数动态变化

二、gdb调试

1. gdb移植

1. echo $PATH查看地址

2. 将gdbsercer向根文件目录复制移植到板子上


3. 然后PC端可使用arm-linux-gnueabihf-gbd调用

2. gdb命令

指令释义执行

r

run直接运行代码
btwhere显式调用栈
bbreak设置断点
nnext运行下一步,步过,运行主函数
ssetp运行下一步,步入,有函数时进入函数内部(自定义函数)

p

print显示变量和指针
displayprint一直显示变量
ccontinue跳出循环
return返回调用处

        b  170  main.c        在main.c函数中第170设置断点
        b  myfun                 在整个工程中的 myfun 函数开始的地方设置断点

        display  a                一直显示变量 a

        set  print  elements 300        设置显示字符串长度

        info breakpoints                    查看有几个断点

        delete 1                                关闭断点

3. 一般调试运行

1. gcc -g -lpthread 1.c                       
        编辑Makefile添加 -g 选项使允许 gdb 调试

2. gdb a.out
        开始gdb调试生成后的 .c 文件

3. b fun.c :36
        设置断点,使运行到这个位置,程序暂停

4. r
        运行整个代码开始调试

5. n
        单步执行下一步

6. p
        使用 p 命令查看变量或指针等数据

4. PC端与arm端结合调试

1. arm端

gdbserver :2000 ./a.out

        指定空闲端口2000,或者写成192.168.1.100:2000
                表示允许192.168.1.100:2000 设备的ip,port 进行连接,任意主机都可以链接进来。

2. PC端

1. 加入 -g 选项编译测试程序

2. arm-linux-gdb  ./a.oout
        使用gdb编译器进入调试

3. (gdb)target remote 192.168.1.100:2000
        PC机从网络访问端口为2000板子

4. 开始调试步骤

5. 额外选项
        set sysroot /home/linux/rootfs

三、sqlite移植

1.  解压文件

        将 sqlite3.tar 文件在rootfs目录下解压并进入
        内部的 .am 和 .in 文件是核心文件不能使用

        

2. 生成makefile

 1. 新建文件夹

后续安装的内容在该文件夹下

mkdir sqlite3_install

2. 指定Makefile生成路径

./configure --host=arm-linux-gnueabihf-gcc --prefix=/home/linux/nfs/imx6/rootfs/sqlite-3.7.3/sqlite_install

        CC=arm-linux-gnueabihf-gcc        指定编译器

        --host          指定目标平台为ARM架构运行linux系统

        --prefix        指定编译后的库和可执行文件的生成路径

3. 执行configure生成makefile

3. 设置Makefile

1. Makefile

进入指定目录下的Makefile进行修改

vi Makefile

2. 编译

        make进行编译生成

        确保编译器为 arm-linux-gnueabihf-gcc

3. 放置文件

将生成的文件放置到设置的目标目录下

make install

4. 转移文件

1. 放置bin文件

将生成目标下的bin目录下的 sqlite3放置到开发板的 usr//lib 路径下

cp sqlite_install/bin /home/linux/nfs/imx6/rootfs/usr/bin/

2. 放置库文件

将生成目标下的lib目录下的 sqlite3放置到开发板的/lib路径下

cp sqlite_install/lib/* /home/linux/nfs/imx6/rootfs/lib

5. 测试

1. 测试代码

2. Makefile

3. 编译

        指定专用的名字

make -f Makefile_sqlite

4. 转移生成文件

cp a.out ./imx6/rootfs

5. 板子内测时

四、mqtt

1. 概念

        MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输协议)
        是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上由IBM在1999年发布。
        最高层应用层协议

2. 特点

        MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

        MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。
        MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如
        机器与机器(M2M)通信和物联网(loT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

3. 工作原理

发布 - 订阅模型

1. 定义

        该模型旨在解耦消息的发送者(发布者)和接收者(订阅者),二者不直接通信,而是通过一个中间代理(Broker)进行消息路由。

2. 组成

发布者            ​(Publish)

消息的生产者。负责产生数据并将其发布到特定的​​主题​​上。

​代理                (Broker)​

消息代理服务器。是整个系统的中枢,负责接收发布者的消息,并根据主题将其分发给所有对应的订阅者。

​订阅者          ​(Subscribe)

消息的消费者。向 Broker 订阅它感兴趣的​​主题​​,然后接收来自这些主题的消息。

3. 流程

1. 发布:发布者将消息发送到 Broker,并指明消息所属的主题(Topic)
2. 路由:Broker 接收到消息后,查看消息的主题
3. 订阅:Broker 将消息转发给所有订阅了该主题的订阅者

4. 报文组成

固定报头

可变报头

5. 心跳包

1. 概念

        心跳包(Heartbeat Packet)是网络通信中一种​​维持连接活性​​的机制,尤其对于需要​​长时间保持连接​​的应用至关重要。
        确保服务器和客户端同时在线

2. 原理

        通信的一方(通常是客户端)按照​​固定的时间间隔​​,向另一方(通常是服务器)发送一个包含特定信息的小数据包。这个数据包可以非常小,有时甚至是一个空包或只包含包头

3. 实现方式

1. 应用层实现​

        由应用程序自身通过定时器,主动、定期地发送自定义结构的心跳包。
        这种方式允许开发者根据具体需求灵活调整心跳间隔(例如设置为30-40秒),并能快速响应网络异常。

2. 传输层实现​

        TCP协议本身提供了一个名为 ​​SO_KEEPALIVE​​ 的选项。
        开启后,操作系统内核会在连接空闲一段时间后自动发送探测包。虽然设置方便,但其默认检测周期过长,难以满足实时性要求高的应用需求

6. 操作命令

7. OneNet

物联网开放平台文档

1. 创建产品

产品开发 - 创建产品

2. 添加物模型

3. 添加设备

五、补充

1. 屏幕熄灭屏设置

i:忽略大小写

屏幕不熄灭设置为0

编译后zImage复制到tftpboot

2. 编译器阻塞

vi编辑器下

ctrl +   s        阻塞vi

ctrl +   q        解决

3. 只读问题

1. 修改PC端配置

2. 修改arm端配置

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.1.200:/home/linux/nfs/imx6/rootfs,proto=tcp rw ip=192.168.1.100:192.168.1.200:192.168.1.1:255.255.255.0::eth:off'

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

相关文章:

  • Google 智能体设计模式:资源感知优化
  • 天猫淘宝优惠券网站怎么做婚纱摄影图片
  • 10分钟在Windows11下Ubuntu内安装docker-Version28.51
  • 什么是网站源码域名可以同时做邮箱和网站么
  • 建设一个机械公司网站多少钱网站 微信
  • 任务悬赏小程序深度细分分析:非技术视角下的运营逻辑拆解
  • 用什么软件做网站模板潍坊行业网站
  • 什么网站最好温州谷歌优化排名公司
  • [Linux系统编程——Lesson8.进程地址空间和区域划分]
  • ModBus-TCP学习
  • 河北专业网站建设公司推荐红岗网站建设
  • ReactNative开发实战——ReactNative 开发中的图标管理方案:基于 Iconfont 的自定义图标库实现
  • 哪些公司提供微信做网站服务seo快速优化文章排名
  • 网站空间怎么弄百度产品推广
  • 做网站的ui框架大型网站架设需要考虑哪些问题
  • Docker网络全方位解析
  • 网站建设服务商都有哪些动漫设计中专学校
  • JAVA:Spring Boot 集成 FFmpeg 实现多媒体处理
  • 青岛可以做网站的公司家用电器销售的网站开发
  • pandas、numpy 和 matplotlib 三个数据科学常用库的核心指令整理
  • 【课堂笔记】稳定性和反向传播误差
  • 网站刷链接怎么做ui设计师是吃青春饭吗
  • Vue3大文件上传终极解决方案
  • 球极平面投影
  • Linux进程信号 --- 信号的产生方式、信号的保存
  • 织梦建站教程全集以net结尾的网站
  • C语言入门(九):二维数组的介绍
  • 深圳网站设计公司的seo优化的常用手法
  • 西安三桥网站建设重庆市建设考试报名网站
  • Unicode编码中的零宽空格0x200B