LWIP UDP协议 实验

目的 :把开发版挂到路由器上,通过PC发送UDP包控制开发版的LED亮灭

#include "stdint.h"
#include "udp.h"

#include "main.h"


#define LOCAL_PORT 80
#define REMOTE_PORT 777

struct  udp_pcb *udp_my_led;
extern void app_printf(char * format,...);
void app_udp_myled_process();

uint16_t _init_my_led_udp(struct udp_pcb  *appPCB)
{	
  struct ip_addr remote_ipaddr;
  struct ip_addr local_ipaddr;

  appPCB = udp_new();

  /*set local ip and port*/
  IP4_ADDR(&local_ipaddr, 192, 168, 0, 253);
  udp_bind(appPCB,&local_ipaddr,LOCAL_PORT);

  /*set remote ip and port*/
  IP4_ADDR(&remote_ipaddr, 192, 168, 0, 200);
  udp_connect(appPCB, &remote_ipaddr,REMOTE_PORT);

  /* applicration callback register*/
  udp_recv(appPCB,app_udp_myled_process,0);
  return 0;
	
}

void app_udp_myled_process(void *arg, struct udp_pcb *upcb, struct pbuf *p,
                       struct ip_addr *addr, u16_t port)
{
  uint8_t *data;
  struct pbuf *q;
  const char *info = "This is my first UDP data \n";

  GPIO_ToggleBits(GPIOE, GPIO_Pin_14);
  data =(uint8_t *) p->payload;

  app_printf("play load %s: \r\n",data);

  pbuf_free(p);

  q = pbuf_alloc(PBUF_TRANSPORT,  strlen(info)+1, PBUF_RAM);
  memset(q->payload,0,q->len);
  memcpy(q->payload,info,strlen(info));

  udp_sendto(upcb,q,addr,port);
}

uint16_t app_udp_init(void)
{
    _init_my_led_udp(udp_my_led);
	return 0;

}

void app_udp_send(void)
{
  struct pbuf *p;
  udp_send(udp_my_led,p);
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值