完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
静态创建了一个消息队列
然后串口空闲中断中往消息队列中发送不定长数据, rt_mq_send(&usart2_mq, Usart2type.UsartRecBuffer, Usart2type.UsartRecLen); if(rt_mq_recv(&usart2_mq, &buff, sizeof(buff), RT_WAITING_NO) == RT_EOK) 现在的问题就是,如果串口往队列中发送了一段较长的数据,线程接收后,又往队列中发送另一段较短的数据,就会导致第二次队列中接收的数据包含第一次发送的数据的部分,debug中看了一下msg_pool中的值,发现接收后msg_pool中的数据没有清空,第二次发送只是覆盖了第一次数据前面相同长度的部分,请问有什么解决办法吗 |
|
相关推荐
4个回答
|
|
struct
{ char buffer[512]; int len; } 因为接收端使用是同一个缓存,新数据只拷贝自身的大小。 可以在发送的时候增加一个长度的指示(比如使用上面的结构体收发消息),接收端通过此长度来判断实际的数据大小 |
|
|
|
如果你处理的是字符串还有种简单的方法,在发送数据最后增加字节' |