使用PC机在局域网内搭建一个网站,用别的电脑可以访问
开发板这边是用的ATK-RM04,原子哥的例程跑通了可以在局域网内通信,那么问题来了。。。
ATK-RM04设置为WIFI-STA 连接上路由器,远端IP设置为我的PC的IP:192.168.0.107,端口设置成80(http是用于寻址和指定类型的,接死以后就不用http了,直接往端口里送get等命令就好了)
客户端模式,配置上没问题,但是当连接上之后在不发送GET的情况下也会返回数据,返回的是400,如图:
不知道哪位大神搞过这个,为什么一直返回400,本来还想搞一搞YEELINK,但是发现也是返回400
我期待的目标结果是
如果 能返回这个 就说明正确 了,但是现在不知道 在哪个环节有问题
代码如下:
[mw_shl_code=c,true]u8 atk_rm04_wifista_test(void)
{
u8 netpro=0; //网络模式
u8 key;
u8 timex=0;
u8 ipbuf[16]; //IP缓存
u8 *p;
u16 t=999; //加速第一次获取链接状态
u8 res=0;
u16 rlen=0;
u8 constate=0; //连接状态
p=mymalloc(SRAMIN,100); //申请32字节内存
atk_rm04_send_cmd("at+netmode=2","ok",500); //设置WIFI STA(wifi网卡)模式
atk_rm04_send_cmd("at+dhcpc=1","ok",500); //DHCP客户端使能(net_ip无效)
//设置连接到的WIFI网络名称/加密方式/密码,这几个参数需要根据您自己的路由器设置进行修改!!
sprintf((char*)p,"at+wifi_conf=%s,%s,%s",wifista_ssid,wifista_encryption,wifista_password);//设置无线参数:ssid,加密方式,密码
atk_rm04_send_cmd(p,"ok",500); //配置无线参数
netpro=atk_rm04_netpro_sel(50,30,(u8*)ATK_RM04_NETMODE_TBL[2]); //选择网络模式
atk_rm04_send_cmd("at+remotepro=tcp","ok",500); //TCP协议
sprintf((char*)p,"at+remoteport=%s",portnum);
atk_rm04_send_cmd(p,"ok",500); //设置 端口号.
atk_rm04_send_cmd("at+remoteip=192.168.0.107","ok",500); //设置远端(连接)IP地址.
atk_rm04_send_cmd("at+mode=client","ok",500); //设置为客户端
LCD_Clear(WHITE);
POINT_COLOR=RED;
Show_Str_Mid(0,30,"ATK-RM04 WIFI-STA 测试",16,240);
Show_Str(30,50,200,16,"正在配置ATK-RM04模块,请稍等...",12,0);
if(atk_rm04_send_cmd("at+net_commit=1","\r\n",4000))//提交网络配置,最长可能需要等待40s
{
LCD_Fill(30,50,239,50+12,WHITE); //清除之前的显示
Show_Str(30,50,200,16,"配置ATK-RM04模块失败!",12,0);
delay_ms(800);
res=1;
}else
{
atk_rm04_send_cmd("at+reconn=1","ok",500); //重启串口转换服务
LCD_Fill(30,50,239,50+12,WHITE); //清除之前的显示
Show_Str(30,50,200,16,"配置ATK-RM04模块成功!",12,0);
delay_ms(600);
Show_Str(30,50,200,16,"WK_UP:退出测试 KEY0:发送数据",12,0);
atk_rm04_quit_trans(); //退出透传
while(atk_rm04_get_wifista_state()==0) //等待ATK-RM04连接上路由器
{
Show_Str(30,80,200,12,"ATK-RM04 连接路由器失败",12,0); //连接失败
delay_ms(800);
Show_Str(30,80,200,12,"ATK-RM04 等待连接中....",12,0);
delay_ms(800);
}
LCD_Fill(30,80,239,80+12,WHITE);
if((netpro&0X01)==0)atk_rm04_get_wanip(ipbuf);//服务器模式,获取WAN IP
sprintf((char*)p,"IP地址:%s 端口:%s",ipbuf,(u8*)portnum);
Show_Str(30,65,200,12,p,12,0); //显示IP地址和端口
Show_Str(30,80,200,12,"状态:",12,0); //连接状态
Show_Str(120,80,200,12,"模式:",12,0); //连接状态
Show_Str(30,100,200,12,"发送数据:",12,0); //发送数据
Show_Str(30,115,200,12,"接收数据:",12,0); //接收数据
atk_rm04_wificonf_show(30,180,"请设置路由器无线参数为:",(u8*)wifista_ssid,(u8*)wifista_encryption,(u8*)wifista_password);
POINT_COLOR=BLUE;
Show_Str(120+30,80,200,12,(u8*)ATK_RM04_WORKMODE_TBL[netpro],12,0); //连接状态
USART2_RX_STA=0;
while(1)
{
key=KEY_Scan(0);
if(key==4) //WK_UP 退出测试
{
res=0;
break;
}else if(key==1) //KEY0 发送数据
{
u2_printf("GET HTTP/1.1\r\n"); //发送 GET请求
u2_printf("Host:192.168.0.107:80\r\n\r\n");
timex=100;
}
if(timex)timex--;
if(timex==1)LCD_Fill(30+54,100,239,112,WHITE);
t++;
delay_ms(10);
if(USART2_RX_STA&0X8000) //接收到一次数据了
{
rlen=USART2_RX_STA&0X7FFF; //得到本次接收到的数据长度
USART2_RX_BUF[rlen]=0; //添加结束符
printf("%s",USART2_RX_BUF); //发送到串口
sprintf((char*)p,"收到%d字节,内容如下",rlen);//接收到的字节数
LCD_Fill(30+54,115,239,130,WHITE);
POINT_COLOR=BRED;
Show_Str(30+54,115,156,12,p,12,0); //显示接收到的数据长度
POINT_COLOR=BLUE;
LCD_Fill(30,130,239,319,WHITE);
Show_Str(30,130,180,190,USART2_RX_BUF,12,0);//显示接收到的数据
USART2_RX_STA=0;
if(constate==0)t=1000; //状态为还未连接,立即更新连接状态
else t=0; //状态为已经连接了,10秒后再检查
}
if(t==1000)//连续10秒钟没有收到任何数据,检查连接是不是还存在.
{
constate=atk_rm04_consta_check()-'0';//得到连接状态
if(constate)Show_Str(30+30,80,200,12,"连接成功",12,0); //连接状态
else Show_Str(30+30,80,200,12,"连接失败",12,0);
t=0;
}
if((t%20)==0)LED0=!LED0;
atk_rm04_at_response(1);
}
}
myfree(SRAMIN,p); //释放内存
atk_rm04_quit_trans(); //退出透传
return res;
}
[/mw_shl_code]
|