转载请注明出处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版本有效,其他版本请自行试验之~。