首页 新闻 搜索 专区 学院

uip0.9+ENC28J60 缓存的读写发送

0
悬赏园豆:5 [已关闭问题] 关闭于 2013-06-14 10:40

当接收到TCP数据,执行如下的代码,将受到的TCP数据发回去。

void example0_app(void)

{

       u16_t i;//

if(uip_connected()){

printu("example0 is connected!\r\n");

       }

       if(uip_newdata() || uip_rexmit()) {

              printu("example0 is uip_newdata!\r\n");     

              for(i=0;i<uip_len;i++)   {

                     printuf("%c", uip_appdata[i]);      //输出字符串

              }

           if(uip_appdata[0]=='C'){

              uip_send(&uip_appdata[0],uip_len);

}

}

}

 

我在enc28j60.c的程序中,将驱动添加了如下的红色代码,想如果收到数据的第二位是‘q’就把它换成‘x’然后再发回去的,但是我发现如果我输入数据”Cbcdefg”可以正确的返回的,但是如果我输入”Cqcdefg”就没有返回了,好像卡住了似得,需要重新断开TCP连接,然后再连上,才可以工作(但,还是不可以发送第二个是’q’的数据的)不知道问题出在哪里了?

void enc28j60PacketSend(u16_t len, u8_t* packet)

{

    // Set the write pointer to start of transmit buffer area

       enc28j60Write(EWRPTL, TXSTART_INIT);

    enc28j60Write(EWRPTH, TXSTART_INIT>>8);

    // Set the TXND pointer to correspond to the packet size given

       enc28j60Write(ETXNDL, (TXSTART_INIT+len));

    enc28j60Write(ETXNDH, (TXSTART_INIT+len)>>8);

       enc28j60WriteOp(ENC28J60_WRITE_BUF_MEM, 0, 0x00);

 

if( uip_len <= TOTAL_HEADER_LENGTH ){

              enc28j60WriteBuffer(len, packet);

    }

    else

    {   len -= TOTAL_HEADER_LENGTH;

        enc28j60WriteBuffer(TOTAL_HEADER_LENGTH, packet);

              if(uip_appdata[1]=='q') uip_appdata[1]='x';

        enc28j60WriteBuffer(len, (unsigned char *)uip_appdata);

    }

       enc28j60WriteOp(ENC28J60_BIT_FIELD_SET, ECON1, ECON1_TXRTS);

}

 

TCP服务器,ip是192.168.1.14  端口是 8000

需要用TCP客户端连上去。开机后,小等一下再连。串口波特率9600;

客户端TCP发送 “C.......”的数据就会返回元数据,但是当客户端发送“Cq........”数据后,就没有返回了,卡住了好像·················额··············

我的代码在这里,2#,好像要登入后才可以下载··博客园里面不知道这么上传,所以就只好弄在那边了····

http://bbs.21ic.com/forum.php?mod=viewthread&tid=552046&page=1&extra=#pid3124570
牵着你的手不放的主页 牵着你的手不放 | 菜鸟二级 | 园豆:214
提问于:2013-05-23 10:50
< >
分享
所有回答(1)
0

觉得也许是程序内部的,指针直来直去的,那个地方可能我没有弄明白,有木有人指点下啊~~~

牵着你的手不放 | 园豆:214 (菜鸟二级) | 2013-05-23 14:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册