中级会员
- 积分
- 237
- 金钱
- 237
- 注册时间
- 2016-6-22
- 在线时间
- 50 小时
|
使用寄存器或printf向串口发送网络接收数据,代码如下:
for(q=recvbuf->p;q!=NULL;q=q->next) //遍历完整个pbuf链表
{
//判断要拷贝到UDP_DEMO_RX_BUFSIZE中的数据是否大于UDP_DEMO_RX_BUFSIZE的剩余空间,如果大于
//的话就只拷贝UDP_DEMO_RX_BUFSIZE中剩余长度的数据,否则的话就拷贝所有的数据
if(q->len > (UDP_DEMO_RX_BUFSIZE-data_len))
//memcpy(udp_demo_recvbuf+data_len,q->payload,(UDP_DEMO_RX_BUFSIZE-data_len));//拷贝数据
{
for(i=0; i<(UDP_DEMO_RX_BUFSIZE-data_len); i++)
{
USART1->DR = *((u8 *)q->payload+i);
while(0 == (USART1->SR&0x40));
}
//printf("%x",*((u8 *)q->payload+i));
}
else
//memcpy(udp_demo_recvbuf+data_len,q->payload,q->len);
{
for(i=0; i<(q->len); i++)
{
USART1->DR = *((u8 *)q->payload+i);
while(0 == (USART1->SR&0x40));
}
//printf("%x",*((u8 *)q->payload+i));
}
data_len += q->len;
if(data_len > UDP_DEMO_RX_BUFSIZE) break; //超出TCP客户端接收数组,跳出
}
OS_EXIT_CRITICAL(); //开中断
data_len=0; //复制完成后data_len要清零。
//printf("%s",udp_demo_recvbuf); //打印接收到的数据
netbuf_delete(recvbuf); //删除buf
|
|