《mqtt后台服务及接口函数说明.doc》由会员分享,可在线阅读,更多相关《mqtt后台服务及接口函数说明.doc(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、mqtt 服务及接口函数说明1、概述 AiMaster,AiMaker 系列可编程产品采用系统服务方式支持 mqtt 协议,开发者只需调用接口 函数,即可零代码实现 mqtt 的发布、订阅功能。通讯过程中的网络错误检测、自动重连, 均由后台线程自动完成。系统会自动启动 mqtt 后台服务,以服务索引编号 07 的方式来使用,mqtt 接口函数通过 服务索引来实现启动 mqtt 服务、发布、订阅、接收发布等功能。mqtt 函数表: 函数库:mqtt 启动 mqtt 服务并连接到指定的 mqtt 服务器:mqtt.startmqtt 设置订阅主题函数:mqtt.settopic 取消订阅函数:mq
2、tt.unsubs 向服务器发布数据函数:mqtt.publish 等待服务器发布数据消息函数:mqtt.waitpublish 读取服务器发布数据消息函数:mqtt.readpublish发布数据的简单示例发布数据的简单示例: 只需 2 行代码即可实现发布功能。 启动 mqtt 服务 0,连接 mqtt 服务器 192.168.192.11:1883,接收超时为 0。mqtt 客户端 ID 为 88888。 mqtt.startmqtt(0,“192.168.192.11“,1883,20,1000,“888888“,“user1“,“pwd1“,0)使用 mqtt 服务 0 向 mqtt
3、服务器的 hello 主题,发送 test mqtt 字符串。 mqtt.publish(0,“hello “,“test mqtt“,0)订阅、接收服务器发布的简单示例:订阅、接收服务器发布的简单示例: 只需 3 行代码实现接收发布。 下行代码一直等待 mqtt 服务器发布数据。 mqtt.waitpublish(-1); -读取服务器的发布数据 i1,s1,s2=mqtt.readpublish() print(string.format(“rn 索引:%d,主题:%s,数据:%s“,i1,s1,s2); -通知 mqtt 后台服务,完成本次数据接收操作。 mqtt.responsepub
4、lish();2、与 mqtt 服务器建立连接启动 mqtt 服务函数 startmqtt,此函数启动指定编号的 mqtt 服务,然后用指定的客户端 ID,用户名、密码连接 mqtt 服务器-参数 1:mqtt 客户端服务索引,有效值 07,共支持 8 个 mqtt 服务,可以同时建立 8 个 mqtt client 连接。 -参数 2:远程 ip,mqtt 服务器 IP -参数 3:远程端口,mqtt 服务器端口 -参数 4:接收超时,此连接只向服务器发布数据,而不接收服务器的发布,所以接收超时 设置为 0。 -参数 5:重试连接间隔,如果与服务器中断连接,后台服务在暂停此间隔后,重试连接。
5、 -参数 6:客户端 ID,此 mqtt 的客户端标识。 -参数 7:用户名 -参数 8:密码 -参数 9:连接标志,默认为 0。 -返回:如果启动成功返回大于 0 的值,否则返回小于、等于 0 的值。下行代码作用是:启用编号 0 的 mqtt 服务,并且与 192.168.192.11:1883 的 mqtt 服务器建 立连接。接收超时为 0 秒(只用于向服务器单向发布数据时设置为 0) ,重试连接间隔是 1 秒。mqtt 客户端 ID 为 888888,用户名为 user,密码为 pwd1。 mqtt.startmqtt(0,“192.168.192.11“,1883,20,1000,“8
6、88888“,“user1“,“pwd1“,0)3、发布数据-向发布数据函数 publish -参数 1:mqtt 客户端服务索引。必须是已经通过 startmqtt 函数正确启动的索引。 -参数 2:发布的主题,为 ASCII 码字符串格式。 -参数 3:发布的数据,为 ASCII 码字符串格式。 -返回:如果返回值大于 0,为发送成功,否则为发送失败。下行代码的含义是:使用 0 号 mqtt 服务,向 demotopic 主题发布字符串 “aabb=12342;ssss=22132” mqtt.publish(0,“demotopic“,“aabb=12342;ssss=22132“,0)
7、4、设置订阅主题首先设置待订阅的主题,在 startmqtt 函数启动 mqtt 客户端,并与服务器建立连接后,会 自动订阅此主题,订阅过程无需用户干预。-设置订阅主题函数 settopic -参数 1:mqtt 客户端服务索引 -参数 2:订阅主题组索引,有效值为 07。每个 mqtt 客户端服务可同时支持 8 个订阅主 题,对应索引 07。 -参数 3:订阅的主题,为 ASCII 码字符串格式。 -参数 4:保留参数,默认为 0 下行代码为 mqtt 客户端服务 1,设置一个订阅主题 topicrec,使用主题的 0 号索引。 mqtt.settopic(1,0,“topicrec“,0)
8、5、响应、读取 mqtt 服务器发布的数据如果需要接收来自 mqtt 服务器的发布数据,则必须首先使用 settopic 来订阅待接收数据的 主题。采用消息方式响应来自服务器发布数据。首先调用 waitpublish 函数等待服务器发布数据。 waitpublish 会阻塞线程,当接收到来自 mqtt 服务器的发布数据时,waitpublish 立即返回 并执行其后面的代码。任意一个 mqtt 客户端收到了服务器下发的发布数据时,首先锁定数据,然后触发 waitpublish 函数,执行后续代码。下行代码一直等待 mqtt 服务器发布数据。 mqtt.waitpublish(-1); -在接收
9、到发布数据后,执行 readpublish 函数,读取数据。 -读取服务器发布数据函数 readpublish -返回值 1:mqtt 服务索引。 -返回值 2:接收到的主题,为 ASCII 格式。 -返回值 3:接收到的数据,为 ASCII 格式。 i1,s1,s2=mqtt.readpublish() print(string.format(“rn 索引:%d,主题:%s,数据:%s“,i1,s1,s2); -通知 mqtt 后台服务,完成本次数据接收操作。如果不执行 responsepublish 函数,将导 致后台一直锁定为当前的数据,而无法处理新到数据。 mqtt.responsepublish();6、取消订阅取消订阅函数 unsubs -参数 1:mqtt 客户端服务索引 -参数 2:待取消的订阅主题,为 ASCII 格式。 -参数 3:0,保留参数。 -返回:如果成功返回大于 0 的值,否则返回 0 或小于 0 的值。 mqtt.unsubs(1,“testtop9“,0)
限制150内