高级会员
- 积分
- 948
- 金钱
- 948
- 注册时间
- 2022-4-20
- 在线时间
- 356 小时
|
50金钱
我在工程中创建了一个二维数组buf[40][1500];
然后按照行号初始化了每一行,现在他的第0行所有值都是0,第1行所有值都是1,以此类推。
然后在主函数还有一个数组send[1500];该数组用于UDP发送时使用,具体代码如下:
- for(i = 0; i < 40; i++)
- {
- memcpy(send,buf[i],1500);
- UDP_SendData(send, 1500);
- i++;
- }
复制代码
UDP_SendData的代码如下:
- /*******************************************************************************
- * Function Name : UDP_SendData
- * Description : UDP数据发送
- * Input : buff 待发送的数据
- len 待发送数据长度
- * Output : None
- * Return : None
- * Note : None
- *******************************************************************************/
- void UDP_SendData(uint8_t *buff, uint16_t len)
- {
- struct pbuf *p;
- p = pbuf_alloc(PBUF_TRANSPORT,len, PBUF_POOL);
- if (p != NULL)
- {
- /* copy data to pbuf */
- pbuf_take(p, (char*)buff, len);
-
- /* send udp data */
- udp_send(UdpPcb, p);
- /* free pbuf */
- pbuf_free(p);
- }
- }
复制代码 全速运行后,我使用了wireshark来抓包,发现存在漏发和连续几次都是同样数据的现象,然后我在上面for循环内加入了一个100us的延时,再次抓包,发现正常。
求助:为什么会这样?如果我想不使用延时,那么怎样才能让它拥有正常的现象?
|
|