白矾是什么| 尿酸高有什么危害| 57属什么生肖| 男生的隐私长什么样| ncf什么意思| 大便带油花是什么原因| 用什么方法止咳| 山茶花是什么颜色| 菜板什么材质的好| 胎动少是什么原因| 一个雨一个亏念什么| 苦口婆心是什么意思| 咳出痰带血是什么原因| 规培证有什么用| 每天放屁多是什么原因| 暗渡陈仓是什么生肖| 奶思是什么意思| 什么身什么骨| 血管瘤是什么病严重吗| 夏天吃什么水果好| OB什么意思| 干预治疗是什么意思| 什么是毒龙| 肉桂属于什么茶| 三峡大坝什么时候建成的| 肚子疼是什么原因一阵一阵的| 尿隐血是什么问题| 什么笑什么笑| 痔核是什么样子图片| 栅栏是什么意思| 小马过河的故事告诉我们什么道理| 消化不良吃什么食物好| 吃什么能解决便秘| 囊肿长什么样子图片| 皮肤黑的人穿什么颜色的衣服好看| 为什么叫夺命大乌苏| 扁桃体肥大有什么影响| 头晕吃什么药| 拉肚子发烧是什么原因| 什么叫肺大泡| 吃什么可以来月经最快最有效| 生普属于什么茶| 阴囊湿疹用什么药效果最好| 头晕是什么引起的| b3是什么维生素| 孕晚期头晕是什么原因| 梦见掉了两颗牙齿是什么意思| 移植后吃什么水果好| 什么是高血脂| 早上空腹喝淡盐水有什么好处| 二月底是什么星座| 万字第二笔是什么| 什么是我的| 花荣的绰号是什么| 西洋参什么时候吃效果最好| 为什么喝酒后会头疼| 公务员是做什么工作的| 人流后什么叫重体力活| 肉五行属什么| 无赖不还钱最怕什么| 金鱼吃什么食物| 波罗蜜是什么意思| 单身贵族什么意思| 胃胀吃点什么药| 中国国鸟是什么鸟| np文是什么意思| 低血糖有什么危险| 孕妇缺营养吃什么补| 喆字五行属什么| 西游记是一部什么小说| 奥美拉唑有什么副作用| 切片是什么| 丞相和宰相有什么区别| ihc是什么意思| 唐氏综合症是什么原因| 地球为什么叫地球| 芦根煮水的功效是什么| 寒气和湿气有什么区别| 鸡肾炒什么配菜好吃| 正山小种是什么茶| 二级医院什么意思| 女人太瘦吃什么增肥| 细菌性阴道炎吃什么药好| 天津有什么玩的| 再生纤维素纤维是什么| 6月25日是什么日子| 经常闪腰是什么原因引起的| 经常头疼什么原因| 屁是什么气体| 尿频尿多是什么原因| 阿迪达斯和三叶草有什么区别| 降血压吃什么药| 射精是什么感觉| 是什么东西| 绿字五行属什么| 口杯是什么意思| 灰度是什么意思| 喝冰糖水有什么好处和坏处| 什么是六道轮回| 回民为什么不能吃猪肉| 花名册是什么意思| 洺字五行属什么| 藿香正气水有什么用| 翘首企盼是什么意思| 虎父无犬子什么意思| 经常放屁吃什么药好| 皮下出血点是什么原因| 蚊子不喜欢什么血型| 艾特是什么意思| 波立维是什么药| 子宫有积液是什么原因引起的| 什么长而去| 硅油是什么| 脾胃气虚吃什么中成药| 左边偏头痛什么原因| 原来是什么意思| 事无巨细是什么意思| 阴干吃什么补雌激素| ccp抗体是什么意思| 老人脚肿是什么原因引起的| 胎菊和金银花一起泡水有什么效果| 月经期头疼是什么原因| 肝主筋的筋是指什么| 血管性头痛吃什么药| 子母环是什么形状图片| 玲珑是什么意思| 心电图t波改变什么意思| 珍珠粉加蜂蜜做面膜有什么作用| 气管疼什么原因引起的| 今天股票为什么大跌| 胰腺最怕什么| 迁徙是什么意思| 母亲节送妈妈什么好| 水泡型脚气用什么药| 囟门什么时候闭合| 曹操的父亲叫什么名字| sancanal是什么牌子| 为什么腰痛| hip是什么意思| 依巴斯汀片是什么药| 为什么身上有红色的痣| 尿失禁用什么药好| 楚楚欲动是什么意思| 佩字五行属什么| 男人下面有异味什么原因| 什么的鹿角| 12月份是什么星座| 股癣用什么药膏效果最好| 日加立念什么| 心脏支架不能吃什么| 男人练臀桥有什么用| 冷面是用什么面做的| 麦字五行属什么| 喝茶有什么好处和坏处| 什么死法不痛苦| 什么可以吃| 生酮饮食是什么意思| 大便培养是检查什么的| 粘米粉可以做什么好吃的| 睡觉趴着睡什么原因| 人中黄是什么| 家里为什么有蜈蚣| 现在流行什么样的衣柜| 小儿风寒感冒吃什么药| 副乳是什么| 腿肿脚肿是什么原因引起的| 眼睛上火吃什么药| 口上长水泡是什么原因| 天蝎座男是什么性格| 金碧辉煌是什么生肖| 体温低是什么原因| 花是植物的什么器官| 生发吃什么食物好| 什么是太岁| 文雅是什么意思| 感冒喉咙痛挂什么科| 宝宝积食发烧吃什么药| 96199是什么电话| kda什么意思| kms是什么意思| 少许纤维灶是什么意思| 1994年什么命| 什么运动瘦大腿| 巩膜是什么部位| 生肖羊生什么生肖最好| 强身之道的强是什么意思| 头皮发痒用什么洗发水| 精分是什么| apple什么意思| 大公鸡衣服是什么牌子| 因应是什么意思| 脸上有痣去医院挂什么科| 什么时间吃苹果最好| 天宫是什么意思| 细菌性前列腺炎吃什么药| 产物是什么意思| 血常规是什么意思| 2月份生日是什么星座| usc是什么意思| 68年猴五行属什么| 夏天可以种什么花| noon是什么意思| 7月23日什么星座| 抽电子烟有什么危害| 古代的天花是现代的什么病| 汝窑开片是什么意思| npc是什么| 肾造瘘是什么意思| 婢女是什么意思| 为什么老是口腔溃疡| 美团外卖和美团有什么区别| 缺铁性贫血吃什么好| 喝酒后吃什么解酒最快| 为什么会突然耳鸣| 左边太阳穴疼是什么原因| 前胸后背出汗是什么原因造成的| 平字五行属什么| cdfi未见明显血流信号是什么意思| 病毒性感染是什么原因引起的| 青蒿素是什么| 便溏吃什么药| 盐酸安罗替尼胶囊主要治疗什么| 阴疽是什么病| 广东有什么烟| 小二是什么意思| 85年是什么年| 甲苯对人体有什么危害| 隆胸有什么危害和后遗症吗| aoa是什么意思| 长疖子是什么原因| 人最重要的是什么| 旗舰机是什么意思| 做梦梦到男朋友出轨了是什么意思| 小知了叫什么| 什么姿势容易怀孕| 大悲咒什么意思| 吃什么减肚子上的赘肉最快| 恭喜恭喜是什么意思| 去黄疸吃什么药| 实拍是什么意思| 出圈什么意思| 葡萄糖氯化钠注射作用是什么| 泡汤是什么意思| 什么是直接胆红素| 泡是什么意思| 为什么眼睛会肿而且痛| 稍纵即逝什么意思| 胃酸烧心吃什么药可以根治| 为什么白天尿少晚上尿多| 打狗看主人打虎看什么答案| 惊雷是什么意思| 奠是什么意思| 大姨妈是什么| 什么叫弱视| 什么药补气血效果最好| 梦见一坨屎是什么意思| 黄牌车是什么意思| 6月2日是什么星座| 吃什么水果能美白| 咳嗽痰多吃什么药| 人生百味下一句是什么| 吃什么降火| penguin是什么意思| 天龙八部是什么朝代| 百度
打印
[STM32H7]

菲律宾媒体质疑阿基诺三世政府隐瞒南海仲裁案真相

[复制链接]
3085|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
    今年的中央一号文件提出,“持续实施数字乡村发展行动,发展智慧农业”。近年来,物联网、大数据、人工智能等技术在农业领域深入应用,促进农业生产更便捷、管理更高效,智能农业监控系统。基于STM32H7S7智慧工农业控制台通过STM32H7S7嵌入式系统结合各种传感器、执行器和通信模块,实现对农田环境的实时监测、自动控制和数据传输。所需要的器件:
   4G模块:移远EC800    WiFi:EWM3080


土壤传感器可以同时测量土壤温度、土壤体积含水量和土壤电导率三项参数,通过RS485 modbus 与STM32H7S7进行通信。



   首先基于STM32H7S78-DK强大的GUI显示能力,  作为看板和控制台,实时监测农业各种参数,控规按键进行远程遥控。基于Freertos和touchGFX搭建物联网边缘控制台,通过4G或者WiFi读取传感器参数,实时显示。TouchGFX生态链工具支持全系列STM32 MCU,能够最大化发挥STM32H7RS内置的硬件图形优化器性能,并且通过“所见即所得”的开发界面,自动生成代码,让用户使用起来非常的简单且高效。TouchGFX Core提供了性能测量信号,通过与STM32CubeMX配置的GPIO同步,可以实现对渲染时间等指标的可视化。在生成器中,GPIO类的函数被用于响应这些信号。
  STM32H7S78的LTDC+DMA2D性能,100Hz以上无压力,刷800*480图片和色块仅需2ms一张,实现了更多的动画效果以及性能优化,把CPU从图形任务中释放出来,低功耗,少存储,具有更高的GUI性能,可实现平滑而丰富的图形效果。





  物接入(IoT Hub)是面向物联网领域开发者的全托管云服务,通过主流的物联网协议(如 MQTT)通讯,可以在智能设备与云端之间建立安全的双向连接,快速实现物联网项目。物接入分为设备型(原物管理)和数据型两种项目类型。设备型适用于基于设备的物联网场景;数据型适用于基于数据流的物联网场景。利用物接入来作为搭建物联网应用的第一步,支持亿级并发连接和消息数,支持海量设备与云端安全可靠的双向连接,无缝对接阿里云,华为云,或者百度天工平台和百度智能云。

框架:


物模型:物模型由一个或多个属性构成,可以用他来表示一类(或同一型号的一批)设备。基于物模型可以创建物影子。
    MQTT(Message Queuing Telemetry Transport)是一个基于二进制消息的客户端服务端架构的发布/订阅(Publish/Subscribe)模式的消息传输协议,最早由
IBM 提出的,如今已经业界通行规范,更符合机器与机器的通信(M2M)以及物联网环境(IoT)。

   MQTT 关键代码:
#include "mqtt.h"
#include "stdlib.h"
#include "string.h"

_MQTT_INFO mqtt_info;

/*******************************************************************************
* Function Name  : Mqtt_Init
* Description    : MQTT3?ê??ˉ
* Input          : keep_time   ±£??ê±??
                                   Data_Send   ·¢?í??μ÷
                                   Data_Recv   ?óê???μ÷
* Output         : None
* Return         : None
* Note                         : None
*******************************************************************************/
void Mqtt_Init(uint16_t keep_time,void (*Data_Send)(u8 *databuff, u16 len),void (*Data_Recv)(u8 *databuff, u16 len))
{
        mqtt_info.keep_live_time = keep_time;
        mqtt_info.mqtt_Data_Send = Data_Send;
        mqtt_info.mqtt_Data_Recv = Data_Recv;
}

