Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9208256
  • 博文数量: 1728
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 19870
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1728)

文章存档

2024年(4)

2023年(26)

2022年(112)

2021年(217)

2020年(157)

2019年(192)

2018年(81)

2017年(78)

2016年(70)

2015年(52)

2014年(40)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: Android平台

2014-09-22 11:55:10

FreeRTOSLWIPUDP使用例子与注意事项

这段时间忙着FreeRTOSLWIP协议的使用,一个项目要用到这个,要代替别人的产品使用,所以通信数据部分协议是一样的.

整个的代码包括LWIP的进程里面包括监听80端口的web服务端   NTP的对时服务    还有UDP的数据发送

   这里主要把我的UDP部分列出了,这个是LWIP中提供的标准函数

添加的UDP进程,同样在这添加NTPweb进程

sys_thread_new("UDP", UDPThread, (void *)NULL, UDP_THREAD_STACK_SIZE, UDP_THREAD_PRIORITY);

接下来就是在这个进程进行添加子程序,我这里是发送UDPData_Open这个数组

的值。

UINT8 UDPData_Open[6]

void UDPThread(void *pvParameters)

{

  while(1)

  {

     UDPSever();

  }

}

接下来就是UDPServer()添加相应的程序

void UDPSever(void)

{

    pUdpPcb = udp_new();               //建立UDP控制块(pcb)

    udp_bind(pUdpPcb,IP_ADDR_ANY, 1025);//绑定本地IP地址,端口

 

pPbuf = pbuf_alloc(PBUF_RAW,sizeof(UDPData_Open),PBUF_ROM);          //问题可能出在这*****************************

    pPbuf -> payload = (void *)UDPData_Open;    

 //把发送的数据首地址赋值给pbuf缓存中的payload

   IP4_ADDR(&Ipaddr,192.168.1.190 );  //ip地址结构体赋值

udp_sendto(pUdpPcb,pPbuf,&Ipaddr,5004);                //向对应IP,端口发送字符信息

    udp_disconnect(pUdpPcb);                  //断掉对应的链接

    pbuf_free(pPbuf);                      //释放对应的pPbuf的空间

}

这个整个的工程中需要注意的有以下几点

Num1UDP_THREAD_STACK_SIZE这个的堆栈空间问题,如果堆栈空间太少,会出现发送的数据是乱码,如果只是测试阶段可以设置大些,之后再进行优化。

 

Num2pbuf_alloc(PBUF_RAW,sizeof(UDPData_Open),PBUF_ROM)这个的pPbuf的设置问题可以直接从网上找的到这几个数据的定义是什么意思。

 

Num3:UDP协议是面向无连接的,所以一般发送的IP是比较多的,这里需要在opt.hIP缓冲对数量,ARP_TABLE_SIZE的这个参数,修改为你要发送的IP个数。

 

NUM4:我在整个过程中碰到一个很坑的问题,就是说我做的板子和电脑直连,ping的话一两天都不掉线,但是一接入路由,给板子定义的是固定IP,掩码,网关。连接路由之后,系统很快ping不通,这个好像是网络中的别的电脑的广播包的影响,需要过滤,要不然就是会慢慢的就ping不通了。FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项


过滤用的是spf广播过滤(IP_SOF_BROADCAST_RECV)。这个地方我还得好好再研究一下。。。。。FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项FreeRTOS中LWIP的UDP使用例子与注意事项

你们如果使用的话,可以直接用我上面的过程。至于过滤需要该其他的驱动,和这里的UDP没有多大关系

阅读(7846) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~