| 基于Vxworks实时操作系统的串口通信程序设计与实现 |
| 当前位置: 论文资料 >> 计算机论文 >> 计算机应用 >> 基于Vxworks实时操作系统的串口通信程序设计与实现 | ||
| 基于Vxworks实时操作系统的串口通信程序设计与实现 | ||||
|
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 \n\n", 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_buf,sizeof(send_buf)) ; } 5.6 关闭串口 close(sfd); 6结束语 RS-232串口通信虽速率不高,但RS-422标准串行口通信则采用了双线传输,大大增加了抗共模干扰的能力,最大数据传输速度可以达到10Mb/s,这对于远程数据交换具有极大的优势。 本文描述了在实时操作系统VxWorks中利用串口实现数据通信的方法,并给出了示例程序,目前已经在我们开发的风洞测控系统中获得了应用。该方法可将其串口通信可适用于工业控制等多方面,具有广泛的适应性。在嵌入式实时操作系统中使用串口通信,不仅可扩展嵌入式设备通信能力,而且可扩大其的应用范围。
参考文献: 1孔祥营,柏桂枝.嵌入式实时操作系统vxworks及其开发环境Tornodo[M].北京:中国电力出版社,2002.01 2 陈智育,温彦军,陈琪编著VxWorks程序开发实践. 北京:人民邮电出版社,2004.05 3李方敏编著VxWorks高级程序设计. 北京:清华大学出版社,2004.05 |
||||
|
|
||||