打印

请教关于enc28j60+lwip+ucosii的问题

[复制链接]
1318|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lhwaizhu|  楼主 | 2013-12-26 19:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


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);
                }               
}

相关帖子

沙发
lhwaizhu|  楼主 | 2013-12-27 11:01 | 只看该作者
现在偶尔一次netconn _recv返回的数据不为NULL 并且能判断出get命令  可是发送出网页数据后 浏览器还是显示不出来。。。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

79

帖子

2

粉丝