linux下串口非标准波特率的实现

来源:互联网 发布:免费管理会员软件 编辑:程序博客网 时间:2024/05/16 12:39

转载请注明出处http://blog.csdn.net/beluma123,谢谢!

最近要在linux下使用电脑的串口,而使用的波特率不是诸如9600,19200之类的标准波特率,从网上查找非标准波特率的设置方法,都是说对termios结构体进行设置。按照网上的代码进行设置却不成功。费了很大力气终于找到了原因:原来我的linux版本支持一部分非标准的波特率。下面详细说明

操作系统版本:ubuntu 12.04 LTS 64bit

查看/usr/include/x86_64-linux-gnu/bits/termios.h就有一些非标准的波特率,部分代码如下:


/*一下红色为标准波特率部分,B后面的数字就是波特率*/
#define  B50    0000001
#define  B75    0000002
#define  B110    0000003
#define  B134    0000004
#define  B150    0000005
#define  B200    0000006
#define  B300    0000007
#define  B600    0000010
#define  B1200    0000011
#define  B1800    0000012
#define  B2400    0000013
#define  B4800    0000014
#define  B9600    0000015
#define  B19200    0000016
#define  B38400    0000017

#ifdef __USE_MISC
# define EXTA B19200
# define EXTB B38400
#endif
#define CSIZE    0000060
#define   CS5    0000000
#define   CS6    0000020
#define   CS7    0000040
#define   CS8    0000060
#define CSTOPB    0000100
#define CREAD    0000200
#define PARENB    0000400
#define PARODD    0001000
#define HUPCL    0002000
#define CLOCAL    0004000
#ifdef __USE_MISC
# define CBAUDEX 0010000
#endif

/*下面这些就是非标准波特率喽~,B后面的数字就是波特率*/
#define  B57600   0010001
#define  B115200  0010002
#define  B230400  0010003
#define  B460800  0010004
#define  B500000  0010005
#define  B576000  0010006
#define  B921600  0010007
#define  B1000000 0010010
#define  B1152000 0010011
#define  B1500000 0010012
#define  B2000000 0010013
#define  B2500000 0010014
#define  B3000000 0010015
#define  B3500000 0010016
#define  B4000000 0010017


使用方法:

源代码中像设置标准波特率那样进行设置即可,只不过是把原来标准波特率的位置替换成上面存在的非标准波特率之一,如:

cfsetispeed(&term,B2000000);
cfsetospeed(&term,B2000000);

(注意:上面代码不完整,请网上搜索设置串口标准波特率的方法)

本方法对上述linux版本有效,其他版本请自行试验之~。

0 0
原创粉丝点击