![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测室 . 技术文库 . 会员区 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| 串口通信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,就可以使用read和write向端口读取或者写入数据。 势力程序如下: 打开VxWorks On COM1,在Terminal上可以看到输出。也可以在Terminal上输入(回车结束),在Console Window里可以看到输出。 Terminal的COM工作模式一般为LINE,即发现行结束标志(ENTER)才发送一次缓冲的数据。 这里VxWorks Host上的COM工作模式为RAW,无缓冲。 关于LINE和ROW模式的区别,请参考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条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|