基于Vxworks实时操作系统的串口通信程序设计与实现 |
| http://www.MianFeiLunWen.com 免费论文网 2007-5-18 15:29:25 |
| ------------------------------------------[发送]-[打印]-[投稿]-[VIP]--------------- |
配置完成后,依据串口打开时的读写标志,调用函数write()、read()对串口进行只读操作、只写操作或同时进行读写操作。 为提高数据接收的实时性,可采用中断方式,利用VxWorks提供的select函数的事件触发机制,将读串口的任务阻塞使其一直等待数据,当有数据来到的时候该任务会立刻自动响应,提高系统的实时性。 4 环境配置 在本实时应用系统中采用486机作为目标机,串口通信时目标机VxWorks系统启动盘的制作步骤: (1) 修改通用配置文件\\Tornado\target\config\pc486\config.h。在config.h文件中加入以下宏定义: #define INCLUDE_WDB #define INCLUDE_WDB_TTY_TEST #undef WDB_COMM_TYPE #define WDB_COMM_TYPE WDB_COMM_SERIAL /*定义通信方式为串口联结*/ #define WDB_TTY_CHANNEL 1 /*通道号*/ #define WDB_TTY_BAUD 9600 /*串口速率,可设置至38400*/ #define WDB_TTY_DEV_NAME "tyCo/1" #define CONSOLE_TTY 0 #define DEFAULT_BOOT_LINE "fd=0,0(0,0)hostname:/fd0/vxWorks \ h=主机 ip e=目标机ip u=主机上的登录用户名" (2) 在Tornado集成环境中执行菜单命令Project > Make PC486 > Common Targets > clean删除以前生成的文件,执行菜单命令Project > Make PC486 > Boot Rom Targets > bootrom_uncmp编译链接生成bootrom_uncmp ;再选择VxWorks Target,编译生成vxworks; (3) 拷贝\\Tornado\target\config\pc486\bootrom_uncmp至\\Tornado\host\bin下 (4) 重命名文件bootrom_uncmp为bootrom; (5) 准备一张已格式化的空盘插入软驱; (6) 在目录\\Tornado\host\bin下执行命令 mkboot a: bootrom; (7)拷贝\\Tornado\target\config\pc486\VxWorks至软盘; (8) 将系统制作盘插入目标机软驱,加电启动目标机即载入VxWorkst系统。[3] 5程序示例 5.1 在程序中加入下列头文件 #include <vxWorks.h> #include "strLib.h" #include <string.h> #include <sioLib.h> #include <ioLib.h> #include <stdio.h> #include <ioctl.h> #include <selectLib.h> #include "types/vxTypesOld.h" 5.2 打开串口 int open_com1(void) //打开串口1函数 { int sfd;//串口设备文件描述符 sfd =open(”/tyCo/0”,0_RDWR,0);//打开串口并返回串口设备文件描述符 if(sfd ==ERROR) //如果不能打开串口1则打印出错信息 printf("You can’t open port com1 !"); } 5.3 配置串口 int config_com1(void) //串口1配置函数 { ioctl(sfd,FIOSETOPTIONS,OPT_LINE); //设置串口工作模式为行模式:LINE_MODE ioctl(sfd,FIOBAUDRATE,9600); //设置串口波特率为9600bps ioctl(sfd,FIOFLUSH,0); //清空输入输出缓冲
|
| -------------------------------------------------------[发送]-[打印]-[投稿]-[VIP]-- |
|
|