繁体中文
高级搜索
 
首页 | 电子技术应用 | 行业最新动态 | 行业最新产品 | 软件资料下载 | 电路图纸欣赏 | 博客文章精选 | 电子精品论坛 | 电子技术贴吧

当前位置:首页 >> 博客文章精选 >> 嵌入式系统-博客 >> 串口通信例子
串口通信例子
作者:   来源: 发表时间:2006-12-08  字号:  

以下例子的运行环境是装载 Vxworks的两台PC机,pc机之间用串口COM2连接.为了把要讨论的问题更明显的表现出来,例子将简化一些和串口通信不直接相关的内容,并忽视错误处理和 Vxworks的一些编程约定(coding conventions).
函数void usrApplnit(void)后追加语句:
tty_send();
代码如下:
#include "vxworks.h"
#include "stdio.h"
#include "taskLib.h"
#include "ioLib.h"
int tty_send(void)
{
int fd;
int bytes_out;
char buff ]="Serial commuciation妙pc com2"; //待发送的字符串
ttyDrv(); //把申口驱动程序添加到系统中
//下面语句把申口 com2添加到系统中," tyC0/l"是设备名,
sysSerialChanGet(1)用来获得指向串口描述符的指针,后面两个参数定义了读缓冲区和写缓冲区的大小。
ttyDevCreate("/tyCo/1",sysSerialChanGet(l),512,512);
//以可读可写方式打开串口2,获得串口2的文件描述符
fd="open"("/tyCo/1",O_RDWR);

//设置串口2的数据模式
ioctl(fd,FIOSETOPTIONS,OPT_PAW);
//设置串口 2的波特率/
ioctl(fd,FIOBAUDP,ATE,9600);
//把字符串buf反复的送往串口
while(l)
{
byteses out="write"(fd,buf strlen(buf));
printf("output chars total: "/"d\n",bytes out);
taskDelay(60);
//关闭串口2
close(fd);
return l;
接收端代码
以下代码也可以单独保存在一个文件中,和其他所有文件一同编译。在usrApplnit.c中的函数void usrApplnit(void)后追加语句:
tty_receive();
代码如下:
#include "vxworks.h"
#include "stdio.h"
#include'SoLib.h"
#include "selectLib.W
inttty_receive(void)
{
int i,j;
int fd,width;
int bytes in;
char buf]10];
struct fd set_readFds;
//注释同上
ttyDrv();
//注释同上
ttyDevCreate("ItyColl",sysSerialChanGet(1),512,512);
// 注释同上
fd="open"("/tyCo/1",O_RDWR);
ioctl(fd,FIOSETOPTIONS,OPT_RAW); //注释同上
ioctl(fd,FIOBAUDRATE,9600); //注释同上
//下边语句用”lect函数将任务阻塞在申口2进行读操作
FD_ZERO(&readFds); //清空被读监控的文件描述符集
//串口2的文件描述符在被读监控的文件描述符集中It相应的位 N
FD_SET(fd,&readFds);
width="fd" l;
//将任务阻塞在串 口2进行读操作
if(select(width,&readFds,NULL,NULL,NULL)==ERROR)
return(ERROR);
//如果可以读串口,就进行读操作
if(FD_ISSET(fd,&readFds))
{
while(1)
if( (bytes_in="read"(fd,buf,7)) - 0)
break;
for(i-O;i<bytesLin;i )
printrf("%c",buf[i]);
}
//关闭串口2
close(fd);
return 1;
上边的两段代码简要的实现了两个Vxworks系统之间的串口通信。意图在于以例子说明前面叙述的串口驱动原理并为串口通信提供一个基本的编程参考。如果在上述代码中再加入一些错误处理和宏定义、对代码进行适当的封装、采用更好的c程序设计方法,就能得到更健壮、更好用、功能更强的串口通信程序。


!注意:如果您发现此文章出现影响您的阅读的状况,请从浏览器地址栏里复制本文的链接到留言本报告给站长解决!
  • 上一篇: windML双缓冲技术
  • 下一篇: 为arm,51与优盘进行串口通信的东东

  • >> 联系我们请给我们留言·留言本
    本站所有提供的信息软件资料均来自网络,版权及著作权归原作者所有,如果无意中侵犯了您的相关权利或触及法律法规,请给我们留言, 我们将在24小时内删除。
      浙ICP备05071687号  电子技术精品网