搜索
bottom↓
回复: 14

enc28j60+uip PING通 但是测试UDP收发数据不通

[复制链接]

出0入0汤圆

发表于 2010-3-11 20:32:09 | 显示全部楼层 |阅读模式
请教:STM32+enc28j60+uip PING通 但是测试UDP收发数据不通  
写了一个基于uip的UDP收发数据的测试程序,其功能是:目标板接收到PC发来的以太网数据后返回接收到的数据给PC,可以PING通,但是收发不了数据,不知道是不是uip的配置弄错,还是其它什么原因,大家帮帮忙。UDP 初始化 和UDP回调函数如下(不知道是不是这样写):
u8_t data_buf[200]={0},data_len=0,rec_ok_flag=0;

static  struct uip_udp_conn *conn_tftp=NULL;
void example1_init(void)
{
//uip_listen(HTONS(1234));   //TCP  
u16_t any[2];
   //远程IP为192.168.1.200
uip_ipaddr(any, 192, 168, 1, 200);
if(conn_tftp != NULL)  
{
uip_udp_remove(conn_tftp);//如果连接已经建立,则删除之
}
conn_tftp = uip_udp_new(any, HTONS(1000)); //建立到远程ipaddr,端口为1000的连接
if(conn_tftp != NULL)
{
//绑定本地端口为  1000
conn_tftp->lport = HTONS(1000);
}

}


void example1_app(void)
{
unsigned char i ;
u8_t cmd_data[8]={0x55,0x06,0x2B,0x00,0x00,0x00,0x00,0x87};
if(uip_connected())  
  {
       uip_send("UART TO LAN V0.1\n",17);
      }
if(uip_newdata() || uip_rexmit() )
  {
       for(i=0;i<uip_datalen();i++)
          {
          data_buf=*uip_appdata++;
          }
   data_len=uip_datalen();
   rec_ok_flag=1;
  }
if (uip_poll())
    {
     if (rec_ok_flag)
    {
     uip_send(data_buf, data_len);
rec_ok_flag=0;
    }
  else
  {
   uip_send(cmd_data, 8);
  }
}
}
void tcp_appcall(void)
{

}

小弟刚接触以太网不是很懂,不知道UIP哪里配置错,知道原因的朋友帮帮忙,谢谢!附上代码,帮忙看看

PING 通过 (原文件名:PING 192.168.1.5.jpg)


UDP数据没返回1 (原文件名:udp数据没返回.jpg)


UDP数据没返回2 (原文件名:UDP数据没返回2.jpg)

点击此处下载 ourdev_537881.rar(文件大小:1.47M) (原文件名:uip_0_9.rar)

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2010-3-12 14:21:34 | 显示全部楼层
不要沉 继续顶

出0入0汤圆

 楼主| 发表于 2010-3-12 20:12:29 | 显示全部楼层
难道没人知道吗??不是吧

出0入0汤圆

 楼主| 发表于 2010-3-14 22:45:00 | 显示全部楼层
继续关注

出0入0汤圆

 楼主| 发表于 2010-3-16 22:08:55 | 显示全部楼层
在顶

出0入0汤圆

发表于 2010-3-16 22:12:58 | 显示全部楼层
你,收到UDP包先点灯,如果能点亮,说明是返回包的IP PORT信息不符合源端(PC端),所以PC收不到

出0入0汤圆

 楼主| 发表于 2010-3-19 00:20:35 | 显示全部楼层
楼上能说具体一些吗??

出0入0汤圆

发表于 2010-3-19 11:07:18 | 显示全部楼层
建议楼主再看看Uip的文档。你那个UDP的回调函数也不是作用在UDP的。估计你是从tcp的回调函数改过来的吧,有些指令不是用在UDP上的。而且,UDP的发送函数是 uip_udp_send(); 同时,uip的默认UDP回调函数是udp_appcall,如果你要改动,需要重新定义。

出0入0汤圆

 楼主| 发表于 2010-3-20 11:27:05 | 显示全部楼层
多谢楼上提醒 的确UDP的发送函数是 uip_udp_send(); 继续关注
现在没用那个UIP协议的 我用另外一个调试UDP TO CAN 成功了 也比较简单只要几个函数就可以了 没UIP复杂

出0入0汤圆

发表于 2011-4-29 08:56:40 | 显示全部楼层
支持楼主分享

出0入0汤圆

发表于 2011-11-14 09:18:39 | 显示全部楼层
楼主能帮帮我吗?我现在在使用UIP协议栈,准备进行UDP通讯,但不知道UDP函数改怎么写,写完之后放到哪个位置,您能帮帮我嘛?348651265

出0入0汤圆

发表于 2012-8-3 17:04:05 | 显示全部楼层
最近也碰到类似问题,只接触UDP协议4天,继续看中。。。。。

出0入0汤圆

发表于 2013-6-25 11:17:47 | 显示全部楼层
我用了别人一个51里移植的UIP 结果现在都ping不通,头疼中

出0入0汤圆

发表于 2013-10-8 19:19:16 | 显示全部楼层
dainqi10 发表于 2013-6-25 11:17
我用了别人一个51里移植的UIP 结果现在都ping不通,头疼中

您好!现在ping通了吗?我现在STM32+ENC28J60移植uip也ping不通呢?多指教

出0入0汤圆

发表于 2013-11-6 15:52:38 | 显示全部楼层
wangkangming 发表于 2013-10-8 19:19
您好!现在ping通了吗?我现在STM32+ENC28J60移植uip也ping不通呢?多指教

估计是uip_ethaddr.addr[x]里边没有初始化,我初始化之后就可以Ping通。在tapdev.c里边的tapdev_init();加上
for(i = 0; i<6 ; i++){
  uip_ethaddr.addr = mymac;
}
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 21:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表