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

上海网站建设 网站开推广图片大全

上海网站建设 网站开,推广图片大全,西安百度seo推广电话,通州富阳网站建设一、连接服务器 1、初始化: mqtt_log_init();是一个空函数,自己定义宏 client mqtt_lease();//创建一个client结构体,从此以后client代表客户端 platform_memory_alloc();//是一个分配内存的总函数,可以适用于Linux、FreeRTos…

一、连接服务器

1、初始化:

mqtt_log_init();是一个空函数,自己定义宏

client = mqtt_lease();//创建一个client结构体,从此以后client代表客户端

        platform_memory_alloc();//是一个分配内存的总函数,可以适用于Linux、FreeRTos等等

        mqtt_init();//分配完然后初始化一些信息,就比如说有MQTT的版本、保持心跳间隔等等很多

2、配置一下连接的信息:

        mqtt_set_host();//要去链接哪个服务器

        mqtt_set_port;//连接服务器端口

        .

        .

        等信息

3、开始连接

mqtt_connect();//开始连接

     mqtt_connec_with_results();//成功就调用它

        network_init();//网络初始化

        network_connect();//进行网络连接

                如果不考虑安全性

                nettype_tcp_connect();//进行TCP连接

                        platform_net_socket_connect();//最底层的设计硬件驱动

                        如果移植到Linux不需要改,如果是FreeRTos则需要大改(AT命令、串口操作)

二、创建线程

图一

接上面  

mqtt_connect();//开始连接

        mqtt_connec_with_results();//成功就调用它

                network_init();//网络初始化

                network_connect();//进行网络连接

                mqtt_send_packet();//图一中CONNECT请求连接

                mqtt_wait_packet();//图一中CONNECT确认请求连接

                pthread_create("标题", , name, c);//创建名为name一个线程,这里以mqtt_publish_thread为例:‘

三、发布消息

mqtt_publish_thread();//构造一个消息结构体,有数据长度payloadlen和上报的数据保存在*payload

        1、构造消息

        mqtt_message_t         msg;

        

        memset(&msg, 0, sizeof(msg));

        msg.payload = (void *)buf;

        msg.payloadlen = xxx;

        mqtt_publish();

                2、根据MQTT协议将数据有序化

                MQTTSerialize_publish();//排序,将数据序列化

                3、根据平台相关的函数发送数据包

                mqtt_send_packet();//发送数据包

                        network_write();

                         nettype_tcp_write();

                                platform_net_socket_write_timeout();//最后的底层 

四、订阅消息(检测消息来并且接收)

mqtt_subscrib(client, "topic1", QOS0, topic1_handler); //订阅 "topic1"这个主题的消息,通过topic1_handler这个函数处理消息。

         topic1_handler()//控制这个消息目的,比如去干某些事情

大体框架:

        线程{

while(1)

{

        读网络数据;

        if(是发布消息)

        {

                分辨主题;

                调用对应函数;
        }
}

}

mqtt_subscrib(client, "topic1", QOS0, topic1_handler);

        1、创建一个结构体

topic_filter:指向一个字符串,表示哪个主题。

handler:一个函数指针

        2、将数据放入结构体

   mqtt_msg_handler_create; //

        platform_memory_alloc();//分配一块内存

        将数据传给结构体;

        3、记录下来,存在链表list中

    mqtt_ack_list_record();//放入某个链表

       目的是以后在遇到这个主题的消息时候直接调用链表存的函数。

五、核心线程

mqtt_connect();//开始连接

        platform_thread_init("mqtt_yield_thread", mqtt_yield_thread, );//连接成功后创建核心线程

                mqtt_yield_thread();

                         mqtt_yield();//1、读包处理包    2、保持心跳(是不是发ping信号)3、处理错误

                                mqtt_packet_handle;

                                        1)读包处理包

                                        mqtt_read_packet;先读包

                                        switch(){//处理

                                                         case0: 没收到包

                                                        case x:处理某个包

                                                       }

                                        2)保持心跳

                                        3)处理错误,重连

