使用termios获得更快的波特率

时间:2013-12-26 22:17:31

标签: c serial-port xbee baud-rate

使用非规范输入处理,我正在读取使用带有“DB9-to-USB”电缆的Xbee接口XBIB-R-Dev发送到Xbee S2B Pro(ZB)的串行数据。我正在使用http://tldp.org/HOWTO/Serial-Programming-HOWTO/x115.html中的一些示例代码。我这样做的项目严格来说是c代码而不是C ++。

当我在运行Ubuntu Linux 12.04 LTS(32位 - 最新更新)的笔记本电脑上阅读termios.h上的信息时,我发现只有最高的波特率才是38400 BAUD(B38400常数)。只需更换B38400的“#define BAUDRATE”以获得更高的波特率B57600或更高,因为它没有在头文件中定义。我会收到一个错误,说B57600没有定义。

我的问题是有没有更好的方法或方法来解决这个问题(使用termios),因此我可以更快的速度读取数据,因为Xbee S2B Pro可以提高1 Mbps的串行数据速率(规格为在digi.com网站上列出)。

感谢您的帮助。

麦克

1 个答案:

答案 0 :(得分:1)

您是否可以使用以下内容(使用问题中链接示例中的struct termios newtio;

 cfsetispeed(&newtio, B57600);
 cfsetospeed(&newtio, B57600);

或只是

  cfsetspeed(&options, B57600);

来自termios手册页,它表示传递给这些函数的speed_t参数可以取值高达B230400。我还在12.04 Ubuntu上开发了串口读取应用程序,上面的功能非常适合我。