test3b.c

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

C
65
字号
#include "pioLib.h"#define MAX_TEST_CHANNELS	3#define PIO_DONE			255MSG_Q_ID msgQId;STATUS test3B (testFunc, arg)	FUNCPTR testFunc;	int arg;	{	int tid;	STATUS testBTask();	int i;	PIO_MSG_Q_DATA msgQData;	pioInit (0x3e);	if ((msgQId = msgQCreate (100, sizeof(PIO_MSG_Q_DATA), MSG_Q_FIFO)) 		== NULL)		return (ERROR);	for (i=0; i<MAX_TEST_CHANNELS; i++)		{		if (pioSetInputMode (PIO_PORT_A, i, PIO_TYPE_POLL, 			PIO_ACTION_MSG_Q_PUT, PIO_STATE_CHANGED, msgQId) == ERROR)			return (ERROR);		}	if ((tid = taskSpawn ("tTestB", 200, 0, 5000, testBTask)) == ERROR)			return (ERROR);	if (testFunc)		{		(*testFunc)(arg);		taskDelay (2);		for (i=0; i<MAX_TEST_CHANNELS; i++)			{			if (pioSetInputMode (PIO_PORT_A, i, PIO_TYPE_IGNORE, 				PIO_ACTION_MSG_Q_PUT, PIO_STATE_CHANGED, msgQId) == ERROR)				return (ERROR);			}		msgQData.port = PIO_DONE;		if (msgQSend (msgQId, &msgQData, sizeof(PIO_MSG_Q_DATA), WAIT_FOREVER,				  MSG_PRI_NORMAL) == ERROR)			return (ERROR);		}	return (OK);	}STATUS testBTask ()	{	PIO_MSG_Q_DATA msgQData;	FOREVER		{		if (msgQReceive (msgQId, &msgQData, sizeof(PIO_MSG_Q_DATA), 			WAIT_FOREVER) == ERROR)				return (ERROR);		if (msgQData.port == PIO_DONE)			{			if (msgQDelete (msgQId) == ERROR)				return (ERROR);			return (OK);			}		pioSet (PIO_PORT_B, msgQData.channel, msgQData.state);		}	}

⌨️ 快捷键说明

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