⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test0320.cpp

📁 应用小程序
💻 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 + -