/*******************************************************************************
* Function Name  : Mqtt_Connect
* Description    : MQTTá??ó±¨??
* Input          : client_id   ?í?§??ID
                                   usr_name   ó??§??
                                   passward   ?ü??
* Output         : None
* Return         : None
* Note                         : None
*******************************************************************************/
void Mqtt_Connect(char *client_id, char *usr_name, char *passward)
{
        int temp,Remaining_len;
        u16 Fixed_len,Variable_len,Payload_len;
        u16 client_id_len,usr_name_len,passward_len;
        uint8_t *buff;
       
        //êy?Y?o3???????
        buff = mqtt_info.TX_Buff;
       
        client_id_len = strlen(client_id);
        usr_name_len = strlen(usr_name);
        passward_len = strlen(passward);
       
        Fixed_len = 1;                                                        //á??ó±¨???D£?1ì?¨±¨í·3¤?è?Yê±?è=1
        Variable_len = 10;                                                    //á??ó±¨???D£??é±?±¨í·3¤?è=10
        Payload_len = 2 + client_id_len + 2 + usr_name_len + 2 + passward_len; //á??ó±¨???D£??o??3¤?è      
        Remaining_len = Variable_len + Payload_len;                           //ê£óà3¤?è=?é±?±¨í·3¤?è+?o??3¤?è
       
        *buff++ = MSG_MQTT_CONN;                       //1ì?¨±¨í·μú1??×??ú £o1ì?¨0x10       
       
        do{                                      //?-?·′|àí1ì?¨±¨í·?Dμ?ê£óà3¤?è×??ú£?×??úá??ù?Yê£óà×??úμ???êμ3¤?è±??ˉ
                temp = Remaining_len%128;            //ê£óà3¤?èè?óà128
                Remaining_len = Remaining_len/128;   //ê£óà3¤?èè???128
                if(Remaining_len>0)                      
                        temp |= 0x80;                    //°′D-òéòa?ó??7????         
                *buff++ = temp;         //ê£óà3¤?è×??ú????ò???êy?Y
                Fixed_len++;                             //1ì?¨±¨í·×ü3¤?è+1   
        }while(Remaining_len>0);                 //è?1?Remaining_len>0μ??°£??ù′???è??-?·
       
        *buff++ = 0x00;    //?é±?±¨í·μú1??×??ú £o1ì?¨0x00                   
        *buff++ = 0x04;    //?é±?±¨í·μú2??×??ú £o1ì?¨0x04
        *buff++ = 0x4D;           //?é±?±¨í·μú3??×??ú £o1ì?¨0x4D--M
        *buff++ = 0x51;           //?é±?±¨í·μú4??×??ú £o1ì?¨0x51--Q
        *buff++ = 0x54;           //?é±?±¨í·μú5??×??ú £o1ì?¨0x54--T
        *buff++ = 0x54;           //?é±?±¨í·μú6??×??ú £o1ì?¨0x54--T
        *buff++ = 0x04;           //?é±?±¨í·μú7??×??ú £o1ì?¨0x04,D-òé??±e
        *buff++ = 0xC2;           //?é±?±¨í·μú8??×??ú £oê1?üó??§??oí?ü??D£?é£?2?ê1ó?ò???£?2?±£á??á?°
        *buff++ = mqtt_info.keep_live_time/256;    //?é±?±¨í·μú9??×??ú £o±£??ê±????×??ú
        *buff++ = mqtt_info.keep_live_time%256;    //?é±?±¨í·μú10??×??ú£o±£??ê±????×??ú
       
        //?í?§??ID
        *buff++ = client_id_len/256;             //?í?§??ID3¤?è??×??ú
        *buff++ = client_id_len%256;             //?í?§??ID3¤?èμí×??ú
        memcpy(buff,client_id,client_id_len);    //?′???í?§??ID
        buff += client_id_len;
       
        //ó??§??     
        *buff++ = usr_name_len/256;                      //ó??§??3¤?è??×??ú
        *buff++ = usr_name_len%256;                          //ó??§??3¤?èμí×??ú
        memcpy(buff,usr_name,usr_name_len);      //?′??ó??§??       
        buff += usr_name_len;
       
        //?ü??
        *buff++ = passward_len/256;                            //?ü??3¤?è??×??ú
        *buff++ = passward_len%256;                            //?ü??3¤?èμí×??ú
        memcpy(buff,passward,passward_len);     //?′??1yà′?ü??×?′?
        buff += passward_len;

        //·¢?íêy?Y
        if(mqtt_info.mqtt_Data_Send != NULL)
                mqtt_info.mqtt_Data_Send(mqtt_info.TX_Buff,Fixed_len + Variable_len + Payload_len);
}

