|
背景描述:
1.send 和 recv 两个任务,send做为发送任务,recv做为接收任务
2.send任务中,连结发送两条消息,内容不同 value1和value2
3.recv任务中,接收到两条内容 value2 和 value2
伪代码:
static void sendToQueue(uint8_t cmd,uint8_t *buff,uint8_t len)
{
MOTORCTRL_QUEUE_T *ptMotor = &gMotorCtrlQueue;
ptMotor->len = 0;
memset(ptMotor->data,0x00,MOTORCTRL_QUEUE_BUF_LEN);
ptMotor->cmd = cmd;
ptMotor->len = len;
memcpy(ptMotor->data,buff,len);
/* 使用消息队列实现指针变量的传递 */
if(xQueueSend(gxMotorCtrlQueue, /* 消息队列句柄 */
(void *) &ptMotor, /* 发送结构体指针变量ptReader的地址 */
(TickType_t)20) != pdPASS )
{
xQueueReset(gxMotorCtrlQueue);
DBG("A the queue is error!\r\n");
}
}
void send(void)
{
sendToQueue(CMD_AA,"\x55\X55\X55\X55",4);
sendToQueue(CMD_BB,"\xAA\XAA\XAAXAA",4);
}
接收任务:
static void vRecv(void *pvParameters)
{
while (1)
{
//获取到,则执行上位机指令,获取不到,则执行状态查询
xReturn = xQueueReceive( gxMotorCtrlQueue, /* 消息队列的句柄 */
(void *)&ptMotor, /*这里获取的是结构体的地址 */
(TickType_t)30); /* 设置阻塞时间 */
}
if(pdTRUE == xReturn)
{
printf_hex(ptMotor->data);
}
vTaskDelay(50);
}
然后我的打印日志是
AA AA AA AA
AA AA AA AA
预期值应该是:
55 55 55 55
AA AA AA AA
但是不知道为什么,就只能收到第二条消息发送过来的内容,有大神知道原因吗?感谢。
|
|