12.2. 配置哑调制解调器

Linux,像大多数 UNIX 类操作系统一样,期望串行控制台连接到哑调制解调器。如今哑调制解调器已不多见,可能只在诸如 ISDN 终端适配器或卫星地面终端等特殊硬件上才能见到。

哑调制解调器通过硬件配置。图 12-1 显示了一个虚构的哑调制解调器的前面板。实际上,速度和模式设置很可能通过跳线或 DIP 开关来完成。

图 12-1。哑调制解调器的前面板

+-----------------------------+
|                             |
|    SPEED       MODE         |
|  [ ]  300    [ ] Originate  |
|  [ ]  600    [X] Answer     |
|  [ ] 2400                   |
|  [X] 9600                   |
|                             |
+-----------------------------+

调制解调器的速度设置为所需的比特率,在我们的例子中是 9600bps。调制解调器的模式设置为“Answer”(应答),即等待来电并应答。

如果 RS-232 控制线 Data Terminal Ready(数据终端就绪)为低电平,调制解调器将不会应答呼叫。计算机已关闭或计算机的串行接口尚未初始化。一旦 DTR(数据终端就绪)为高电平,调制解调器将应答来电。

一旦建立来电呼叫,调制解调器就会拉高 Data Carrier Detect(数据载波检测)控制线。只有当 DCD 为高电平时,接收到的数据才是有效的(当 DCD 未被置位时,从哑调制解调器接收到的数据可能是线路噪声)。只有当 DCD 为高电平时,发送的数据才会被传递到链路中。

Linux 计算机上的 getty 一直在等待 DCD(数据载波检测)变为高电平,然后 getty 欢迎用户并请求他们登录。

当用户登录并且数据正在流动时,调制解调器和计算机之间使用 Clear to Send(清除发送)和 Ready to Send(准备发送)来防止数据发送过快。当计算机太忙而无法接收字符时,它会拉低 Ready to Send。当调制解调器太忙而无法接收字符时,它会拉低 Clear to Send。

当用户挂断电话时,Data Carrier Detect(数据载波检测)变为低电平,挂断信号被发送到所有与拨入会话相关的进程。

或者,用户可以注销。当 shell 终止时,计算机会将 Data Terminal Ready(数据终端就绪)拉低,导致调制解调器挂断。当 getty 再次将 Data Terminal Ready 拉高时,调制解调器将接受更多来电。

我们尚未描述 Data Set Ready(数据装置就绪)。如果调制解调器已关闭或尚未初始化,则此线路为低电平。当 DSR 为低电平时,来自调制解调器的所有其他信号都是未定义的。例如,如果 DSR 为低电平,但 DCD “浮动”到高电压,则软件应表现得好像 DCD 未被置位一样。