/*******************************************************************************
* Function Name  : Mqtt_DisConnect
* Description    : MQTT???aá??ó
* Input          : None
* Output         : None
* Return         : None
* Note                         : None
*******************************************************************************/
void Mqtt_DisConnect(void)
{
        uint8_t *buff;
       
        //êy?Y?o3???????
        buff = mqtt_info.TX_Buff;
       
        *buff++ = MSG_MQTT_DISCONN;                            //1|?ü??
        *buff++ = 0x00;                            

        //·¢?íêy?Y
        if(mqtt_info.mqtt_Data_Send != NULL)
                mqtt_info.mqtt_Data_Send(mqtt_info.TX_Buff,2);
}

/*******************************************************************************
* Function Name  : Mqtt_Ping
* Description    : MQTTD?ì?
* Input          : None
* Output         : None
* Return         : None
* Note                         : None
*******************************************************************************/
void Mqtt_Ping(void)
{
        uint8_t *buff;
       
        //êy?Y?o3???????
        buff = mqtt_info.TX_Buff;
       
        *buff++ = MSG_MQTT_PING;                            //1|?ü??
        *buff++ = 0x00;                            

        //·¢?íêy?Y
        if(mqtt_info.mqtt_Data_Send != NULL)
                mqtt_info.mqtt_Data_Send(mqtt_info.TX_Buff,2);
}

/*******************************************************************************
* Function Name  : Mqtt_PingAck
* Description    : MQTTD?ì?ó|′e,·t????μ÷ó?
* Input          : None
* Output         : None
* Return         : None
* Note                         : None
*******************************************************************************/
void Mqtt_PingAck(void)
{
        uint8_t *buff;
       
        //êy?Y?o3???????
        buff = mqtt_info.TX_Buff;
       
        *buff++ = MSG_MQTT_PING_ACK;                            //1|?ü??
        *buff++ = 0x00;                          

        //·¢?íêy?Y
        if(mqtt_info.mqtt_Data_Send != NULL)
                mqtt_info.mqtt_Data_Send(mqtt_info.TX_Buff,2);
}

/*******************************************************************************
* Function Name  : Mqtt_Subscribe
* Description    : SUBSCRIBE????topic±¨??
* Input          : topic_name£o????topic±¨????3?  PackID  ±¨??±êê?·?(°üo?)  
                   QoS£o????μè??        
* Output         : None
* Return         : None
* Note                         : None
*******************************************************************************/
void Mqtt_Subscribe(char *topic_name, uint16_t PackID, uint8_t QoS)
{       
        int temp,Remaining_len;
        u16 topic_len,pack_len,Variable_len,Payload_len;
        uint8_t *buff;
       
        //êy?Y?o3???????
        buff = mqtt_info.TX_Buff;
        //?÷ìa3¤?è
        topic_len = strlen(topic_name);
        Variable_len = 2;                           //SUBSCRIBE±¨???D,±¨??±êê?·?3¤?è,1ì?¨?a2
        Payload_len = 2 + strlen(topic_name) + 1;   //????óDD§?ooé3¤?è = 2×??ú(topic_name3¤?è)+ topic_name×?·?′?μ?3¤?è + 1×??ú·t??μè??
        Remaining_len = Variable_len + Payload_len; //ê£óà3¤?è
       
        *buff++ = MSG_MQTT_SUBSCRIBE;                               //μú1??×??ú £o1ì?¨0x82        

        do{                                      //?-?·′|àí1ì?¨±¨í·?Dμ?ê£óà3¤?è×??ú£?×??úá??ù?Yê£óà×??úμ???êμ3¤?è±??ˉ
                temp = Remaining_len%128;            //ê£óà3¤?èè?óà128
                Remaining_len = Remaining_len/128;   //ê£óà3¤?èè???128
                if(Remaining_len>0)                      
                        temp |= 0x80;                    //°′D-òéòa?ó??7????         
                *buff++ = temp;         //ê£óà3¤?è×??ú????ò???êy?Y  
        }while(Remaining_len>0);                 //è?1?Remaining_len>0μ??°£??ù′???è??-?·
       
        *buff++ = PackID/256;                    //±¨??±êê?·???×??ú,°üo?
        *buff++ = PackID%256;                             //±¨??±êê?·?μí×??ú,°üo?
        *buff++ = topic_len/256;                 //topic_name3¤?è??×??ú
        *buff++ = topic_len%256;                         //topic_name3¤?èμí×??ú
        memcpy(buff,topic_name,topic_len);       //?′??topic_name       
        buff += topic_len;
       
        *buff++ = QoS;                           //×?oó1??×??ú£o????μè??
       
        pack_len = buff - mqtt_info.TX_Buff;
       
        //·¢?íêy?Y
        if(mqtt_info.mqtt_Data_Send != NULL)
                mqtt_info.mqtt_Data_Send(mqtt_info.TX_Buff,pack_len);
}