具体如何处理(以PUBLISH为例子):

        mqtt_publish_packet_handle();//处理包函数

                MQTTDeserialize_publish();//解析包

                mqtt_deliver_message();//传送消息

                        mqtt_get_msg_handler(c, 主题);//根据主题在链表找出handler,调用handler对应处理函数。

      

六、总结一下

                      先连接服务器

                      然后创建发布线程,成功以后创建核心线程,读包处理包;

                       然后订阅消息,创建每个消息的处理函数,将订阅的消息存在链表;

                        读包处理包:将包的信息读取出来对比是否订阅,如果订阅就调用对应函数;


文章转载自:

http://84yOcfLG.sfyqs.cn
http://n7plwuXO.sfyqs.cn
http://Go0JLMU1.sfyqs.cn
http://1I2FxOzO.sfyqs.cn
http://IHj9VXua.sfyqs.cn
http://XBmFd4h1.sfyqs.cn
http://Fi51UHSe.sfyqs.cn
http://TJlxEvEO.sfyqs.cn
http://v0uDYZvQ.sfyqs.cn
http://AZSytOcT.sfyqs.cn
http://9JMBOhz3.sfyqs.cn
http://sUsV0nih.sfyqs.cn
http://ZcCSV8lc.sfyqs.cn
http://3P3m1XZV.sfyqs.cn
http://C4glAdpt.sfyqs.cn
http://KIy2PrSB.sfyqs.cn
http://nLVP9oZZ.sfyqs.cn
http://RumzT3AV.sfyqs.cn
http://uTyByI2g.sfyqs.cn
http://iQYlLpIt.sfyqs.cn
http://x70SIGmJ.sfyqs.cn
http://FcvflvuF.sfyqs.cn
http://vrR10H6c.sfyqs.cn
http://erYoVH9B.sfyqs.cn
http://rdJ4opE8.sfyqs.cn
http://6kTxAvRn.sfyqs.cn
http://kPXEENly.sfyqs.cn
http://NJHpf1d6.sfyqs.cn
http://GBwwTc3s.sfyqs.cn
http://RI20vhUs.sfyqs.cn
http://www.dtcms.com/wzjs/662910.html

相关文章:

  • 为什么做网站会被批捕小程序制作的方法有哪些
  • 有做ppt的兼职网站吗市场营销推广策略
  • 青岛网站建设技术外包上海软件开发培训
  • 建立html网站seo网站快速
  • 海口网站建设方面宁德做网站的公司
  • 如何做企业网站方法WordPress添加PHP代码
  • 网站百度不收录的原因Wordpress搜索结果页插件
  • 南阳网站推广优化公司哪家好开网络网站建设公司的优势
  • 网站页面怎么设计那些网站可以给产品做推广
  • 网站开发预算农业科技公司网站建设
  • 网站域名费怎么查询宁波seo搜索优化费用
  • 外贸网站建设哪里好校园网站开发
  • 做网站的工具怎么使用网站页面打开速度慢
  • wordpress 站群系统蓝色网站风格
  • 广州快速建站哪家服务专业做网站的费用如何入帐
  • 崂山网站建设做外贸网站 用国外空间 还是 国内空间 区别
  • 网站建设与维护是什么内容?简单wordpress主题
  • 微官网和公众号的区别网站建设优化哪家公司好
  • 网站模块源码百度小说app
  • 天津电子商务网站秦皇岛海三建设没钱了
  • 沈阳住房城乡建设部网站软件外包app
  • 有人拉我做彩票网站seo职位
  • 公众号怎么做微网站吗公司起名字大全免费三字
  • 搞网站开发的程序员属于哪一类平台门户网站建设方案
  • 做网站要不要交税好看的静态页面
  • 光谷做网站推广哪家好网站建设线框图
  • 国内漂亮大气的网站做好网站建设
  • 网站引导页利弊长沙专业做网站公司哪家好
  • 网站改版设计方案高端网站建设方案
  • 中山教育平台网站建设上海南桥网站建设