经济学 管理学 法学 理学 工学 计算机 医学 文学 教育 艺术 哲学 马列理论 政治 社会 英语论文
写作指导 实习报告 述职报告 调查报告 求职信 求职简历 工作总结 入党申请书 思想汇报 入党转正申请书
普通高校 民办高校 独立学院 211工程高校 教育部直属高校 成人高校 民办成人高校 985工程高校 军校 各地招生办
 首页 >> 533学习网 >> 资源 >> 论文大全 >> 计算机 >> 正文 加载中...
基于Vxworks实时操作系统的串口通信程序设计与实现
http://edu.533.com 资源频道

读者都是有效的;在line模式下所有输入字符被存储,直到NEWLINE字符输入。设备选项字使用带FIOSETOPTIONS 功能的ioctl()程序来设置。[2]

配置完成后,依据串口打开时的读写标志,调用函数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);                                 //清空输入输出缓冲

ioctl(sfd,SIO_HW_OPTS_SET,CS8|STOPB|PARENB|PARODD);

//设置 8 位数据位,2位停止位,带校验位,奇校验

}

5.4 串口接收数据

9 7 3 1 2 3 4 8 :

加载中...
上一篇:
下一篇:
顶我一下
 
  • 最近更新
  • 最受欢迎资源榜
  •   加载中... 加载中...
     加载中...
    值得收藏!
    加载中...
    资源搜索:
     全国各省市普通高校名单
    北京 天津 河北 山西

    内蒙

    辽宁 吉林 黑龙江
    上海 江苏 浙江 安徽 福建 江西 山东 河南
    湖北 湖南 广东 广西 海南 重庆 四川 贵州
    云南 西藏 陕西 甘肃 青海 宁夏 新疆 港澳台
     全国民办普通高校名单
    北京 天津 河北 山西

    内蒙

    辽宁 吉林 黑龙江
    上海 江苏 浙江 安徽 福建 江西 山东 河南
    湖北 湖南 广东 广西 海南 重庆 四川 贵州
    云南 西藏 陕西 甘肃 青海 宁夏 新疆  
     更多导航
    有意见请联系:edu533##126.com(将##换为@)
      更多资源推荐
    论文
     
    实用文档
     
    五三三学习网
     
    好资源一起共享
      图片说话
    加载中...
      精彩推荐
    加载中...
    加载中...
    加载中...