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

@@ -1,9 +1,8 @@
#include "esp8266.h" #include "esp8266.h"
volatile uint8_t ucTcpClosedFlag = 0; volatile uint8_t ucTcpClosedFlag = 0;
char cStr [ 1500 ] = { 0 }; char cStr [ 1500 ] = { 0 };
struct STRUCT_USARTx_Fram strEsp8266_Fram_Record = { 0 }; struct SerialFrame_t xSerialFrameRecord = { 0 };
/** /**
* @brief vEsp8266GpioConfig * @brief vEsp8266GpioConfig
@@ -61,28 +60,28 @@ void vEsp8266Rst ( void )
/** /**
* @brief bEsp8266Command * @brief bEsp8266Command
* @note <20><>ESP8266ģ<36><EFBFBD><E9B7A2>ATָ<54><D6B8>,<2C><><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD> * @note <20><>ESP8266ģ<36><EFBFBD><E9B7A2>ATָ<54><D6B8>,<2C><><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD>
* @param cCmd<6D><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ָ<EFBFBD><D6B8> * @param pcCmd<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ָ<EFBFBD><EFBFBD>
* @param cReply1<79><31>cReply2<79><32><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ΪNULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>߼<EFBFBD><DFBC><EFBFBD>ϵ<EFBFBD><CFB5> * @param pcReply1<EFBFBD><EFBFBD>pcReply2<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>ΪNULL<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>
* @param ulWaittime<6D><65><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>Ӧ<EFBFBD><D3A6>ʱ<EFBFBD><CAB1> * @param ulWaittime<6D><65><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>Ӧ<EFBFBD><D3A6>ʱ<EFBFBD><CAB1>
* @retval true<75><65>ָ<EFBFBD><EFBFBD>ͳɹ<CDB3> * @retval true<75><65>ָ<EFBFBD><EFBFBD>ͳɹ<CDB3>
* @retval false<73><65>ָ<EFBFBD><EFBFBD><EEB7A2>ʧ<EFBFBD><CAA7> * @retval false<73><65>ָ<EFBFBD><EFBFBD><EEB7A2>ʧ<EFBFBD><CAA7>
*/ */
bool bEsp8266Command ( char * cCmd, char * cReply1, char * cReply2, uint32_t ulWaittime ) bool bEsp8266Command ( char * pcCmd, char * pcAck1, char * pcAck2, uint32_t ulWaittime )
{ {
strEsp8266_Fram_Record .InfBit .FramLength = 0; //<2F><><EFBFBD>¿<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD>ݰ<EFBFBD> xSerialFrameRecord .Bits_t .usFrameLength = 0; //<2F><><EFBFBD>¿<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD>ݰ<EFBFBD>
vUsartPrintf ( USART2, "%s\r\n", cCmd ); vUsartPrintf ( USART2, "%s\r\n", pcCmd );
if ( ( cReply1 == 0 ) && ( cReply2 == 0 ) ) //<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> if ( ( pcAck1 == 0 ) && ( pcAck2 == 0 ) ) //<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return true; return true;
vDelayMs( ulWaittime ); //<2F><>ʱ vDelayMs( ulWaittime ); //<2F><>ʱ
strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ] = '\0'; xSerialFrameRecord .cSerialReceivedBuffer [ xSerialFrameRecord .Bits_t .usFrameLength ] = '\0';
// macPC_Usart ( "%s", strEsp8266_Fram_Record .Data_RX_BUF ); // macPC_Usart ( "%s", xSerialFrameRecord .cSerialReceivedBuffer );
if ( ( cReply1 != 0 ) && ( cReply2 != 0 ) ) if ( ( pcAck1 != 0 ) && ( pcAck2 != 0 ) )
return ( ( bool ) strstr ( strEsp8266_Fram_Record .Data_RX_BUF, cReply1 ) || return ( ( bool ) strstr ( xSerialFrameRecord .cSerialReceivedBuffer, pcAck1 ) ||
( bool ) strstr ( strEsp8266_Fram_Record .Data_RX_BUF, cReply2 ) ); ( bool ) strstr ( xSerialFrameRecord .cSerialReceivedBuffer, pcAck2 ) );
else if ( cReply1 != 0 ) else if ( pcAck1 != 0 )
return ( ( bool ) strstr ( strEsp8266_Fram_Record .Data_RX_BUF, cReply1 ) ); return ( ( bool ) strstr ( xSerialFrameRecord .cSerialReceivedBuffer, pcAck1 ) );
else else
return ( ( bool ) strstr ( strEsp8266_Fram_Record .Data_RX_BUF, cReply2 ) ); return ( ( bool ) strstr ( xSerialFrameRecord .cSerialReceivedBuffer, pcAck2 ) );
} }
/** /**
@@ -107,13 +106,13 @@ void vEsp8266AtTest ( void )
/** /**
* @brief bEsp8266NetModeChoose * @brief bEsp8266NetModeChoose
* @note ѡ<><D1A1>ESP8266ģ<36><C4A3><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>ģʽ,<2C>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD> * @note ѡ<><D1A1>ESP8266ģ<36><C4A3><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>ģʽ,<2C>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD>
* @param enumMode<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ * @param xMode<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
* @retval 1<><31>ѡ<EFBFBD><D1A1><EFBFBD>ɹ<EFBFBD> * @retval 1<><31>ѡ<EFBFBD><D1A1><EFBFBD>ɹ<EFBFBD>
* @retval 0<><30>ѡ<EFBFBD><D1A1>ʧ<EFBFBD><CAA7> * @retval 0<><30>ѡ<EFBFBD><D1A1>ʧ<EFBFBD><CAA7>
*/ */
bool bEsp8266NetModeChoose ( ENUM_Net_ModeTypeDef enumMode ) bool bEsp8266NetModeChoose ( eNetMode_t xMode )
{ {
switch ( enumMode ) switch ( xMode )
{ {
case STA: case STA:
return bEsp8266Command ( "AT+CWMODE=1", "OK", "no change", 2500 ); return bEsp8266Command ( "AT+CWMODE=1", "OK", "no change", 2500 );
@@ -129,42 +128,68 @@ bool bEsp8266NetModeChoose ( ENUM_Net_ModeTypeDef enumMode )
/** /**
* @brief bEsp8266JoinAp * @brief bEsp8266JoinAp
* @note ESP8266ģ<36><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿWiFi<46><69><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD> * @note ESP8266ģ<36><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿWiFi<46><69><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD>
* @param pSSID<EFBFBD><EFBFBD>WiFi<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD> * @param pcSsid<EFBFBD><EFBFBD>WiFi<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
* @param pPassWord<72><64>WiFi<46><69><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> * @param pcPassWord<EFBFBD><EFBFBD>WiFi<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
* @retval 1<><31><EFBFBD><EFBFBD><EFBFBD>ӳɹ<D3B3> * @retval 1<><31><EFBFBD><EFBFBD><EFBFBD>ӳɹ<D3B3>
* @retval 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7> * @retval 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
*/ */
bool bEsp8266JoinAp ( char * pSSID, char * pPassWord ) bool bEsp8266JoinAp ( char * pcSsid, char * pcPassWord )
{ {
char cCmd [120]; char cCmd [120];
sprintf ( cCmd, "AT+CWJAP=\"%s\",\"%s\"", pSSID, pPassWord ); sprintf ( cCmd, "AT+CWJAP=\"%s\",\"%s\"", pcSsid, pcPassWord );
return bEsp8266Command ( cCmd, "OK", NULL, 5000 ); return bEsp8266Command ( cCmd, "OK", NULL, 5000 );
} }
/**
* @brief bEsp8266MqttInit
* @note ESP8266ģ<36><C4A3>MQTT<54><54>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD>
* @param pcMqttUser<65><72>MQTT<54>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
* @param pcMqttPwd<77><64>MQTT<54><54><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
* @param pcMqttCliId<49><64>MQTT<54>ͻ<EFBFBD><CDBB><EFBFBD>ID<49>ַ<EFBFBD><D6B7><EFBFBD>
* @param pcMqttServerIp<49><70>MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
* @param usMqttServerPort<72><74>MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF>
* @retval 1<><31><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD>
* @retval 0<><30><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ʧ<EFBFBD><CAA7>
*/
bool bEsp8266MqttInit ( char * pcMqttUser, char * pcMqttPwd, char * pcMqttCliId, char * pcMqttServerIp, char * usMqttServerPort )
{
char cCmd [200];
sprintf ( cCmd, "AT+MQTTUSERCFG=0,1,\"NULL\",\"%s\",\"%s\",0,0,\"\"", pcMqttUser, pcMqttPwd );
if ( ! bEsp8266Command ( cCmd, "OK", NULL, 1500 ) )
return false;
sprintf ( cCmd, "AT+MQTTCLIENTID=0,\"%s\"", pcMqttCliId );
if ( ! bEsp8266Command ( cCmd, "OK", NULL, 1500 ) )
return false;
sprintf ( cCmd, "AT+MQTTCONN=0,\"%s\",%s,1", pcMqttServerIp, usMqttServerPort );
if ( ! bEsp8266Command ( cCmd, "OK", NULL, 2000 ) )
return false;
return true;
}
/** /**
* @brief bEsp8266BuildAp * @brief bEsp8266BuildAp
* @note ESP8266ģ<36><EFBFBD><E9B4B4>AP<41>ȵ㣬<C8B5>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD> * @note ESP8266ģ<36><EFBFBD><E9B4B4>AP<41>ȵ㣬<C8B5>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD>
* @param pSSID<EFBFBD><EFBFBD>AP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD> * @param pcSsid<EFBFBD><EFBFBD>AP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
* @param pPassWord<72><64>AP<41><50><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> * @param pcPassWord<EFBFBD><EFBFBD>AP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
* @param enunPsdMode<EFBFBD><EFBFBD>AP<EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD>ʽ * @param xPsdMode<EFBFBD><EFBFBD>AP<EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD>ʽ
* @retval 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD> * @retval 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
* @retval 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7> * @retval 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
*/ */
bool bEsp8266BuildAp ( char * pSSID, char * pPassWord, ENUM_AP_PsdMode_TypeDef enunPsdMode ) bool bEsp8266BuildAp ( char * pcSsid, char * pcPassWord, eApPsdMode_t xPsdMode )
{ {
char cCmd [120]; char cCmd [120];
sprintf ( cCmd, "AT+CWSAP=\"%s\",\"%s\",1,%d", pSSID, pPassWord, enunPsdMode ); sprintf ( cCmd, "AT+CWSAP=\"%s\",\"%s\",1,%d", pcSsid, pcPassWord, xPsdMode );
return bEsp8266Command ( cCmd, "OK", 0, 1000 ); return bEsp8266Command ( cCmd, "OK", 0, 1000 );
} }
/** /**
* @brief bEsp8266EnableMultipleId * @brief bEsp8266EnableMultipleId
* @note ESP8266ģ<36><C4A3>ʹ<EFBFBD><CAB9>/<2F><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD> * @note ESP8266ģ<36><C4A3>ʹ<EFBFBD><CAB9>/<2F><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD>
* @param enumEnUnvarnishTx<EFBFBD><EFBFBD>ENABLE<EFBFBD><EFBFBD>ʹ<EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>DISABLE<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * @param xEnumEnUnvarnishTx<EFBFBD><EFBFBD>ENABLE<EFBFBD><EFBFBD>ʹ<EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>DISABLE<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD> * @retval 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
* @retval 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7> * @retval 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
*/ */
bool bEsp8266EnableMultipleId ( FunctionalState enumEnUnvarnishTx ) bool bEsp8266EnableMultipleId ( FunctionalState xEnumEnUnvarnishTx )
{ {
return bEsp8266Command ( "AT+CIPMUX=%d", "OK", 0, 500 ); return bEsp8266Command ( "AT+CIPMUX=%d", "OK", 0, 500 );
} }
@@ -173,28 +198,28 @@ bool bEsp8266EnableMultipleId ( FunctionalState enumEnUnvarnishTx )
* @brief bEsp8266LinkServer * @brief bEsp8266LinkServer
* @note ESP8266ģ<36><C4A3><EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD> * @note ESP8266ģ<36><C4A3><EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD>
* @param enumE<6D><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * @param enumE<6D><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param ip<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<EFBFBD><EFBFBD>ַ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD> * @param pcIp<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<EFBFBD><EFBFBD>ַ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
* @param ComNum<75><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF><DABA>ַ<EFBFBD><D6B7><EFBFBD> * @param pcComNum<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ں<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
* @param id<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD> * @param xId<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD>
* @retval 1<><31><EFBFBD><EFBFBD><EFBFBD>ӳɹ<D3B3> * @retval 1<><31><EFBFBD><EFBFBD><EFBFBD>ӳɹ<D3B3>
* @retval 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7> * @retval 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
*/ */
bool bEsp8266LinkServer ( ENUM_NetPro_TypeDef enumE, char * ip, char * ComNum, ENUM_ID_NO_TypeDef id) bool bEsp8266LinkServer ( eNetPro_t enumE, char * pcIp, char * pcComNum, eIdNo_t xId)
{ {
char cStr [100] = { 0 }, cCmd [120]; char cStr [100] = { 0 }, cCmd [120];
switch ( enumE ) switch ( enumE )
{ {
case enumTCP: case enumTCP:
sprintf ( cStr, "\"%s\",\"%s\",%s", "TCP", ip, ComNum ); sprintf ( cStr, "\"%s\",\"%s\",%s", "TCP", pcIp, pcComNum );
break; break;
case enumUDP: case enumUDP:
sprintf ( cStr, "\"%s\",\"%s\",%s", "UDP", ip, ComNum ); sprintf ( cStr, "\"%s\",\"%s\",%s", "UDP", pcIp, pcComNum );
break; break;
default: default:
break; break;
} }
if ( id < 5 ) if ( xId < 5 )
sprintf ( cCmd, "AT+CIPSTART=%d,%s", id, cStr); sprintf ( cCmd, "AT+CIPSTART=%d,%s", xId, cStr);
else else
sprintf ( cCmd, "AT+CIPSTART=%s", cStr ); sprintf ( cCmd, "AT+CIPSTART=%s", cStr );
return bEsp8266Command ( cCmd, "OK", "ALREAY CONNECT", 4000 ); return bEsp8266Command ( cCmd, "OK", "ALREAY CONNECT", 4000 );
@@ -203,25 +228,25 @@ bool bEsp8266LinkServer ( ENUM_NetPro_TypeDef enumE, char * ip, char * ComNum, E
/** /**
* @brief bEsp8266StartOrShutServer * @brief bEsp8266StartOrShutServer
* @note ESP8266ģ<36><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>رշ<D8B1><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD> * @note ESP8266ģ<36><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>رշ<D8B1><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD>
* @param enumMode<EFBFBD><EFBFBD>ENABLE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DISABLE<EFBFBD><EFBFBD><EFBFBD>رշ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * @param xMode<EFBFBD><EFBFBD>ENABLE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DISABLE<EFBFBD><EFBFBD><EFBFBD>رշ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param pPortNum<75><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF><DABA>ַ<EFBFBD><D6B7><EFBFBD> * @param pcPortNum<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ں<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
* @param pTimeOver<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> * @param pcTimeOver<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
* @retval 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD> * @retval 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
* @retval 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7> * @retval 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
*/ */
bool bEsp8266StartOrShutServer ( FunctionalState enumMode, char * pPortNum, char * pTimeOver ) bool bEsp8266StartOrShutServer ( FunctionalState xMode, char * pcPortNum, char * pcTimeOver )
{ {
char cCmd1 [120], cCmd2 [120]; char cCmd1 [120], cCmd2 [120];
if ( enumMode ) if ( xMode )
{ {
sprintf ( cCmd1, "AT+CIPSERVER=%d,%s", 1, pPortNum ); sprintf ( cCmd1, "AT+CIPSERVER=%d,%s", 1, pcPortNum );
sprintf ( cCmd2, "AT+CIPSTO=%s", pTimeOver ); sprintf ( cCmd2, "AT+CIPSTO=%s", pcTimeOver );
return ( bEsp8266Command ( cCmd1, "OK", 0, 500 ) && return ( bEsp8266Command ( cCmd1, "OK", 0, 500 ) &&
bEsp8266Command ( cCmd2, "OK", 0, 500 ) ); bEsp8266Command ( cCmd2, "OK", 0, 500 ) );
} }
else else
{ {
sprintf ( cCmd1, "AT+CIPSERVER=%d,%s", 0, pPortNum ); sprintf ( cCmd1, "AT+CIPSERVER=%d,%s", 0, pcPortNum );
return bEsp8266Command ( cCmd1, "OK", 0, 500 ); return bEsp8266Command ( cCmd1, "OK", 0, 500 );
} }
} }
@@ -239,12 +264,12 @@ uint8_t ucEsp8266GetLinkStatus ( void )
{ {
if ( bEsp8266Command ( "AT+CIPSTATUS", "OK", 0, 500 ) ) if ( bEsp8266Command ( "AT+CIPSTATUS", "OK", 0, 500 ) )
{ {
if ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "STATUS:2\r\n" ) ) if ( strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "STATUS:2\r\n" ) )
return 2; return 2;
else if ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "STATUS:3\r\n" ) ) else if ( strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "STATUS:3\r\n" ) )
return 3; return 3;
else if ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "STATUS:4\r\n" ) ) else if ( strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "STATUS:4\r\n" ) )
return 4; return 4;
} }
return 0; return 0;
@@ -261,23 +286,23 @@ uint8_t ucEsp8266GetIdLinkStatus ( void )
uint8_t ucIdLinkStatus = 0x00; uint8_t ucIdLinkStatus = 0x00;
if ( bEsp8266Command ( "AT+CIPSTATUS", "OK", 0, 500 ) ) if ( bEsp8266Command ( "AT+CIPSTATUS", "OK", 0, 500 ) )
{ {
if ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "+CIPSTATUS:0," ) ) if ( strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "+CIPSTATUS:0," ) )
ucIdLinkStatus |= 0x01; ucIdLinkStatus |= 0x01;
else else
ucIdLinkStatus &= ~ 0x01; ucIdLinkStatus &= ~ 0x01;
if ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "+CIPSTATUS:1," ) ) if ( strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "+CIPSTATUS:1," ) )
ucIdLinkStatus |= 0x02; ucIdLinkStatus |= 0x02;
else else
ucIdLinkStatus &= ~ 0x02; ucIdLinkStatus &= ~ 0x02;
if ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "+CIPSTATUS:2," ) ) if ( strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "+CIPSTATUS:2," ) )
ucIdLinkStatus |= 0x04; ucIdLinkStatus |= 0x04;
else else
ucIdLinkStatus &= ~ 0x04; ucIdLinkStatus &= ~ 0x04;
if ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "+CIPSTATUS:3," ) ) if ( strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "+CIPSTATUS:3," ) )
ucIdLinkStatus |= 0x08; ucIdLinkStatus |= 0x08;
else else
ucIdLinkStatus &= ~ 0x08; ucIdLinkStatus &= ~ 0x08;
if ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "+CIPSTATUS:4," ) ) if ( strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "+CIPSTATUS:4," ) )
ucIdLinkStatus |= 0x10; ucIdLinkStatus |= 0x10;
else else
ucIdLinkStatus &= ~ 0x10; ucIdLinkStatus &= ~ 0x10;
@@ -288,27 +313,27 @@ uint8_t ucEsp8266GetIdLinkStatus ( void )
/** /**
* @brief ucEsp8266InquireApIp * @brief ucEsp8266InquireApIp
* @note <20><>ȡESP8266<36><36>AP IP<49><50><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD> * @note <20><>ȡESP8266<36><36>AP IP<49><50><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD>
* @param pApIp<49><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AP IP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD>ַ * @param pcApIp<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AP IP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD>ַ
* @param ucArrayLength<74><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AP IP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD> * @param ucArrayLength<74><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AP IP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
* @retval 0<><30><EFBFBD><EFBFBD>ȡʧ<C8A1><CAA7> * @retval 0<><30><EFBFBD><EFBFBD>ȡʧ<C8A1><CAA7>
* @retval 1<><31><EFBFBD><EFBFBD>ȡ<EFBFBD>ɹ<EFBFBD> * @retval 1<><31><EFBFBD><EFBFBD>ȡ<EFBFBD>ɹ<EFBFBD>
*/ */
uint8_t ucEsp8266InquireApIp ( char * pApIp, uint8_t ucArrayLength ) uint8_t ucEsp8266InquireApIp ( char * pcApIp, uint8_t ucArrayLength )
{ {
char uc; char uc;
char * pCh; char * pCh;
bEsp8266Command ( "AT+CIFSR", "OK", 0, 500 ); bEsp8266Command ( "AT+CIFSR", "OK", 0, 500 );
pCh = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "APIP,\"" ); pCh = strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "APIP,\"" );
if ( pCh ) if ( pCh )
pCh += 6; pCh += 6;
else else
return 0; return 0;
for ( uc = 0; uc < ucArrayLength; uc ++ ) for ( uc = 0; uc < ucArrayLength; uc ++ )
{ {
pApIp [ uc ] = * ( pCh + uc); pcApIp [ uc ] = * ( pCh + uc);
if ( pApIp [ uc ] == '\"' ) if ( pcApIp [ uc ] == '\"' )
{ {
pApIp [ uc ] = '\0'; pcApIp [ uc ] = '\0';
break; break;
} }
} }
@@ -343,30 +368,30 @@ void vEsp8266ExitUnvarnishSend ( void )
/** /**
* @brief bEsp8266SendString * @brief bEsp8266SendString
* @note ESP8266ģ<36><EFBFBD><E9B7A2><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD> * @note ESP8266ģ<36><EFBFBD><E9B7A2><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD>
* @param enumEnUnvarnishTx<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><EFBFBD>ģʽ * @param xEnumEnUnvarnishTx<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><EFBFBD>ģʽ
* @param pStr<74><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>׵<EFBFBD>ַ * @param pcStr<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD>ַ
* @param ulStrLength<74><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * @param ulStrLength<74><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param ucId<49><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<49><44> * @param ucId<49><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<49><44>
* @retval 1<><31><EFBFBD><EFBFBD><EFBFBD>ͳɹ<CDB3> * @retval 1<><31><EFBFBD><EFBFBD><EFBFBD>ͳɹ<CDB3>
* @retval 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7> * @retval 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
*/ */
bool bEsp8266SendString ( FunctionalState enumEnUnvarnishTx, char * pStr, uint32_t ulStrLength, ENUM_ID_NO_TypeDef ucId ) bool bEsp8266SendString ( FunctionalState xEnumEnUnvarnishTx, char * pcStr, uint32_t ulStrLength, eIdNo_t xId )
{ {
char cStr [20]; char cStr [20];
bool bRet = false; bool bRet = false;
if ( enumEnUnvarnishTx ) if ( xEnumEnUnvarnishTx )
{ {
vUsartPrintf ( USART2, "%s", pStr ); vUsartPrintf ( USART2, "%s", pcStr );
bRet = true; bRet = true;
} }
else else
{ {
if ( ucId < 5 ) if ( xId < 5 )
sprintf ( cStr, "AT+CIPSEND=%d,%d", ucId, ulStrLength + 2 ); sprintf ( cStr, "AT+CIPSEND=%d,%d", xId, ulStrLength + 2 );
else else
sprintf ( cStr, "AT+CIPSEND=%d", ulStrLength + 2 ); sprintf ( cStr, "AT+CIPSEND=%d", ulStrLength + 2 );
bEsp8266Command ( cStr, "> ", 0, 1000 ); bEsp8266Command ( cStr, "> ", 0, 1000 );
bRet = bEsp8266Command ( pStr, "SEND OK", 0, 1000 ); bRet = bEsp8266Command ( pcStr, "SEND OK", 0, 1000 );
} }
return bRet; return bRet;
} }
@@ -374,22 +399,22 @@ bool bEsp8266SendString ( FunctionalState enumEnUnvarnishTx, char * pStr, uint32
/** /**
* @brief pcEsp8266ReceiveString * @brief pcEsp8266ReceiveString
* @note ESP8266ģ<36><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD> * @note ESP8266ģ<36><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD>
* @param enumEnUnvarnishTx<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><EFBFBD>ģʽ * @param xEnumEnUnvarnishTx<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><EFBFBD>ģʽ
* @retval <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>׵<EFBFBD>ַ<EFBFBD><D6B7>δ<EFBFBD><CEB4><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>0 * @retval <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>׵<EFBFBD>ַ<EFBFBD><D6B7>δ<EFBFBD><CEB4><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>0
*/ */
char * pcEsp8266ReceiveString ( FunctionalState enumEnUnvarnishTx ) char * pcEsp8266ReceiveString ( FunctionalState xEnumEnUnvarnishTx )
{ {
char * pRecStr = 0; char * pRecStr = 0;
strEsp8266_Fram_Record .InfBit .FramLength = 0; xSerialFrameRecord .Bits_t .usFrameLength = 0;
strEsp8266_Fram_Record .InfBit .FramFinishFlag = 0; xSerialFrameRecord .Bits_t .usFrameFinishFlag = 0;
while ( ! strEsp8266_Fram_Record .InfBit .FramFinishFlag ); while ( ! xSerialFrameRecord .Bits_t .usFrameFinishFlag );
strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ] = '\0'; xSerialFrameRecord .cSerialReceivedBuffer [ xSerialFrameRecord .Bits_t .usFrameLength ] = '\0';
if ( enumEnUnvarnishTx ) if ( xEnumEnUnvarnishTx )
pRecStr = strEsp8266_Fram_Record .Data_RX_BUF; pRecStr = xSerialFrameRecord .cSerialReceivedBuffer;
else else
{ {
if ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "+IPD" ) ) if ( strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "+IPD" ) )
pRecStr = strEsp8266_Fram_Record .Data_RX_BUF; pRecStr = xSerialFrameRecord .cSerialReceivedBuffer;
} }
return pRecStr; return pRecStr;
} }

