20260107:实现简单的MQTT协议。

This commit is contained in:
2026-01-07 03:22:21 +08:00
parent 408af68973
commit 3fc72c66be
7 changed files with 395 additions and 374 deletions

View File

@@ -17,12 +17,12 @@ typedef enum{
STA,
AP,
STA_AP
} ENUM_Net_ModeTypeDef;
} eNetMode_t;
typedef enum{
enumTCP,
enumUDP,
} ENUM_NetPro_TypeDef;
} eNetPro_t;
typedef enum{
Multiple_ID_0 = 0,
@@ -31,7 +31,7 @@ typedef enum{
Multiple_ID_3,
Multiple_ID_4,
Single_ID_0,
} ENUM_ID_NO_TypeDef;
} eIdNo_t;
typedef enum{
OPEN = 0,
@@ -39,24 +39,7 @@ typedef enum{
WPA_PSK,
WPA2_PSK,
WPA_WPA2_PSK,
} ENUM_AP_PsdMode_TypeDef;
/* ESP8266 <20>ⲿȫ<E2B2BF>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define RX_BUF_MAX_LEN 1024 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
extern struct STRUCT_USARTx_Fram // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><E1B9B9>
{
char Data_RX_BUF [ RX_BUF_MAX_LEN ];
union {
__IO uint16_t InfAll;
struct {
__IO uint16_t FramLength :15; // 14:0
__IO uint16_t FramFinishFlag :1; // 15
} InfBit;
};
} strEsp8266_Fram_Record;
extern volatile uint8_t ucTcpClosedFlag;
} eApPsdMode_t;
/* ESP8266 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD> */
#define macESP8266_CH_PD_CLK RCC_APB2Periph_GPIOA
@@ -89,25 +72,31 @@ extern volatile uint8_t ucTcpClosedFlag;
static void vEsp8266GpioConfig ( void );
void vEsp8266Init ( void );
void vEsp8266Rst ( void );
bool bEsp8266Command ( char * cCmd, char * cReply1, char * cReply2, uint32_t ulWaittime );
bool bEsp8266Command ( char * pcCmd, char * pcAck1, char * pcAck2, uint32_t ulWaittime );
void vEsp8266AtTest ( void );
bool bEsp8266NetModeChoose ( ENUM_Net_ModeTypeDef enumMode );
bool bEsp8266JoinAp ( char * pSSID, char * pPassWord );
bool bEsp8266BuildAp ( char * pSSID, char * pPassWord, ENUM_AP_PsdMode_TypeDef enunPsdMode );
bool bEsp8266EnableMultipleId ( FunctionalState enumEnUnvarnishTx );
bool bEsp8266LinkServer ( ENUM_NetPro_TypeDef enumE, char * ip, char * ComNum, ENUM_ID_NO_TypeDef id);
bool bEsp8266StartOrShutServer ( FunctionalState enumMode, char * pPortNum, char * pTimeOver );
bool bEsp8266NetModeChoose ( eNetMode_t xMode );
bool bEsp8266JoinAp ( char * pcSsid, char * pcPassWord );
bool bEsp8266MqttInit ( char * pcMqttUser, char * pcMqttPwd, char * pcMqttCliId, char * pcMqttServerIp, char * usMqttServerPort );
bool bEsp8266BuildAp ( char * pcSsid, char * pcPassWord, eApPsdMode_t xPsdMode );
bool bEsp8266EnableMultipleId ( FunctionalState xEnumEnUnvarnishTx );
bool bEsp8266LinkServer ( eNetPro_t enumE, char * pcIp, char * pcComNum, eIdNo_t xId);
bool bEsp8266StartOrShutServer ( FunctionalState xMode, char * pcPortNum, char * pcTimeOver );
uint8_t ucEsp8266GetLinkStatus ( void );
uint8_t ucEsp8266GetIdLinkStatus ( void );
uint8_t ucEsp8266InquireApIp ( char * pApIp, uint8_t ucArrayLength );
uint8_t ucEsp8266InquireApIp ( char * pcApIp, uint8_t ucArrayLength );
bool bEsp8266UnvarnishSend ( void );
void vEsp8266ExitUnvarnishSend ( void );
bool bEsp8266SendString ( FunctionalState enumEnUnvarnishTx, char * pStr, uint32_t ulStrLength, ENUM_ID_NO_TypeDef ucId );
char * pcEsp8266ReceiveString ( FunctionalState enumEnUnvarnishTx );
bool bEsp8266SendString ( FunctionalState xEnumEnUnvarnishTx, char * pcStr, uint32_t ulStrLength, eIdNo_t xId );
char * pcEsp8266ReceiveString ( FunctionalState xEnumEnUnvarnishTx );
/* <20>û<EFBFBD><C3BB><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>õIJ<C3B5><C4B2><EFBFBD> */
#define ESP8266_APSSID "TESTAP666" // Ҫ<><D2AA><EFBFBD>ӵ<EFBFBD><D3B5>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define ESP8266_APSSID "TESTAP66667" // Ҫ<><D2AA><EFBFBD>ӵ<EFBFBD><D3B5>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define ESP8266_APPWD "123345567" // Ҫ<><D2AA><EFBFBD>ӵ<EFBFBD><D3B5>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD>Կ
#define ESP8266_MQTT_SERVER_IP "121.36.104.9" // MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ
#define ESP8266_MQTT_SERVER_PORT "1883" // MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF>
#define ESP8266_MQTT_CLIENT_ID "TestServer&stm32" // MQTT<54>ͻ<EFBFBD><CDBB><EFBFBD>ID
#define ESP8266_MQTT_USERNAME "stm32" // MQTT<54>û<EFBFBD><C3BB><EFBFBD>
#define ESP8266_MQTT_PASSWORD "123456789" // MQTT<54><54><EFBFBD><EFBFBD>
/* <20>ⲿȫ<E2B2BF>ֱ<EFBFBD><D6B1><EFBFBD> */