UCOSII lWIP.zip
(994.09 KB)
之前不加操作系统 stm32f103作为服务器 接受到浏览器发送的GET请求后,发送网页数据,现在想把ucos ii 加上LWIP 专门创建了一个任务轮询数据,但是netconn_recv函数总返回NULL 跟踪发现OSQAccept里队列里没有信息,建立连接后直接netconn_write发送数据,浏览器也没有反应......倒是可以ping通...希望大家指点下了....这是我的工程MDK编译的...或者给否发给我一个例子参考下 谢谢了
这是我app的程序:
#include "includes.h"
#include "api.h"
extern struct netif enc28j60;
OS_STK ReceiveS[RECEIVE]; //定义栈
OS_STK TASK_LED3_STK[TASK_LED3_STK_SIZE];
const unsigned char htmldata[]="HTTP/1.1 200 OK\r\nContent-type: text/html\r\n\
<html>\
<head><title>TEST!!</title></head>\
<center><p>SBdian gong </center>\
</html>";
void Task_Start(void*p_arg)
{
struct netconn *conn,*newconn;
// OS_CPU_SR cpu_sr;
(void)p_arg; //p_arg没有用到 防止编译器报警
ENC_SPI_Init();
LwIP_Init();
conn=netconn_new(NETCONN_TCP);
netconn_bind(conn,NULL,80);
netconn_listen(conn);
OSTaskCreate(Receive,(void*)0,&ReceiveS[RECEIVE-1],RECEIVE_PRIO);
while(1)
{
newconn=netconn_accept(conn);
if(newconn!=NULL)
{
struct netbuf *inbuf;
char *dataptr;
u16_t size;
inbuf=netconn_recv(newconn);
// netconn_write(newconn,htmldata,sizeof(htmldata),NETCONN_NOCOPY);
if(inbuf!=NULL)
{
// OS_ENTER_CRITICAL();
netbuf_data(inbuf,&dataptr,&size);
if(size>=3&&dataptr[0]=='G'&&dataptr[1]=='E'&&dataptr[2]=='T')
{
netconn_write(newconn,htmldata,sizeof(htmldata),NETCONN_NOCOPY);
}
netbuf_delete(inbuf);
// OS_EXIT_CRITICAL();
}
netconn_close(newconn);
netconn_delete(newconn);
}
}
}
void Receive(void*p_arg)
{
(void)p_arg;
while(1)
{
ethernetif_input(&enc28j60);
OSTimeDlyHMSM(0,0,0,5);
}
}
|