View File

@@ -17,12 +17,12 @@ typedef enum{
STA, STA,
AP, AP,
STA_AP STA_AP
} ENUM_Net_ModeTypeDef; } eNetMode_t;
typedef enum{ typedef enum{
enumTCP, enumTCP,
enumUDP, enumUDP,
} ENUM_NetPro_TypeDef; } eNetPro_t;
typedef enum{ typedef enum{
Multiple_ID_0 = 0, Multiple_ID_0 = 0,
@@ -31,7 +31,7 @@ typedef enum{
Multiple_ID_3, Multiple_ID_3,
Multiple_ID_4, Multiple_ID_4,
Single_ID_0, Single_ID_0,
} ENUM_ID_NO_TypeDef; } eIdNo_t;
typedef enum{ typedef enum{
OPEN = 0, OPEN = 0,
@@ -39,24 +39,7 @@ typedef enum{
WPA_PSK, WPA_PSK,
WPA2_PSK, WPA2_PSK,
WPA_WPA2_PSK, WPA_WPA2_PSK,
} ENUM_AP_PsdMode_TypeDef; } eApPsdMode_t;
/* 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;
/* ESP8266 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD> */ /* ESP8266 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD> */
#define macESP8266_CH_PD_CLK RCC_APB2Periph_GPIOA #define macESP8266_CH_PD_CLK RCC_APB2Periph_GPIOA
@@ -89,25 +72,31 @@ extern volatile uint8_t ucTcpClosedFlag;
static void vEsp8266GpioConfig ( void ); static void vEsp8266GpioConfig ( void );
void vEsp8266Init ( void ); void vEsp8266Init ( void );
void vEsp8266Rst ( 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 ); void vEsp8266AtTest ( void );
bool bEsp8266NetModeChoose ( ENUM_Net_ModeTypeDef enumMode ); bool bEsp8266NetModeChoose ( eNetMode_t xMode );
bool bEsp8266JoinAp ( char * pSSID, char * pPassWord ); bool bEsp8266JoinAp ( char * pcSsid, char * pcPassWord );
bool bEsp8266BuildAp ( char * pSSID, char * pPassWord, ENUM_AP_PsdMode_TypeDef enunPsdMode ); bool bEsp8266MqttInit ( char * pcMqttUser, char * pcMqttPwd, char * pcMqttCliId, char * pcMqttServerIp, char * usMqttServerPort );
bool bEsp8266EnableMultipleId ( FunctionalState enumEnUnvarnishTx ); bool bEsp8266BuildAp ( char * pcSsid, char * pcPassWord, eApPsdMode_t xPsdMode );
bool bEsp8266LinkServer ( ENUM_NetPro_TypeDef enumE, char * ip, char * ComNum, ENUM_ID_NO_TypeDef id); bool bEsp8266EnableMultipleId ( FunctionalState xEnumEnUnvarnishTx );
bool bEsp8266StartOrShutServer ( FunctionalState enumMode, char * pPortNum, char * pTimeOver ); 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 ucEsp8266GetLinkStatus ( void );
uint8_t ucEsp8266GetIdLinkStatus ( void ); uint8_t ucEsp8266GetIdLinkStatus ( void );
uint8_t ucEsp8266InquireApIp ( char * pApIp, uint8_t ucArrayLength ); uint8_t ucEsp8266InquireApIp ( char * pcApIp, uint8_t ucArrayLength );
bool bEsp8266UnvarnishSend ( void ); bool bEsp8266UnvarnishSend ( void );
void vEsp8266ExitUnvarnishSend ( void ); void vEsp8266ExitUnvarnishSend ( void );
bool bEsp8266SendString ( FunctionalState enumEnUnvarnishTx, char * pStr, uint32_t ulStrLength, ENUM_ID_NO_TypeDef ucId ); bool bEsp8266SendString ( FunctionalState xEnumEnUnvarnishTx, char * pcStr, uint32_t ulStrLength, eIdNo_t xId );
char * pcEsp8266ReceiveString ( FunctionalState enumEnUnvarnishTx ); char * pcEsp8266ReceiveString ( FunctionalState xEnumEnUnvarnishTx );
/* <20>û<EFBFBD><C3BB><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>õIJ<C3B5><C4B2><EFBFBD> */ /* <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_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> */ /* <20>ⲿȫ<E2B2BF>ֱ<EFBFBD><D6B1><EFBFBD> */

File diff suppressed because one or more lines are too long

View File

@@ -148,40 +148,7 @@
<Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM))</Name> <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM))</Name>
</SetRegEntry> </SetRegEntry>
</TargetDriverDllRegistry> </TargetDriverDllRegistry>
<Breakpoint> <Breakpoint/>
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>71</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>.\User\main.c</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
<Bp>
<Number>1</Number>
<Type>0</Type>
<LineNumber>72</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>.\User\main.c</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
</Breakpoint>
<WatchWindow1> <WatchWindow1>
<Ww> <Ww>
<count>0</count> <count>0</count>

