电路板人才网

Vxworks实时操作系统的串口通信程序设计与实现

发布于:09-01



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?串口接收数据



int?accept_com1(void)//从串口1接收数据函数



{



while(1)



{



??char?accept—buf;



??FD_ZERO(&fds_data);?//位码置零



??FD_SET(sfd,&fds_data);//初始化位码



??width=sfd+1;



//任务阻塞等待读串口准备完毕;



??if(select(width,&fds_data,NULL,NULL,NULL)==?ERROR)



??return(ERROR);



??read(sfd,accept_buf,sizeof(accept_buf));?//从串口读字符



??printf(accept?message?is:%s?,accept_buf);?//输出接收到的信息



}



5.5?串口发送数据



int?send_com1(void)//向串口1发送数据函数



{



char?*send_buf=Data?had?accept!;?//待发送数据



//任务阻塞等待写串口准备完毕



if(select(width,NULL,&data_fds,NULL,NULL==ERROR)



??return(ERROR);



??if(FD_ISSET(sfd,&fds_data))?//检查串口准备好就向串口写数据



??write(sfd,send_bur,sizeof(send_buf));



}



5.6?关闭串口



close(sfd);



6?结束语



RS-232串口通信虽速率不高,但RS-422标准串行口通信则采用了双线传输,大大增加了抗共模干扰的能力,最大数据传输速度可以达到10Mb/s,这对于远程数据交换具有极大的优势。



本文描述了在实时操作系统VxWorks中利用串口实现数据通信的方法,并给出了示例程序.目前已经在我们开发的风洞测控系统中获得了应用。该方法可将其串口通信可适用于工业控制等多方面,具有广泛的适应性。在嵌入式实时操作系统中使用串口通信,不仅可扩展嵌入式设备通信能力,而且可扩大其的应用范围。



来源:http://www.icembed.com/info-21050.htm







实时操作系统






阅读 76