学前班
最后登录1970-1-1
在线时间 小时
注册时间2017-5-3
|
楼主 |
发表于 2017-5-3 18:12:30
|
显示全部楼层
测试函数如下,目前esp8266发送温度给手机没有问题,但是手机发数据esp8266没有反应,不知道哪里出错了。请指教。
说明:esp8266在sta模式下作为Tcp client,手机的网络调试助手是Tcp server,两者连wifi同一个局域网下通信
void ESP8266_STA_TCPClient_Test(void)
{
u8 res;
short read_temp=0;
float rtemp;
char str[100]={0};
printf ( "\r\n正在配置ESP8266请耐心等待..\r\n" );//
ESP8266_CH_PD_Pin_SetH;
ESP8266_AT_Test();//
ESP8266_Net_Mode_Choose(STA);//AT+CWMODE=1
while(!ESP8266_JoinAP(User_ESP8266_SSID, User_ESP8266_PWD));//连接WIFI
ESP8266_Enable_MultipleId ( DISABLE );//启动多连接
while(!ESP8266_Link_Server(enumTCP,User_ESP8266_TCPServer_IP,User_ESP8266_TCPServer_PORT, Single_ID_0));
//连接服务端(手机)
while(!ESP8266_UnvarnishSend());//配置透传发送
printf ( "\r\n配置esp8266 OK!\r\n" );
while ( 1 )
{
read_temp=DS18B20_Get_Temp();//读取温度
rtemp=(float)read_temp*1.0/10;//
sprintf(str,"temp=%.1fC\r\n",rtemp);//转为字符串
printf(str);串口打印温度(电脑串口调试助手)
delay_ms(1000);//延时1秒
ESP8266_SendString( ENABLE, str, 0, Single_ID_0 );//发送数据到手机(用网络调试助手接收)
delay_ms(1000);//目前这一步之前都没有问题
//接收数据的检测
ESP8266_ReceiveString(ENABLE);
if( ESP8266_Fram_Record_Struct .InfBit .FramFinishFlag)
{
pCH=atoi(ESP8266_Fram_Record_Struct.Data_RX_BUF);
printf("准备接收数据:\r\n");
sprintf(str,"receive:%.1f\r\n",pCH);//转为字符串
printf(str);
printf(ESP8266_Fram_Record_Struct.Data_RX_BUF);
}
delay_ms(1000);
if(TcpClosedFlag) //检测是否失去连接
{
delay_ms(10);
ESP8266_ExitUnvarnishSend(); //
do
{
res = ESP8266_Get_LinkStatus(); //
}
while(!res);
if(res == 4) //
{
while (!ESP8266_JoinAP(User_ESP8266_SSID, User_ESP8266_PWD ) );
while (!ESP8266_Link_Server(enumTCP, User_ESP8266_TCPServer_IP, User_ESP8266_TCPServer_PORT, Single_ID_0 ) );
}
while(!ESP8266_UnvarnishSend());
}
}
} |
|