后面自己看看吧,我要下班了,所以撤了,如果不懂的,可以说一下,如果有不对的,也说一下,我就昨天正好看关于WIFI的代码啊啊,学习AT指令玩玩,如果理解不对,技术水平低,也请见谅。充实自己,加油,如果我的CSDN资料开放的话,也可以看到相关解说,还没写完,估计暂不开放
- void ESP8266_StaTcpClient_UnvarnishTest ( void )//客服端,采用TCP协议通信
- {
- uint8_t ucId, ucLen;//定义ID号,数据长度
- uint8_t ucLed1Status = 0, ucLed2Status = 0, ucLed3Status = 0, ucBuzzerStatus = 0;//控制模块初始化,例如LED1,LED2.。。。
- char cStr [ 100 ] = { 0 }, cCh;//定义数组以及变量,方便后面使用
- char * pCh, * pCh1;//定义指针
- DHT11_Data_TypeDef DHT11_Data;//DHT11温湿度传感器数据
-
- printf ( "\r\n正在配置 ESP8266 ......\r\n" );//打印正在配置WIFI信息(正常应该是串口显示)
- macESP8266_CH_ENABLE();//wifi 模块使能,应该使其工作,代码不全,我估计实际就是是CH_PD相应引脚置高
-
- ESP8266_AT_Test ();//AT指令测试,正常是发送AT+空格,返回OK
-
- ESP8266_Net_Mode_Choose ( AP );//选择工作模式(AP模式)这个模式相当于WIFI热点
- while ( ! ESP8266_CIPAP ( macUser_ESP8266_TcpServer_IP ) );//检测服务器IP(具体的能看一下代码好说)
- while ( ! ESP8266_BuildAP ( macUser_ESP8266_BulitApSsid, macUser_ESP8266_BulitApPwd, macUser_ESP8266_BulitApEcn ) ); //建立AP 并设置相关信息
-
- ESP8266_Enable_MultipleId ( ENABLE );//允许多路通信
-
- while ( ! ESP8266_StartOrShutServer ( ENABLE, macUser_ESP8266_TcpServer_Port, macUser_ESP8266_TcpServer_OverTime ) );
- ESP8266_Inquire_ApIp ( cStr, 20 );
- printf ( "\r\n本模块WIFI为%s,密码开放\r\nAP IP 为:%s,开启的端口为:%s\r\n手机网络助手连接该 IP 和端口,最多可连接5个客户端\r\n",
- macUser_ESP8266_BulitApSsid, cStr, macUser_ESP8266_TcpServer_Port );//设定5个原因也好玩,自己看代码
-
-
- strEsp8266_Fram_Record .InfBit .FramLength = 0;//接收数据位初始化
- strEsp8266_Fram_Record .InfBit .FramFinishFlag = 0; //最后一位检测为初始化
-
- while ( 1 )
- {
- if ( strEsp8266_Fram_Record .InfBit .FramFinishFlag )//标志位位1
- {
- USART_ITConfig ( macESP8266_USARTx, USART_IT_RXNE, DISABLE ); //禁用串口接收中断
- strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ] = '\0';//增加空格符
-
- // printf ( "\r\n%s\r\n", strEsp8266_Fram_Record .Data_RX_BUF );//
- if ( ( pCh = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_LED_" ) ) != 0 ) //strstr字符串比较函数,存在后者字符返回1
- {
- cCh = * ( pCh + 8 );//为啥要加8呢?实际上是因为CMD_LED_占8个字符,要用的数据在它后一位,起始位为0,所以加8后指针调用就是它要的数据
-
- switch ( cCh )
- {
- case '1':
- cCh = * ( pCh + 10 );//同理,
- switch ( cCh )
- {
- case '0':
- macLED1_OFF ();
- ucLed1Status = 0;
- break;
- case '1':
- macLED1_ON ();
- ucLed1Status = 1;
- break;
- default :
- break;
- }
- break;
-
- case '2':
- cCh = * ( pCh + 10 );
- switch ( cCh )
- {
- case '0':
- macLED2_OFF ();
- ucLed2Status = 0;
- break;
- case '1':
- macLED2_ON ();
- ucLed2Status = 1;
- break;
- default :
- break;
- }
- break;
- case '3':
- cCh = * ( pCh + 10 );
- switch ( cCh )
- {
- case '0':
- macLED3_OFF ();
- ucLed3Status = 0;
- break;
- case '1':
- macLED3_ON ();
- ucLed3Status = 1;
- break;
- default :
- break;
- }
- break;
-
- default :
- break;
-
- }
-
- sprintf ( cStr, "CMD_LED_%d_%d_%d_ENDLED_END", ucLed1Status, ucLed2Status, ucLed3Status );
-
- }
-
- else if ( ( pCh = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_BUZZER_" ) ) != 0 )
- {
- cCh = * ( pCh + 11 );
-
- switch ( cCh )
- {
- case '0':
- macBEEP_OFF ();
- ucBuzzerStatus = 0;
- break;
- case '1':
- macBEEP_ON ();
- ucBuzzerStatus = 1;
- break;
- default:
- break;
- }
-
- sprintf ( cStr, "CMD_BUZZER_%d_ENDBUZZER_END", ucBuzzerStatus );
-
- }
-
- else if ( ( ( pCh = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_UART_" ) ) != 0 ) &&
- ( ( pCh1 = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "_ENDUART_END" ) ) != 0 ) )
- {
- if ( pCh < pCh1)
- {
- ucLen = pCh1 - pCh + 12;
- memcpy ( cStr, pCh, ucLen );
- cStr [ ucLen ] = '\0';
- }
- }
- else if ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_READ_ALL_END" ) != 0 )
- {
- DHT11_Read_TempAndHumidity ( & DHT11_Data );
- sprintf ( cStr, "CMD_LED_%d_%d_%d_ENDLED_DHT11_%d.%d_%d.%d_ENDDHT11_BUZZER_%d_ENDBUZZER_END",
- ucLed1Status, ucLed2Status, ucLed3Status, DHT11_Data .temp_int,
- DHT11_Data .temp_deci, DHT11_Data .humi_int, DHT11_Data .humi_deci,
- ucBuzzerStatus );
- }
-
-
- if ( ( pCh = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "+IPD," ) ) != 0 )
- {
- ucId = * ( pCh + strlen ( "+IPD," ) ) - '0';
- ESP8266_SendString ( DISABLE, cStr, strlen ( cStr ), ( ENUM_ID_NO_TypeDef ) ucId );
- }
-
- strEsp8266_Fram_Record .InfBit .FramLength = 0;
- strEsp8266_Fram_Record .InfBit .FramFinishFlag = 0;
-
- USART_ITConfig ( macESP8266_USARTx, USART_IT_RXNE, ENABLE ); //使能串口接收中断
-
- }
-
- }
-
-
- }
复制代码
|