Freertos 队列项字节长度问题
最近刚学Freertos, 看到可以获取Freertos队列长度,但是队列项里的字节长度是否可以获取?因为项目中队列中会存放不定长字节,需要对队列中的数据分拣,每次分拣的时候遍历所有队列项长度,有点浪费,请教了
本帖最后由 feixiang20 于 2018-5-28 03:16 编辑
所读取的数据长度是创建队列的时候所设定的每个队列项目的长度
一个使用结构体例子:
struct AMessage
{
portCHAR ucMessageID;
portCHAR ucData[ 20 ];
}xMessage;
unsigned portLONG ulVar = 10UL;
void vATask( voidvoid *pvParameters )
{
xQueueHandle xQueue1, xQueue2;
struct AMessage *pxMessage;
/*创建一个队列,队列能包含10个unsigned long类型的值。*/
xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );
/* 创建一个队列,队列能包含10个 Amessage结构体指针类型的值。
这样可以通过传递指针变量来包含大量数据。*/
xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );
// ...
if( xQueue1 != 0 )
{
/*1个unsigned long型数据入队.如果需要等待队列空间变的有效,
会最多等待10个系统节拍周期*/
if( xQueueSend( xQueue1, ( voidvoid * ) &ulVar, ( portTickType ) 10 ) !=pdPASS )
{
/*消息入队失败*/
}
}
if( xQueue2 != 0 )
{
/* 发送一个指向结构体Amessage的对象,如果队列满也不等待 */
pxMessage = & xMessage;
xQueueSend( xQueue2, ( voidvoid * ) &pxMessage, ( portTickType ) 0 );
}
//... 任务其余代码.
} feixiang20 发表于 2018-5-28 03:15
所读取的数据长度是创建队列的时候所设定的每个队列项目的长度
一个使用结构体例子:
谢谢,
这是,在队列里发送结构体示例吧
页:
[1]