下一页 上一页 目录

7. 配置串口驱动程序(高级)“stty”

7.1 简介

这种配置通常由您的通信程序完成,例如 wvdial。它可能在您甚至不知道的情况下完成很多操作。在过去,它是使用 “stty” 实用程序完成的。如果您使用 stty 手动设置了一些东西,通信程序可能会将设置更改为其他值,因此通常最好只让通信程序处理它。请参阅 什么是 stty?

7.2 硬件流控制 (RTS/CTS)

有关其解释,请参阅 流控制。如果可能,您应该始终使用硬件流控制。您的通信程序或 “getty” 应该有一个用于设置它的选项(并希望默认情况下启用它)。它需要在您的调制解调器内部(通过初始化字符串或默认设置)和设备驱动程序中进行设置。您的通信程序应该设置这两者(如果您正确配置它)。

如果以上方法都不能完全启用硬件流控制。那么您必须自己进行设置。对于调制解调器,请确保它是通过初始化字符串完成的,还是默认开启的。如果您需要告诉设备驱动程序执行此操作,最好在启动时将其放入启动时运行的文件中。请参阅小节 启动时配置 您需要为每个要启用硬件流控制的串口(例如 ttyS2)在这样的文件中添加以下内容

stty -F /dev/ttyS2 crtscts
or
stty crtscts < /dev/ttyS2

如果您想查看流控制是否已启用,请执行以下操作:在 minicom(或类似的程序)中,键入 AT&V(或 3Com 调制解调器上的 ATI4)以查看调制解调器的配置,并查找 &K3(或 3Com 调制解调器上的 &H1),这意味着硬件流控制。然后在不退出通信程序(例如 minicom)的情况下,通过键入:stty -F /dev/ttyS2 -a 来查看设备驱动程序是否知道它。查找 “crtscts”(没有禁用减号)。请记住,通信程序会更改这些设置,因此您可能需要在启动通信程序后检查它们。

7.3 速度设置

除了流控制之外,还有速度。请参阅 我应该为我的调制解调器使用什么速度。还有奇偶校验和每字节位数设置。通常,端口由通信程序设置为 8N1(每字节 8 位,无奇偶校验,1 个停止位)。如果您正在运行 PPP,则必须使用 8N1。因此,如果您收到关于它不是 8 位干净的投诉,那么它很可能不是像应该的那样是 8N1。

7.4 忽略 CD 设置:clocal

通常,打开串口之前需要 CD(载波检测)信号(对于外部调制解调器,在 CD 线路上)。但是,如果 stty 否定了 clocal (-clocal),则端口需要 CD 信号升高才能打开并保持打开状态。实际上,熟练的程序员可以编写程序,即使在 CD 和 clocal 表示不应该打开端口的情况下,也可以强制端口打开。因此,如果 stty 显示 -clocal,则打开端口可能存在问题。但是对于拨入,在某些情况下,您可能需要 -clocal,以便当远程调制解调器停止发送载波并且 CD 信号下降时,端口将关闭并终止在其上运行的所有进程。

保持 CD 信号升高的一种方法是向调制解调器发送 “AT&C”,以便来自调制解调器的 CD 信号始终处于开启状态。CD 始终开启对于拨出来说很好,但对于拨入,CD 信号有时(但很少)用于检测来电。

在最近的串口驱动程序中,clocal 可能会默认断言。 Minicom 在启动时会自动升高 clocal,因此打开端口没有问题。但是,当您退出 minicom 时,它会将 clocal 设置恢复为其原始状态。但是,当我设置 -clocal 并尝试 “set line ...” 时,Kermit 6.0.192 版本挂起了。

7.5 什么是 stty?

stty 类似于 setserial,但它设置串口的速度(波特率)、硬件流控制和其他参数。键入 “stty -F /dev/ttyS2 -a” 应该会显示 ttyS2 的配置方式。大多数 stty 设置用于您永远不需要与调制解调器一起使用的东西。许多设置仅适用于文本终端(有些仅适用于 1970 年代的古董终端)。您的通信包应自动设置调制解调器所需的几个设置。因此,您通常不需要使用 stty,因此在本 Modem-HOWTO 中没有过多介绍。但是 stty 有时对于故障排除很有用。有关 stty 的更多信息,请参阅 Serial-HOWTO 或 Text-Terminal-HOWTO。


下一页 上一页 目录