📄 test0320.cpp
字号:
#include "vxWorks.h"
#include "semLib.h"
#include "eventLib.h"
#include "taskLib.h"
#include "semLib.h"
#include "stdio.h"
#include "semEvLib.h"
#include "errnoLib.h"
#define STACK_SIZE 20000
#define DELAY_TICKS 50
int tidERx;
int tidETx;
SEM_ID semId;
STATUS progStart();
STATUS progStop();
STATUS ERx();
STATUS ETx();
STATUS progStart()
{
semId = semBCreate( SEM_Q_PRIORITY, SEM_EMPTY );
if( semId == NULL )
{
return ERROR;
}
tidERx = taskSpawn( "tERx", 200, 0, STACK_SIZE, (FUNCPTR)ERx,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );
tidETx = taskSpawn( "tETx", 220, 0, STACK_SIZE, (FUNCPTR)ETx,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );
return OK;
}
STATUS ERx()
{
UINT32 eventsReceived;
if( semEvStart( semId, VXEV01, EVENTS_OPTIONS_NONE ) == ERROR )
{
return ERROR;
}
else
{
printf("semEvStart success!\n");
}
FOREVER
{
if( eventReceive( VXEV01 | VXEV02, EVENTS_WAIT_ANY, WAIT_FOREVER, &eventsReceived ) == OK )
{
printf( "eventReceive received events(VXEV%d)!\n", eventsReceived );
}
if( ( eventsReceived & VXEV01 ) != 0 )
{
printf("eventsReceived: receive semevent!\n");
}
if( ( eventsReceived & VXEV02 ) != 0)
{
printf("eventsReceived: receive progStop!!!\n");
if( semEvStop( semId ) == OK )
{
printf("semEVStop sucess!\n");
}
else
{
printf("error = %d\n", errnoGet() );
}
taskDelete( tidETx );
semDelete( semId );
taskDelete( tidERx );
}
}
return OK;
}
STATUS ETx()
{
FOREVER
{
semGive( semId );
semTake( semId, NO_WAIT );
taskDelay( DELAY_TICKS );
}
return OK;
}
STATUS progStop()
{
eventSend( tidERx, VXEV02 );
printf("Bye bye!!!\n");
return OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -