vxworks 消息队列.txt
来自「3个vxworks 程序」· 文本 代码 · 共 60 行
TXT
60 行
#include "VxWorks.h"
#include "semLib.h"
#include "taskLib.h"
#include "stdio.h"
#include "msgQLib.h"
#include "sysLib.h"
#include "ioLib.h"
#define STACK_SIZE 20000
#define MAX_MSG 10
#define MAX_MSGS_LEN 100
int taskId1,taskId2;
MSG_Q_ID msgQId1,msgQId2;
STATUS task1(void);
STATUS task2(void);
STATUS QUIT(void);
STATUS ProgStart(void)
{
msgQId1=msgQCreate(MAX_MSG,MAX_MSGS_LEN,MSG_Q_PRIORITY);
if(msgQId1==NULL)
return ERROR;
taskId1=taskSpawn("task1",150,0,STACK_SIZE,(FUNCPTR)task1,0,0,0,0,0,0,0,0,0,0);
return OK;
}
STATUS task1(void)
{
char RevBuf1[MAX_MSGS_LEN];
taskId2=taskSpawn("task2",110,0,STACK_SIZE,(FUNCPTR)task2,0,0,0,0,0,0,0,0,0,0);
printf("task1 is beginning!\n");
while(1)
{
if(msgQReceive(msgQId1,RevBuf1,MAX_MSGS_LEN,WAIT_FOREVER)==ERROR)
return ERROR;
printf("task1 has received the meassage\nthe message received is: %s\n
you can in put next message\n",RevBuf1);
}
return OK;
}
STATUS task2(void)
{ printf("task2 is beginning!\ninput the message to send to task1\n");
while(1)
{ char string[50];
char rr[50];
read(STD_IN,rr,50);
string=rr; if(msgQSend(msgQId1,string,sizeof(string),WAIT_FOREVER,MSG_PRI_NORMAL)==ERROR)
return ERROR;
}
return OK;
}
STATUS QUIT(void)
{ msgQDelete(msgQId1);
taskDelete(taskId1);
taskDelete(taskId2);
printf("BYE!\n");
return OK;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?