Linux串口编程分析

Linux串口编程分析

ID:41037228

大小:36.00 KB

页数:6页

时间:2019-08-14

Linux串口编程分析_第1页
Linux串口编程分析_第2页
Linux串口编程分析_第3页
Linux串口编程分析_第4页
Linux串口编程分析_第5页
资源描述:

《Linux串口编程分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Linux串口编程分析这个话题,大家可能再熟悉不过了,网上资料很多,因为这是linux下编程比较重要的一个方面,懂这方面的人很多;这里我只是想给初学者简单的介绍下这方面的知识:串口编程其实说白了,是拿根串口线把电脑和所要控制的机器连接起来,然后在通过编程的方式对下位机进行发送指定的数据或进行控制,或进行传输,然后在接受下位机反馈回来的信息提示是否已经正确。是不是好俗!串口是计算机上一种非常通用设备通信的协议,常用PC机上包含的是RS232规格的串口,当然,除了RS232,还有RS485和RS422两种

2、规格,用于不同的设备通信;这里主要是介绍RS232串口编程。在串口编程中,比较重要的是串口的设置,我们要设置的部分包括波特率,数据位,停止位,奇偶校验位;要注意的是,每台机器的串口默认设置可能是不同的,如果你没设置这些,仅仅按照默认设置进行发送数据,很可能出现n多异想不到而又查不出来的情况;所以,在真正通讯前,我们必须设置这些:下面就开始介绍这些基本设置的函数,(其实都是些固定框架,程序中稍微改改就行)~o~1.设置波特率注意每台机器都有输出和输入接受信息的速度,所以用cfsetispeed和cfse

3、tospeed来分别设置;注意到structtermios这样一个结构,它包括了串口端所有的设置,下面还要用到。它在termios.h中被定义。。还有一个地方比较难以理解,为什么设置了speed_arr和name_arr两个数组,这是因为在linuxe下,系统为波特率专门准备了一张表用B38400,B19200......代替,而我们实际上传进去的只能是38400,19200这些值,所以我们拿我们传进去的和name_arr进行比较,如果相等则从系统对照表中取出相应值进行设置,如果不等证明传的值在系统对

4、照表中没有,则不进行设置。intspeed_arr[]={B38400,B19200,B9600,B4800,B2400,B1200,B300,//B38400,B19200,B9600,B4800,B2400,B1200,B300,};intname_arr[]={38400,19200,9600,4800,2400,1200,300,38400,19200,9600,4800,2400,1200,300,};voidset_speed(intfd,intspeed){inti;intstatus;

5、structtermiosOpt;//定义了这样一个结构tcgetattr(fd,&Opt);//用来得到机器原端口的默认设置for(i=0;i

6、setattr(fd,TCSANOW,&Opt);//这是立刻把boterates设置真正写到串口中去if(status!=0)perror("tcsetattrfd1");//设置错误return;}tcflush(fd,TCIOFLUSH);//同上}}2。设置奇偶校验,数据,停止位这三个参数通常放在一起设置,databits是数据位,stopbits是停止位,parity是校验位。串口的这些设置是很复杂很复杂的,Termios成员中共定义c_cflag控制项c_lflag线路项c_iflag输入

7、项c_oflag输出项c_cc控制字符c_ispeed输入波特c_ospeed输出波特那么多项,对于每一项都有很多的设置,这里我们不讲的那么复杂,就一个通用的串口框架进行解释,主要进行奇偶校验,数据,停止位的设置。而其他的一些控制项,在程序中用到时穿插讲解:intset_Parity(intfd,intdatabits,intstopbits,intparity){structtermiosoptions;//定义一个结构if(tcgetattr(fd,&options)!=0)//首先读取系统默认设

8、置options中,必须{perror("SetupSerial1");return(FALSE);}options.c_cflag&=~CSIZE;//这是设置c_cflag选项不按位数据位掩码switch(databits)/*设置数据位数*/{case7:options.c_cflag

9、=CS7;//设置c_cflag选项数据位为7位break;case8:options.c_cflag

10、=CS8;//设置c_cflag选项数据位为8位break;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。