中级会员
 
- 积分
- 427
- 金钱
- 427
- 注册时间
- 2015-3-11
- 在线时间
- 123 小时
|
10金钱
原子的f7网络通信例程里有这个发送函数
void udp_demo_senddata(struct udp_pcb *upcb)
这里面是发送的一个字符串const u8 *tcp_demo_sendbuf="Apollo STM32F4/F7 UDP demo send data\r\n";
我现在将其改成
uint8_t tcp_demo_sendbuf1[5] = {0x26,0xBB,0xCC,0xDD,0xEE};
void udp_demo_senddata(struct udp_pcb *upcb)
{
struct pbuf *ptr;
ptr = pbuf_alloc(PBUF_TRANSPORT,strlen((const char*)tcp_demo_sendbuf1),PBUF_POOL);
// ptr=pbuf_alloc(PBUF_TRANSPORT,strlen((char*)tcp_demo_sendbuf),PBUF_POOL);
if(ptr)
{
ptr->payload=(void*)tcp_demo_sendbuf1;
// ptr->payload=(void*)tcp_demo_sendbuf;
udp_send(upcb,ptr);
pbuf_free(ptr);
}
}
我把const u8 *tcp_demo_sendbuf="Apollo STM32F4/F7 UDP demo send data\r\n";替换成了uint8_t tcp_demo_sendbuf1[5] = {0x26,0xBB,0xCC,0xDD,0xEE};
实验结果是可以发送数据出去 但是这个数组里不能出现0x00,如果0x26,0xBB,0xCC,0xDD,0xEE中任意一个字节为0x00,那么从它开始包括之后的数据全都发不出来,这是为什么啊,除开0x00之外的其它数据都没问题啊 请教各位大佬啊
|
最佳答案
查看完整内容[请看2#楼]
已解决,将:
ptr=pbuf_alloc(PBUF_TRANSPORT,strlen((constchar*)tcp_demo_sendbuf1),PBUF_POOL);
替换为:
ptr = pbuf_alloc(PBUF_TRANSPORT,sizeof(tcp_demo_sendbuf1),PBUF_POOL);
就不会已遇到0x00就结束的问题了
|