test3.c

来自「Vxworks的培训教程,大家分享下啊,」· C语言 代码 · 共 58 行

C
58
字号
#include "pioLib.h"#define MAX_TEST_CHANNELS	3SEM_ID semId[MAX_TEST_CHANNELS];STATUS test3 (testFunc, arg)	FUNCPTR testFunc;	int arg;	{	int tid[MAX_TEST_CHANNELS];	STATUS testTask3();	int i;	int taskTimeout = (testFunc) ? sysClkRateGet() : WAIT_FOREVER;	pioInit (0x3e);	for (i=0; i<MAX_TEST_CHANNELS; i++)		{		if ((semId[i] = semBCreate (SEM_Q_FIFO, SEM_EMPTY)) == NULL)			return (ERROR);		if (pioSetInputMode (PIO_PORT_A, i, PIO_TYPE_POLL, 			PIO_ACTION_RELEASE_SEM, PIO_STATE_ON, semId[i]) == ERROR)			return (ERROR);		if ((tid[i] = taskSpawn ("tTest", 200, 0, 5000, testTask3, i,			 PIO_STATE_ON, taskTimeout)) == ERROR)			return (ERROR);		}	if (testFunc)		{		if (taskSpawn ("tOut", 150, 0, 5000, testFunc, arg) == ERROR)			return (ERROR);		}	return (OK);	}STATUS testTask3 (channel, state, timeout)	int channel, state, timeout;	{	IMPORT int errno;	FOREVER		{		if (semTake (semId[channel], timeout) == ERROR)			{			if (errno == S_objLib_OBJ_TIMEOUT)				return (OK);			else				return (ERROR);			}		pioSet (PIO_PORT_B, channel, state);		state = (state == PIO_STATE_ON) ? PIO_STATE_OFF : PIO_STATE_ON;		if (pioSetInputMode (PIO_PORT_A, channel, PIO_TYPE_POLL, 			PIO_ACTION_RELEASE_SEM, state, semId[channel]) == ERROR)			return (ERROR);		}	}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?