/*******************************************************************************
* Function Name  : Mqtt_UnSubscribe
* Description    : è???????topic±¨??
* Input          : topic_name£o????topic±¨????3?  PackID  ±¨??±êê?·?(°üo?)      
* Output         : None
* Return         : None
* Note                         : None
*******************************************************************************/
void Mqtt_UnSubscribe(char *topic_name, uint16_t PackID)
{       
        int temp,Remaining_len;
        u16 topic_len,pack_len,Variable_len,Payload_len;
        uint8_t *buff;
       
        //êy?Y?o3???????
        buff = mqtt_info.TX_Buff;
        //?÷ìa3¤?è
        topic_len = strlen(topic_name);
        Variable_len = 2;                           //SUBSCRIBE±¨???D,±¨??±êê?·?3¤?è,1ì?¨?a2
        Payload_len = 2 + strlen(topic_name);   //????óDD§?ooé3¤?è = 2×??ú(topic_name3¤?è)+ topic_name×?·?′?μ?3¤?è
        Remaining_len = Variable_len + Payload_len; //ê£óà3¤?è
       
        *buff++ = MSG_MQTT_UNSUBSCRIBE;                               //μú1??×??ú £o1ì?¨0xA2        

        do{                                      //?-?·′|àí1ì?¨±¨í·?Dμ?ê£óà3¤?è×??ú£?×??úá??ù?Yê£óà×??úμ???êμ3¤?è±??ˉ
                temp = Remaining_len%128;            //ê£óà3¤?èè?óà128
                Remaining_len = Remaining_len/128;   //ê£óà3¤?èè???128
                if(Remaining_len>0)                      
                        temp |= 0x80;                    //°′D-òéòa?ó??7????         
                *buff++ = temp;         //ê£óà3¤?è×??ú????ò???êy?Y  
        }while(Remaining_len>0);                 //è?1?Remaining_len>0μ??°£??ù′???è??-?·
       
        *buff++ = PackID/256;                    //±¨??±êê?·???×??ú,°üo?
        *buff++ = PackID%256;                             //±¨??±êê?·?μí×??ú,°üo?
        *buff++ = topic_len/256;                 //topic_name3¤?è??×??ú
        *buff++ = topic_len%256;                         //topic_name3¤?èμí×??ú
        memcpy(buff,topic_name,topic_len);       //?′??topic_name       
        buff += topic_len;
       
        pack_len = buff - mqtt_info.TX_Buff;
       
        //·¢?íêy?Y
        if(mqtt_info.mqtt_Data_Send != NULL)
                mqtt_info.mqtt_Data_Send(mqtt_info.TX_Buff,pack_len);
}

