网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> 技术文库 >> 嵌入式 >> 文章正文
  串口通信vxworks           ★★★ 【字体:
串口通信vxworks
作者:互联网    文章来源:本站原创    点击数:    更新时间:2006-12-31    

VxWorks中,串口作为设备出现,而在POSIX标准中,设备可以使用标准IO函数来进行操作。

 

VxWorks Shell中查看,可以看到目前的端口设备名字,如下:

 

-> devs

drv name

 0 /null

 1 /tyCo/0 (这个是COM1

 1 /tyCo/1

 1 /tyCo/2

 1 /tyCo/3

 5 omcr-2:

 6 /vio

value = 0 = 0x0

->

 

使用标准UNIX/IO打开这个设备,并设置baudrate,就可以使用readwrite向端口读取或者写入数据。

势力程序如下:

 

打开VxWorks On COM1,在Terminal上可以看到输出。也可以在Terminal上输入(回车结束),在Console Window里可以看到输出。

 

TerminalCOM工作模式一般为LINE,即发现行结束标志(ENTER)才发送一次缓冲的数据。

 

这里VxWorks Host上的COM工作模式为RAW,无缓冲。

 

关于LINEROW模式的区别,请参考VxWorks Programmer's Guide

 

完整的示例程序如下:

 

#include <ioLib.h>

#include <stdio.h>

#include <taskLib.h>

 

int tyRecv( int fd )

{

char szBuf[2] = { 0 }

FOREVER

{

if ( NULL!=read(fd,szBuf,1) )

printf("%s",szBuf)

taskDelay(1)

}

}

 

int tySend( int fd )

{

FOREVER

{

write(fd,"A",1)

taskDelay(60)

}

}

 

int testMain()

{

// Open COM1

 

int fd = open("/tyCo/0",O_RDWR,0)

 

if (ERROR==fd)

{

printf("can not open device!\n")

return 0

}

 

// Set baudrate

 

if ( ERROR==ioctl(fd,FIOBAUDRATE,9600) )

{

printf("can not set BAUDRATE!\n")

return 0

}

 

// Start receiving task

 

taskSpawn("recv",60,VX_FP_TASK,

1024*40,(FUNCPTR)tyRecv,fd,

0,0,0,0,0,0,0,0,0

)

 

// Start sending task

 

taskSpawn("send",60,VX_FP_TASK,

1024*40,(FUNCPTR)tySend,fd,

0,0,0,0,0,0,0,0,0

)

 

FOREVER taskDelay(60)

}

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    VxWorks在AT91RM9200上的BSP…
    基于VxWorks的网络接口设计
    基于VxWorks的飞机配电自动化…
    嵌入式系统优先级反转问题的…
    VxWorks汉字显示解决方案
    在vxworks中如何使用启动脚本…
    VXWorks的堆栈布局
    VxWorks for X86的输入输出定…
    vxWorks在线升级技术
    BSP配置文件及生成下载
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号