【发布时间】:2010-07-07 06:43:06
【问题描述】:
我有一个 USB 设备,我正试图通过 ftdi_sio 内核模块提供的虚拟串行端口与之通信。但是,我在将端口的波特率设置为 14400 时遇到了一些问题:
-
termios.h没有为 14400 指定常量,所以我不能使用cfsetispeed和cfsetospeed。 - 在 ftdi_sio 内核模块的源代码中,波特基设置为 24000000,似乎没有办法改变它。这意味着我无法将自定义除数与
TIOCSSERIALioctl 一起使用,从而获得 14400 的波特率。 - 模块源有一条评论,听起来好像将端口的
tty_struct结构的alt_speed成员设置为14400 可以满足我的要求,但似乎没有任何方法可以将其设置为14400 给定现有接口。
有人对此有任何想法吗?通过破解内核模块很容易解决这个问题,但我真的在寻找一种不需要更改内核的解决方案。
【问题讨论】:
-
ISTR 在 Dave Grohl 担任 Nirvana 的鼓手时,使用 14400 波特调制解调器和 19200 波特的端口速度 - 您的设备在 19200 下无法工作吗?
-
不,不幸的是,它是 14400 或半身像。
-
由 baudbase / divisor 产生的波特率不是确切的波特率是很常见的事情。这通常不是问题。如果您的串行硬件晶体无法提供,您将无法获得准确的波特率。尤其是像 ftdi 这样的硬件,我怀疑你可以改变波特基。
标签: linux serial-port virtual-serial-port