/*******************************************************************************
* Function Name  : Mqtt_Publish
* Description    : ?òtopic·¢2?±¨??
* Input          : topic_name£o????topic±¨????3?  PackID  ±¨??±êê?·?(°üo?)  
                   QoS£oμè??    data óDD§êy?Y   data_len  óDD§êy?Y3¤?è
* Output         : None
* Return         : None
* Note                         : PackID??óDμ±QoS?a1?ò2ê±óDD§
*******************************************************************************/
void Mqtt_Publish(char *topic_name, uint16_t PackID, uint8_t QoS, uint8_t *data, uint16_t data_len)
{       
        int temp,Remaining_len;
        u16 topic_len,pack_len,Payload_len;
        uint8_t *buff;
       
        //êy?Y?o3???????
        buff = mqtt_info.TX_Buff;
        //?÷ìa3¤?è
        topic_len = strlen(topic_name);
        Payload_len = 2 + strlen(topic_name) + data_len;   //????óDD§?ooé3¤?è = 2×??ú(topic_name3¤?è)+ topic_name×?·?′?μ?3¤?è + êy?Y3¤?è
        Remaining_len = Payload_len; //ê£óà3¤?è
       
        if(QoS == 0)
        {
                *buff++ = MSG_MQTT_PUBLISH_QS0;                               //μú1??×??ú £o1ì?¨0x30
        }
        else if(QoS == 1)
        {
                Remaining_len += 2;                      //ê£óà3¤?è,2?a±¨??±êê?·?3¤?è
                *buff++ = MSG_MQTT_PUBLISH_QS1;                               //μú1??×??ú £o1ì?¨0x32
        }
        else if(QoS == 2)
        {
                Remaining_len += 2;                      //ê£óà3¤?è,2?a±¨??±êê?·?3¤?è
                *buff++ = MSG_MQTT_PUBLISH_QS2;                               //μú1??×??ú £o1ì?¨0x34
        }

        do{                                      //?-?·′|àí1ì?¨±¨í·?Dμ?ê£óà3¤?è×??ú£?×??úá??ù?Yê£óà×??úμ???êμ3¤?è±??ˉ
                temp = Remaining_len%128;            //ê£óà3¤?èè?óà128
                Remaining_len = Remaining_len/128;   //ê£óà3¤?èè???128
                if(Remaining_len>0)                      
                        temp |= 0x80;                    //°′D-òéòa?ó??7????         
                *buff++ = temp;         //ê£óà3¤?è×??ú????ò???êy?Y  
        }while(Remaining_len>0);                 //è?1?Remaining_len>0μ??°£??ù′???è??-?·
       
        *buff++ = topic_len/256;                 //topic_name3¤?è??×??ú
        *buff++ = topic_len%256;                         //topic_name3¤?èμí×??ú
        memcpy(buff,topic_name,topic_len);       //?′??topic_name       
        buff += topic_len;
       
        if(QoS != 0)  
        {
                *buff++ = PackID/256;                    //±¨??±êê?·???×??ú,°üo?
                *buff++ = PackID%256;                             //±¨??±êê?·?μí×??ú,°üo?
        }
       
        //?′??ó??§êy?Y
        memcpy(buff,data,data_len);
        buff += data_len;
       
        pack_len = buff - mqtt_info.TX_Buff;
       
        //·¢?íêy?Y
        if(mqtt_info.mqtt_Data_Send != NULL)
                mqtt_info.mqtt_Data_Send(mqtt_info.TX_Buff,pack_len);
}

