1

操作系统是 Ubuntu 10.04 32 位。

这些年来,我一直在不知不觉中假设输入和输出波特率是对称的,输入 == 输出。然而,我刚刚注意到,Linux termios 结构包含输入和输出波特率的字段。并且有“输入”和“输出”版本的 buadrate setter/getter -- cfsetospeed/cfsetispeed、cfgetospeed/cfsgetispeed 它们实际上是独立的控件,我可以以不同的速度说话和听吗?我会想要吗?

我在谷歌上能找到的一点是,将输入速度设置为 0 会告诉输入速度与输出速度相匹配。正确的?如果我将输出速度设置为 9600,然后将输入速度设置为零,则输入速度应为 9600。如果我将输出速度更改为 19200,会发生什么情况?输入速度也会变成19200吗?

对不起,我应该去尝试一些更简单的问题。我的串行连接硬件处于未知状态,我不确定它的行为如何。

4

1 回答 1

1

并非所有的串行端口都支持单独配置这些,但 termios API 确实为您提供了单独的控件来支持那些做的。

您想要不对称速率的情况将非常明显(您正在与之交谈的设备的手册列出了输入和输出的不同速率,并且您同时需要两者)。

没有充分的理由使用“零表示输入和输出相同”。只需明确地将它们设置为相同,然后您就不必担心极端情况。

于 2012-07-19T14:00:59.157 回答