View File

@@ -40,7 +40,7 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate)
NVIC_InitTypeDef NVIC_InitStructure; // <20><>ʼ<EFBFBD><CABC>NVIC<49><43>USART1ͨ<31><CDA8> NVIC_InitTypeDef NVIC_InitStructure; // <20><>ʼ<EFBFBD><CABC>NVIC<49><43>USART1ͨ<31><CDA8>
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; // <20>ж<EFBFBD>ͨ<EFBFBD><CDA8> NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; // <20>ж<EFBFBD>ͨ<EFBFBD><CDA8>
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5; // <20><>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>FreeRTOS<4F><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ڷ<EFBFBD>Χ<EFBFBD>ڿ<EFBFBD><DABF>Ե<EFBFBD><D4B5><EFBFBD>FreeRTOS<4F><53><EFBFBD>ԡ<EFBFBD>FromISR()<29><><EFBFBD><EFBFBD>β<EFBFBD><CEB2>api<70><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 6; // <20><>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>FreeRTOS<4F><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ڷ<EFBFBD>Χ<EFBFBD>ڿ<EFBFBD><DABF>Ե<EFBFBD><D4B5><EFBFBD>FreeRTOS<4F><53><EFBFBD>ԡ<EFBFBD>FromISR()<29><><EFBFBD><EFBFBD>β<EFBFBD><CEB2>api<70><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // <20><>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD> // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // <20><>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
NVIC_Init(&NVIC_InitStructure); // ָ<><D6B8>NVIC_InitStructure<72>ĵ<EFBFBD>ַ NVIC_Init(&NVIC_InitStructure); // ָ<><D6B8>NVIC_InitStructure<72>ĵ<EFBFBD>ַ
@@ -221,6 +221,7 @@ void USART1_IRQHandler(void)
{ {
/* code */ /* code */
#if (USE_RTOS == NONE) #if (USE_RTOS == NONE)
#elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART1_IRQ == 1) #elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART1_IRQ == 1)
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART1); uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART1);
BaseType_t xHigherPriorityTaskWoken = pdFALSE; BaseType_t xHigherPriorityTaskWoken = pdFALSE;
@@ -244,17 +245,17 @@ void USART2_IRQHandler(void)
{ {
#if (USE_RTOS == NONE && defined __ESP8266_SAMPLE_H__) #if (USE_RTOS == NONE && defined __ESP8266_SAMPLE_H__)
uint8_t ulRxData; uint8_t ulRxData;
if ( USART_GetITStatus ( macESP8266_USART, USART_IT_RXNE ) != RESET ) if ( USART_GetITStatus ( USART2, USART_IT_RXNE ) != RESET )
{ {
ulRxData = USART_ReceiveData( macESP8266_USART ); ulRxData = USART_ReceiveData( USART2 );
if ( strEsp8266_Fram_Record .InfBit .FramLength < ( RX_BUF_MAX_LEN - 1 ) ) //Ԥ<><D4A4>1<EFBFBD><31><EFBFBD>ֽ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> if ( xSerialFrameRecord .Bits_t .usFrameLength < ( BUFFER_MAX_LENGTH - 1 ) ) //Ԥ<><D4A4>1<EFBFBD><31><EFBFBD>ֽ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ++ ] = ulRxData; xSerialFrameRecord .cSerialReceivedBuffer [ xSerialFrameRecord .Bits_t .usFrameLength ++ ] = ulRxData;
} }
if ( USART_GetITStatus( macESP8266_USART, USART_IT_IDLE ) == SET ) //<2F><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> if ( USART_GetITStatus( USART2, USART_IT_IDLE ) == SET ) //<2F><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{ {
strEsp8266_Fram_Record .InfBit .FramFinishFlag = 1; xSerialFrameRecord .Bits_t .usFrameFinishFlag = 1;
ulRxData = USART_ReceiveData( macESP8266_USART ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ(<28>ȶ<EFBFBD>USART_SR<53><52>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD>USART_DR) ulRxData = USART_ReceiveData( USART2 ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ(<28>ȶ<EFBFBD>USART_SR<53><52>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD>USART_DR)
ucTcpClosedFlag = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CLOSED\r\n" ) ? 1 : 0; ucTcpClosedFlag = strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "CLOSED\r\n" ) ? 1 : 0;
} }
#elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART2_IRQ == 1) #elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART2_IRQ == 1)
if (USART_GetITStatus(USART2, USART_IT_RXNE) == SET) if (USART_GetITStatus(USART2, USART_IT_RXNE) == SET)
@@ -269,17 +270,17 @@ void USART2_IRQHandler(void)
} }
#elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART2_IRQ == 0) #elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART2_IRQ == 0)
uint8_t ulRxData; uint8_t ulRxData;
if ( USART_GetITStatus ( macESP8266_USART, USART_IT_RXNE ) != RESET ) if ( USART_GetITStatus ( USART2, USART_IT_RXNE ) != RESET )
{ {
ulRxData = USART_ReceiveData( macESP8266_USART ); ulRxData = USART_ReceiveData( USART2 );
if ( strEsp8266_Fram_Record .InfBit .FramLength < ( RX_BUF_MAX_LEN - 1 ) ) //Ԥ<><D4A4>1<EFBFBD><31><EFBFBD>ֽ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> if ( xSerialFrameRecord .Bits_t .usFrameLength < ( BUFFER_MAX_LENGTH - 1 ) ) //Ԥ<><D4A4>1<EFBFBD><31><EFBFBD>ֽ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ++ ] = ulRxData; xSerialFrameRecord .cSerialReceivedBuffer [ xSerialFrameRecord .Bits_t .usFrameLength ++ ] = ulRxData;
} }
if ( USART_GetITStatus( macESP8266_USART, USART_IT_IDLE ) == SET ) //<2F><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> if ( USART_GetITStatus( USART2, USART_IT_IDLE ) == SET ) //<2F><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{ {
strEsp8266_Fram_Record .InfBit .FramFinishFlag = 1; xSerialFrameRecord .Bits_t .usFrameFinishFlag = 1;
ulRxData = USART_ReceiveData( macESP8266_USART ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ(<28>ȶ<EFBFBD>USART_SR<53><52>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD>USART_DR) ulRxData = USART_ReceiveData( USART2 ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ(<28>ȶ<EFBFBD>USART_SR<53><52>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD>USART_DR)
ucTcpClosedFlag = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CLOSED\r\n" ) ? 1 : 0; ucTcpClosedFlag = strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "CLOSED\r\n" ) ? 1 : 0;
} }
#endif #endif
} }
@@ -293,6 +294,7 @@ void USART2_IRQHandler(void)
void USART3_IRQHandler(void) void USART3_IRQHandler(void)
{ {
#if (USE_RTOS == NONE) #if (USE_RTOS == NONE)
#elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART3_IRQ == 1) #elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART3_IRQ == 1)
if (USART_GetITStatus(USART3, USART_IT_RXNE) == SET) if (USART_GetITStatus(USART3, USART_IT_RXNE) == SET)
{ {

View File

@@ -27,7 +27,7 @@
#elif (USE_RTOS == FREERTOS) #elif (USE_RTOS == FREERTOS)
#include "FreeRTOS.h" #include "FreeRTOS.h"
#include "queue.h" #include "queue.h"
#define ENABLE_FREERTOS_API_QUEUE_USART1_IRQ 1 #define ENABLE_FREERTOS_API_QUEUE_USART1_IRQ 0
#define ENABLE_FREERTOS_API_QUEUE_USART2_IRQ 0 #define ENABLE_FREERTOS_API_QUEUE_USART2_IRQ 0
#define ENABLE_FREERTOS_API_QUEUE_USART3_IRQ 1 #define ENABLE_FREERTOS_API_QUEUE_USART3_IRQ 1
#endif #endif
@@ -36,7 +36,6 @@
#include <stdio.h> #include <stdio.h>
#include <stdarg.h> #include <stdarg.h>
#include <string.h> #include <string.h>
#include "ESP8266.h"
#if (ENABLE_FREERTOS_API_QUEUE_USART1_IRQ == 1) #if (ENABLE_FREERTOS_API_QUEUE_USART1_IRQ == 1)
extern QueueHandle_t xQueueUsart1IrqHdlr; extern QueueHandle_t xQueueUsart1IrqHdlr;
@@ -48,6 +47,21 @@
extern QueueHandle_t xQueueUsart3IrqHdlr; extern QueueHandle_t xQueueUsart3IrqHdlr;
#endif #endif
extern volatile uint8_t ucTcpClosedFlag;
#define BUFFER_MAX_LENGTH 1024 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
extern struct SerialFrame_t // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><E1B9B9>
{
char cSerialReceivedBuffer [ BUFFER_MAX_LENGTH ];
union {
__IO uint16_t usInfoAll;
struct {
__IO uint16_t usFrameLength :15; // 14:0
__IO uint16_t usFrameFinishFlag :1; // 15
} Bits_t;
};
} xSerialFrameRecord;
void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate); void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate);
void vUsartSendByte(USART_TypeDef *xUsartId, uint8_t ucByte); void vUsartSendByte(USART_TypeDef *xUsartId, uint8_t ucByte);
void vUsartSendArray(USART_TypeDef *xUsartId, uint8_t *pucArray, uint16_t usLength); void vUsartSendArray(USART_TypeDef *xUsartId, uint8_t *pucArray, uint16_t usLength);

View File

@@ -12,7 +12,8 @@
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һһ<D2BB><D2BB>Ӧ<EFBFBD><D3A6> */ /* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һһ<D2BB><D2BB>Ӧ<EFBFBD><D3A6> */
TaskHandle_t xTaskStateLedHdlr; TaskHandle_t xTaskStateLedHdlr;
TaskHandle_t xTaskBufferRxHdlr; TaskHandle_t xTaskBufferRxHdlr;
TaskHandle_t xTaskApConnectHdlr; TaskHandle_t xTaskWifiJoinApHdlr;
TaskHandle_t xTaskWifiMqttInitHdlr;
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD> */ /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD> */
QueueHandle_t xQueueUsart1IrqHdlr; QueueHandle_t xQueueUsart1IrqHdlr;
@@ -42,7 +43,7 @@ void vTaskStateLed(void *pvParameters)
} }
void vTaskApConnection(void *pvParameters) void vTaskWifiJoinAp(void *pvParameters)
{ {
while (1) while (1)
{ {
@@ -50,10 +51,43 @@ void vTaskApConnection(void *pvParameters)
vEsp8266AtTest(); vEsp8266AtTest();
bEsp8266NetModeChoose(STA); bEsp8266NetModeChoose(STA);
while(!bEsp8266JoinAp(ESP8266_APSSID, ESP8266_APPWD)); while(!bEsp8266JoinAp(ESP8266_APSSID, ESP8266_APPWD));
vUsartPrintf(USART1, "Wifi Join To AP Success\r\n");
vTaskDelete(NULL); vTaskDelete(NULL);
} }
} }
void vTaskWifiMqttInit(void *pvParameters)
{
// bool bMqttUserCfgInit = false, bMqttCliIdInit = false, bMqttConnectResult = false;
BaseType_t bMqttConnectResult = pdFALSE;
while (1)
{
// MQTT<54><54>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// bMqttUserCfgInit = bEsp8266Command("AT+MQTTUSERCFG=0,1,\"NULL\",\"stm32\",\"IPSK25em.\",0,0,\"\"", "OK", NULL, 1500);
// bMqttCliIdInit = bEsp8266Command("AT+MQTTCLIENTID=0,\"TestServer&stm32\"", "OK", NULL, 1500);
// bMqttConnectResult = bEsp8266Command("AT+MQTTCONN=0,\"121.36.104.9\",1883,1", "OK", NULL, 2000);
// if (bMqttUserCfgInit == true && bMqttCliIdInit == true && bMqttConnectResult == true)
// {
// /* code */
// vUsartPrintf(USART1, "MQTT Init Success\r\n");
// break;
// } else
// {
// /* code */
// vUsartPrintf(USART1, "MQTT Init Failed, Retry...\r\n");
// vDelayMs(2000);
// }
bMqttConnectResult = bEsp8266MqttInit(ESP8266_MQTT_USERNAME, ESP8266_MQTT_PASSWORD, ESP8266_MQTT_CLIENT_ID, ESP8266_MQTT_SERVER_IP, ESP8266_MQTT_SERVER_PORT);
if (bMqttConnectResult == pdFALSE)
{
vUsartPrintf(USART1, "MQTT Init Failed, Retry...\r\n");
vDelayMs(2000);
continue;
}
vUsartPrintf(USART1, "MQTT Init Success\r\n");
vTaskDelete(NULL);
}
}
/** /**
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD> * @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
@@ -71,12 +105,19 @@ void vCreateTasksList(void)
(UBaseType_t ) 2, (UBaseType_t ) 2,
(TaskHandle_t * ) &xTaskStateLedHdlr); (TaskHandle_t * ) &xTaskStateLedHdlr);
xTaskCreate( xTaskCreate(
(TaskFunction_t ) vTaskApConnection, (TaskFunction_t ) vTaskWifiJoinAp,
(char * ) "TaskName_WifiConnectToAP", (char * ) "TaskName_WifiConnectToAP",
(configSTACK_DEPTH_TYPE) 512, (configSTACK_DEPTH_TYPE) 512,
(void * ) NULL, (void * ) NULL,
(UBaseType_t ) 2, (UBaseType_t ) 2,
(TaskHandle_t * ) &xTaskApConnectHdlr); (TaskHandle_t * ) &xTaskWifiJoinApHdlr);
xTaskCreate(
(TaskFunction_t ) vTaskWifiMqttInit,
(char * ) "TaskName_WifiInitMQTTProtocol",
(configSTACK_DEPTH_TYPE) 512,
(void * ) NULL,
(UBaseType_t ) 2,
(TaskHandle_t * ) &xTaskWifiMqttInitHdlr);
} }
/** /**
@@ -125,6 +166,7 @@ void vCreateSemaphoresList(void)
*/ */
int main(void) int main(void)
{ {
vUsartInit(USART1, 115200);
vUsartInit(USART2, 115200); vUsartInit(USART2, 115200);
vUsartInit(USART3, 115200); vUsartInit(USART3, 115200);
vDelayInit(); vDelayInit();