vxWorks 编程指南 一、官方的 Program Gu ide 位于安装目录下:\docs\vxworks\guide\index.html 二、常用的库: #i nclude "taskLib.h" #i nclude "msgQLib.h" #i nclude "semLib.h" #i nclude "ioLib.h" #i nclude "wdLib.h" #i nclude "logLib.h" #i nclude "socket.h" 三、IO 系统:ioLib.h 1、系统中的 IO 设备,包括键盘、串口、文件等,都用统一的接口访问。第一步通常先得到文件描述符,然后进行读写或者设置的工作,最后关闭该描述符。 creat:建立文件 open:得到文件或设备的描述符 read:读文件或设备 write:写文件或设备 ioctl:设置参数 close:关闭文件描述符 remove:删除文件 2、内存文件 memDrv( ) - 初始化伪内存设备 memDevCreate( ) - 建立伪内存设备 memDevCreateDir( ) - 建立一组伪内存设备 memDevDelete( ) - 删除伪内存设备 Init() { uchar_t buffer[1024]; int fd; memDrv( ); memDevCreate("/mem/mem1", buffer, sizeof(buffer)); if ((fd = open("/mem/mem1", O_RDWR, 0644)) != ERROR) { write(fd, &data, sizeof(data)); ... ... close(fd); } memDevDelete("/mem/mem1"); } 3、通过 Select 函数实现多个 IO 监听:selectLib.h 当等待多个 IO 时,我们可以使用 Select 函数,fd 为文件描述符: int select( int width, fd_set * pReadFds, fd_set * pWriteFds, fd_set * pExceptFds, struct timeval * pTimeOut ) 还有几个宏: FD_SET(fd, &fdset) 设置 fd 的监听位 FD_CLR(fd, &fdset) 清除 fd 的监听位 FD_ZERO(&fdset) 清除所有监听位 FD_ISSET(fd, &fdset) fd 是否有数据 例子,其中 MAX 意为取最大值: Init() { struct fd_set readFds; int fds[4]; int width; fds[0] = open(..);... ...;fds[3] = open(..); width = MAX(fds[0], ... ... , fds[3])+1; FD_ZERO(&readFds); FD_SET(fds[0], & readFds);... ...; FD_SET(fds[3], & readFds); if (select(width, &readFds, NULL, NULL, NULL) == ERROR) { close(fds[0]); ... ...; close(fds[3]); return; } for(i=0; i if (FD_ISSET(fds[i], &readFds)) { ... ...; } } } 四、多任务环境的编程: 1、任务控制:taskLib.h taskSpawn( ) - 创建...