RT-Thread umqtt的使用及报错处理

近期做项目用到RT-Thread的mqtt软件包,中间遇到一些问题写一篇文章给大家做个分享。

目前RT-Thread的mqtt软件包还是不少的,不过使用比较多的是pahomqtt、mymqtt、kawaii-mqtt、umqtt这几个,简单分析下这几个软件包

 

pahomqtt:是在 Eclipse paho-mqtt 源码包的基础上设计的一套 MQTT 客户端程序,据网上一些使用过的朋友分享这个软件包存在一些缺陷和问题,有朋友想详细了解的话可以百度搜索,本次就不详细分享了。

mymqtt:这个软件包是从整体来看使用过程中问题比较少的软件包,如果想安稳一点可以选择这个。

kawaii-mqtt:相对轻量级,资源占用少。

umqtt:是RT-Thread官方提供的软件包,是文档资料最全的一个,想详细了解可以参考RT-Thread官网文档,也是本次使用的软件包,不过这个软件包存在2个报错需要我们自己去处理一下,后面会分享处理的步骤

总结:

pahomqtt可以理解为基础版本,一些功能不支持。

mymqtt、kawaii-mqtt和umqtt是在pahomqtt之上优化来的,mymqtt、kawaii-mqtt目前看都没存在什么问题,另外kawaii-mqtt相对轻量级。umqtt优势在官方文档资料较多。

 

 好,下面开始正式分享怎么使用umqtt软件包,本次是用ENV工具添加软件包,也可以添加后再自行移植到开发的工程,我一般使用都是两个工程,一个env工程,另外一个开发工程,env工程只进行配置添加组件和软件包,添加完成之后再移植到开发工程中,这样稳定性会高一点(个人习惯,大家可以根据自己的习惯来)。

开干!开干!!!

 

1、使用ENV添加umqtt软件包

 ①在env中输入命令menuconfig后按回车打开配置界面

②按下键切换到第三项在线软件包,按回车进入

 ③选中第一项IOT - internet of things,回车进入

 ④下键移动到第三项umqtt,按空格键打开软件包,出现*标识就代表打开了

 ⑤回车进入umqtt配置,基本所有选项保持默认即可,需要例程参考的话就打开选项

 下拉到最后一项,版本记得选最新版本,使用v1.0.0的话会有10个报错,并且是很基础性的错误,这个版本感觉像是没测试过的

⑥此时软件包添加配置完成,一路Exit退出,选择YES保存即可

 ⑦退出配置界面后输入pkgs --update更新软件包,再发送scons --target=iar生成工程(使用MDK的话发送scons --target=mdk5)

 ⑧此时软件包已添加完成,可以看到packages目录下已经有umqtt的软件包文件

 2、工程编译报错处理

打开工程编译会发现有2个错误

①将client->user_handler = params;修改为client->user_handler = *(umqtt_user_callback *)params;

 ②将umqtt_control(m_umqtt_client, UMQTT_CMD_EVT_CB, user_callback);修改为umqtt_control(m_umqtt_client, UMQTT_CMD_EVT_CB, (void *)user_callback);

 再编译,报错解决

 

 

本次分享就到这里结束了,希望能帮助到大家,如果哪位朋友有好的建议或者内容错误指正的地方欢迎大家联系我!

最后,希望喜欢老Man的朋友可以点点关注,后续有其他内容会持续分享给大家!

 

参考:

RT-Thread官网文档:https://www.rt-thread.org/

 

posted @ 2023-09-08 12:31  嵌入式老Man  阅读(1037)  评论(0)    收藏  举报