EC20模组使用MQTT库对接EMQX,基于STM32F407
一、說明
?
本lib庫基于STM32F407編譯,其他的cortexM4內(nèi)核也支持,采用串口和EC20模組通信。
庫包括兩個文件:ec20_mqtt.h和ec20_mqtt.lib。使用時添加lib文件到工程中,頭文件引用ec20_mqtt.h即可。
下載:https://gitee.com/eiri_jackmaster/ec20_mqtt_cm4-lib
二、功能
提供了創(chuàng)建mqtt客戶端、連接服務(wù)器、訂閱、發(fā)布、取消訂閱、斷開連接、獲取imei號等API接口。
/*! -------------------------------------------------------------------------- */ /*! Public function prototype */ EC20_status EC20_initialize(void); EC20_status EC20_mqttClientCreate(uint8_t pClientID,char* pIPv4, uint32_t pPort); EC20_status EC20_mqttClientConnectServer(uint8_t pClientID, char* pClientIDStr,char* pName, char* pPswd); EC20_status EC20_mqttClientSubscribe(uint8_t pClientID, char* pTopic, uint8_t pQos); EC20_status EC20_mqttClientUnSubscribe(uint8_t pClientID, char* pTopic); EC20_status EC20_mqttClientPublish(uint8_t pClientID, char* pTopic, uint8_t pQos, uint8_t pRetain, uint8_t *pData, uint32_t pSize); EC20_status EC20_mqttClientDisConnectServer(uint8_t pClientID); extern void EC20_moduleHardReset(void); size_t EC20_getIMEI(char *pIMEIBuff);三、移植
在頭文件指定相應(yīng)的串口操作函數(shù)和毫秒級基本延時即可。此外,需要外部實現(xiàn)EC20模組的復(fù)位操作,一般是對rst管腳拉高一段時間,復(fù)位函數(shù)需要指定函數(shù)為void EC20_moduleHardReset(void)。
/*! macro defination for porting */ /*! ec20 uart default 115200 8 N 1 */ #define EC20_SENDDATA(a,b) USART2_sendData(a,b) /*! uart redefine */ #define EC20_SENDSTR(a) USART2_sendString(a) #define EC20_RXFLAG usart2Rx.flag #define EC20_RXBUFF usart2Rx.buff #define EC20_RXLEN usart2Rx.size #define EC20_BUFF_SIZE UART2_BUFF_SIZE /*! buffsize define */ #define EC20_DELAYMS HAL_Delay #define PRINT_ENABLE 0x10 /*! 0x00=enable, other=disable*/四、實例
以下為STM32F407使用ec20的mqtt庫,實現(xiàn)對接自建EMQX。
1、工程添加ec20_mqtt.lib
2、頭文件引入
定義變量和私有mqtt服務(wù)器信息(我使用了訂閱認(rèn)證和鑒權(quán)):
??3、實現(xiàn)EC20模組復(fù)位接口
?4、調(diào)用接口
(1)初始化
(2)創(chuàng)建mqtt客戶端,連接服務(wù)器
(3)訂閱和發(fā)布主題
?4、執(zhí)行結(jié)果
?
?可以看到發(fā)布和訂閱正常。
總結(jié)
以上是生活随笔為你收集整理的EC20模组使用MQTT库对接EMQX,基于STM32F407的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 消防信号二总线有没电压_春晓161#地块
- 下一篇: windows 驱动开发使用的一些工具