您的位置:首页 > 房产 > 家装 > 成都网站设计_html网站源码_青岛网站建设推广公司_域名138查询网

成都网站设计_html网站源码_青岛网站建设推广公司_域名138查询网

2024/12/27 5:01:52 来源:https://blog.csdn.net/qq_42190402/article/details/144309507  浏览:    关键词:成都网站设计_html网站源码_青岛网站建设推广公司_域名138查询网
成都网站设计_html网站源码_青岛网站建设推广公司_域名138查询网

设备作为mqtt客户端,需要保证可以ping通外网。

然后服务端为了向设备能够发起通信,设备在内网环境下需要做内网穿透。

MQTT相关

MQTT服务端要使用mosquito搭建broker,然后通信测试的时候用MQTTX。

Qos决定了消息的重发次数。

最多传递一次,没有重发和去重机制。

最少传递一次,通过ACK机制保证消息到达,但不解决重复问题。

仅传递一次,发布者发布消息后会将消息暂时保留,等到应答后才将消息清空。接收者需要对每条消息都进行应答。

 当MQTT发布与订阅使用不同的QoS时,接收消息的QoS为取两者中小的值。

发布消息的 QoS主题订阅的 QoS接收消息的 QoS
000
010
020
100
111
121
200
211
222

具有mqtt通信功能的qt程序在arm开发板上运行

        假设现在服务器部署在阿里云ECS,然后设备连接的是wifi。

        企业路由器都会配置为私有网络(内网),并使用网络地址转换(NAT)技术来隐藏内网设备的真实IP地址。这意味着内网设备默认是无法被外网直接访问的。外网用户只能看到路由器的公网IP地址,无法直接访问连接到路由器的具体设备

openssl

        mqtt需要openssl库。在内核的make menuconfig里要选好。

开发环境MQTT环境移植

        把QT官方在github上提供的封装的MQTT源码拉下来。

        注意 开发环境和ARM环境的MQTT版本要一致

        下载好后打开qtmqtt.pro。如果没有perl可能需要安装perl,用于源代码预处理的某些过程。

        编译mqtt源码一般提示找不到头文件,改成绝对路径。

 参考:

嵌入式Linux下 QT移植mqtt的方法(包含arm端)-腾讯云开发者社区-腾讯云

​​​​​​Linux 和 arm 下qt 移植 mqtt_arm linux qt5.11 使用mqtt-CSDN博客

ARM平台MQTT环境移植

        ARM平台的MQTT版本和开发环境的MQTT版本要一致。

Modbus协议怎么分帧

        Modbus没有停止位,是通过 1.5个字符时间分帧字符时间要根据波特率算

        串口有一个空闲中断,串口接收数据后出现持续10bit的高电平将触发空闲中断。

        通常使用 DMA+串口空闲中断的方式,解决不定长数据帧的传输问题。

        DMA主要解决来一个字节就触发一次中断的情况,如果一个数据帧有多个字节,来个字节中断一次太频繁。

        使用DMA直接把数据写到存储的地址,然后高电平持续时间触发空闲中断

串口中断的触发条件

接收数据寄存器非空中断(RXNE):当接收数据寄存器非空时触发中断,这意味着每当串口接收到一个字节的数据时,就会触发一次中断。这种情况下,中断的触发是基于每个接收到的字节(即Bit位)的。

发送数据寄存器空中断(TXE):当发送数据寄存器为空时触发中断,这通常用于指示可以发送下一个字节的数据。

发送完成中断(TC):当整个数据帧发送完成时触发中断

空闲中断(IDLE):当串口接收到一帧数据后,在数据总线上保持一段时间的空闲状态时触发中断。这通常用于指示一帧数据的接收完成,而不是基于单个字节的接收。

有数组a[ ],请问 a++和&a[0]++的区别

        数组名是一个地址,地址是常量指针,地址自增是不合法的

        a[0] 取地址得到的是普通指针,指针自增指向下一个元素位,这里是a[1]。

那如果对数组名取地址再自增呢

        例如有 a[ ], &a+1是先得到指向整个数组的指针,然后指针自增,自增的跨度是整个数组的元素。比如a[5],定义一个*p,然后 p = &a+1,此时p指向a[6],未定义的区域。

单片机最小系统包含哪些

        CPU、电源、复位、时钟、程序加载、启动配置

strcpy和memcpy的区别

        strcpy只能复制字符,碰到\0结束。

        memcpy可以复制任意内容,复制长度由参数决定。

写一个标准宏MIN

#define MIN(a, b) ((a) < (b) ? (a) : (b))

操作系统中任务调度的工作原理,普通操作系统和实时的区别

任务调度的工作原理:

        任务就绪队列

        调度算法(优先级调度、时间片轮转、多级反馈队列)

        上下文切换

        抢占与非抢占

普通操作系统和实时操作系统的区别:

        普通操作系统一般用轮转、多级反馈队列。

多级反馈队列包含多个优先级队列,根据进程状态动态调整优先级

嵌入式系统中常用的协议有哪些

        IIC,半双工,时钟线、数据线,多主多从。

        SPI,全双工,MISO、MOSI,一主多从。

        USART,支持同步串口和异步串口,异步串口双方使用各自的时钟,同步有同步时钟。

        RS485/RS232,RS485是差分信号,有信号差是零,没信号差是1;RS232是正负15V信号。

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com