/*******************************************************************************
* Function Name  : Mqtt_RecvHandle
* Description    : MQTT?óê?êy?Y?a??
* Input          : buff   êy?Y?o3???
* Output         : None
* Return         : None
* Note                         : 0  3é1|,???ü ê§°ü
*******************************************************************************/
uint8_t Mqtt_RecvHandle(uint8_t *buff)
{
        uint8_t *p;
        uint8_t encodeByte = 0;
        uint32_t multiplier = 1, Remaining_len = 0;
        uint8_t QS_level = 0;
       
        p = buff;
       
        //?a???óê?êy?Y
        if((*p != 0x30)&&(*p != 0x32)&&(*p != 0x34))   //2?ê?·¢2?±¨??í·
                return 1;
       
        if(*p != 0x30) QS_level = 1;    //±ê??qsμè??2??a0
       
        p++;
        //ìáè?ê£óàêy?Y3¤?è
        do{
                encodeByte = *p++;
                Remaining_len += (encodeByte & 0x7F) * multiplier;
                multiplier *= 128;
               
                if(multiplier > 128*128*128) //3?3?ê£óà3¤?è×?′ó4??×??úμ?òa?ó,′í?ó
                        return 2;
        }while((encodeByte & 0x80) != 0);
       
        //ìáè??÷ìaêy?Y3¤?è
        mqtt_info.rx_topic_len = *p++;
        mqtt_info.rx_topic_len = mqtt_info.rx_topic_len * 256 + *p++;
        //ìáè??÷ìa
        memcpy(mqtt_info.RX_Topic,p,mqtt_info.rx_topic_len);
        p += mqtt_info.rx_topic_len;
       
        if(QS_level != 0)  //ì?1y±¨??±êê?·?
                p += 2;   
       
        //ìáè?ó??§?êêy?Y
        if(mqtt_info.mqtt_Data_Recv != NULL)
                mqtt_info.mqtt_Data_Recv(p,Remaining_len - mqtt_info.rx_topic_len - 2);
       
        return 0;
}


后台对接阿里云








W3.png (114.17 KB )

W3.png
沙发
星辰大海不退缩| | 2024-10-8 22:16 | 只看该作者
阿里云还是性能很强大的
板凳
cooldog123pp| | 2025-08-05 08:32 | 只看该作者
阿里云还是性能很强大的,不是楼主这个是要花钱的吗,一年多少钱,参考一下。
地板
chenqianqian| | 2025-08-05 10:06 | 只看该作者
H7S7主要是应用于安全领域吗?
5
abner_ma|  楼主 | 2025-08-05 15:35 | 只看该作者
chenqianqian 发表于 2025-08-05 10:06
H7S7主要是应用于安全领域吗?

带AES,哈希的ST芯片都可以用于安全,这个用在物联网或者GUI 大屏显示可以大显身手
6
Stahan| | 2025-08-05 22:46 | 只看该作者
用这么好的芯片
7
javon| | 2025-7-8 09:01 | 只看该作者
阿里云很强大
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:项目经理
简介:资深嵌入式开发工程师

95

主题

181

帖子

3

粉丝
上火是什么意思 哺乳期什么时候来月经正常 采是什么意思 细菌性感冒吃什么药效果好 韩束适合什么年龄段的人用
前纵韧带钙化是什么意思 hsv是什么 梦见杀鸡是什么意思 腿弯后面疼是什么原因 窦缓是什么意思
为什么一直口渴 客厅沙发后面墙上挂什么画好 pv什么意思 憨笑是什么意思 灰太狼是什么意思
pda是什么意思 为什么单位不愿意申请工伤 4级残疾证有什么优惠政策 苹果a1660是什么型号 摸不到心跳是什么情况
舌苔黄腻吃什么药hcv8jop1ns1r.cn 什么风什么月hcv8jop5ns6r.cn sm是什么hcv9jop0ns5r.cn 运动喝什么水补充能量hcv8jop7ns1r.cn 偷鸡不成蚀把米什么意思hcv8jop3ns3r.cn
一个草字头一个氏念什么hcv9jop1ns1r.cn 手机电池是什么电池hebeidezhi.com 7月初是什么星座hcv8jop4ns6r.cn 5.19是什么星座hcv8jop6ns6r.cn 敏字五行属什么liaochangning.com
洽谈是什么意思hcv8jop4ns7r.cn 焦糖色搭配什么颜色好看0297y7.com 为什么吃肉多反而瘦了hcv8jop2ns9r.cn 血浓度高是什么原因hcv8jop9ns9r.cn ab面是什么意思wuhaiwuya.com
断头婚是什么意思hcv9jop1ns1r.cn 紧急避孕药什么时候吃最有效zhongyiyatai.com 体寒湿气重喝什么茶好hcv8jop1ns9r.cn 吃银耳有什么功效和作用hcv8jop6ns8r.cn 长疖子是什么原因hcv9jop1ns1r.cn
百度