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 + -
显示快捷键?