📄 test.c
字号:
#if 0
#include <stdio.h>
#include <pthread.h>
#include "Vxworks2Linux.h"
#define EVENT_OK1 0x8000
#define EVENT_OK2 0x4000
#define MAXSTACK 100
int stack[MAXSTACK][2];
int size=0;
SEM_ID sem;
MSG_Q_ID msgQid;
WDOG_ID WatchDogId;
unsigned int WDCount=0;
int g_task_id1;
int g_task_id2;
typedef struct MyMsgStru
{
unsigned int Function;
unsigned char Buf[40];
}MYMSGSTRU;
typedef struct MyWdStru
{
unsigned int Count;
unsigned int Flag;
}MYWDSTRU;
MYWDSTRU MyWdData;
int TestData;
void ReadData1(void){
while(1)
{
semTake(sem,WAIT_FOREVER);
TestData = 0x55;
printf("TestData = %x\n",TestData);
sleep(1);
semGive(sem);
}
}
void ReadData2(void){
while(1)
{
semTake(sem,WAIT_FOREVER);
TestData = 0xaa;
printf("TestData = %x\n",TestData);
sleep(1);
semGive(sem);
}
}
void QueSend(void)
{
MYMSGSTRU msg;
int function=0;
while(1)
{
function++;
memset(&msg.Buf[0],0,40);
msg.Function = function;
memcpy(&msg.Buf[0],"ABCD1234",8);
msgQSend(msgQid,(char *)&msg,
sizeof(MYMSGSTRU),NO_WAIT,MSG_PRI_NORMAL);
sleep(2);
}
}
void MyTimerProc(int Para)
{
MYWDSTRU *pWdData;
pWdData = (MYWDSTRU *)Para;
if(pWdData->Flag)
{
pWdData->Count++;
printf("MyWdData.Count= %d\n",pWdData->Count);
}
wdStart (WatchDogId,200,(FUNCPTR)MyTimerProc,(int)pWdData);
}
void QueRecv(void)
{
MYMSGSTRU msg;
WatchDogId = wdCreate();
MyWdData.Count = 1;
MyWdData.Flag = 1;
wdStart (WatchDogId,200,(FUNCPTR)MyTimerProc,(int)&MyWdData);
while(1)
{
if(msgQReceive(msgQid,(char *)&msg,sizeof(MYMSGSTRU),WAIT_FOREVER) != ERROR)
{
printf("function = %d %s\n",msg.Function,&msg.Buf[0]);
}
else
printf("msgQReceive ERROR\n");
}
}
void EventSend(void)
{
sleep(1);
while(1)
{
sleep(1);
eventSend(g_task_id2,EVENT_OK1);
sleep(1);
eventSend(g_task_id2,EVENT_OK2);
sleep(1);
eventSend(g_task_id2,EVENT_OK2|EVENT_OK1);
}
}
void EventRev(void)
{
int nEvent;
while(1)
{
if(eventReceive(EVENT_OK2|EVENT_OK1, EVENTS_WAIT_ANY, WAIT_FOREVER, &nEvent)==OK)
{
if(nEvent & EVENT_OK1)
printf("This is Event 1\n");
if(nEvent & EVENT_OK2)
printf("This is Event 2\n");
}
else
printf("Receive Event Error.\n");
}
}
int main(void)
{
int task_id1;
int task_id2;
int task_id3;
int task_id4;
printf("initLinuxTask\n");
initLinuxTask();
printf("VxSemLibInit\n");
VxSemLibInit();
printf("VxEventLinInit\n");
VxEventLibInit();
printf("VxWdLibInit\n");
VxWdLibInit();
printf("Create B sem\n");
sem = semBCreate(SEM_Q_FIFO,1);
printf("Create task1\n");
msgQid = msgQCreate(20,sizeof(MYMSGSTRU),MSG_Q_FIFO);
task_id1 = taskSpawn("sem1",50,0,0x2000,\
(FUNCPTR)ReadData1,0,0,0,0,0,0,0,0,0,0);
printf("Create task2\n");
task_id2 = taskSpawn("sem2",51,0,0x2000,\
(FUNCPTR)ReadData2,0,0,0,0,0,0,0,0,0,0);
task_id3 = taskSpawn("que1",53,0,0x2000,\
(FUNCPTR)QueSend,0,0,0,0,0,0,0,0,0,0);
task_id4 = taskSpawn("que2",54,0,0x2000,\
(FUNCPTR)QueRecv,0,0,0,0,0,0,0,0,0,0);
g_task_id2 = taskSpawn("EventRev",48,0,0x2000,\
(FUNCPTR)EventRev,0,0,0,0,0,0,0,0,0,0);
g_task_id1 = taskSpawn("EventSend",47,0,0x2000,\
(FUNCPTR)EventSend,0,0,0,0,0,0,0,0,0,0);
pthread_join(g_task_id1,NULL);
pthread_join(g_task_id2,NULL);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -