34.3. 红外线数据传送

IrDA(红外线数据标准协会)是通过红外线进行无线通讯的行业标准。目前市场上销售的许多便携式计算机都配有与 IrDA 兼容的收发器,支持与其它设备(例如打印机、调制解调器、LAN 或其它便携式计算机)进行通讯。数据传送速率从 2400bps 到 4Mbps。

有两种 IrDA 工作方式。标准方式 SIR,通过串行接口访问红外线端口。这种方式可以在几乎所有系统上使用,足以满足大多数要求。更快的方式 FIR,要求 IrDA 芯片有特殊的驱动程序。因为缺少适当的驱动程序,所以并非所有芯片类型都可以以 FIR 方式工作。在计算机的 BIOS 中设置所需的 IrDA 方式。BIOS 还显示了 SIR 方式使用了哪个串行接口。

Werner Heuser 编写的 IrDA How-To 文档(位于 http://tuxmobil.org/Infrared-HOWTO/Infrared-HOWTO.html)提供了有关 IrDA 的信息。另外,请参见位于 http://irda.sourceforge.net/ 的 Linux IrDA Project 万维网站点。

34.3.1. 软件

内核包中包含所需的内核模块。包 irda 提供了支持红外线接口所需的帮助应用程序。安装此包后,可以在 /usr/share/doc/packages/irda/README 中找到文档。

34.3.2. 配置

在引导系统时,不会自动启动 IrDA 系统服务。因此使用 YaST IrDA 模块激活此服务。此模块中只能修改一个设置:红外线设备的串行接口。测试窗口显示两个输出。其中一个是 irdadump 的输出,它记录了所有发送的和接收的 IrDA 包。此输出应包含计算机的名称以及传送范围内所有红外线设备的名称。第 34.3.4 节 “查错” 显示了这些讯息的示例。窗口的下部列出了存在 IrDA 连接的所有设备。

IrDA 消耗相当多的电池电量,这是因为每隔几秒就会发送一个发现包以检测其它外围设备。因此,如果使用电池电源,则只在必要时才应启动 IrDA。输入命令 rcirdastart 激活 IrDA,或输入 rcirdastop 取消激活 IrDA。当激活接口时,系统将自动装载所有需要的内核模块。

可以在文件 /etc/sysconfig/irda 中执行手工配置。此文件只包含一个变量 IRDA_PORT,它确定在 SIR 方式下要使用的接口。

34.3.3. 用法

可以将数据发送到设备文件 /dev/irlpt0 进行打印。设备文件 /dev/irlpt0 就像普通 /dev/lp0 电缆接口一样,只是它通过红外线以无线方式发送打印数据。要进行打印,确保打印机位于计算机红外线接口的可视范围内并且启动了红外线支持。

可以使用 YaST 打印机模块对通过红外线接口运行的打印机进行配置。因为不能自动检测打印机,所以请通过单击其它(未检测到)手工配置打印机。在随后的对话框中,选择 IrDA 打印机。通常,irlpt0 是正确的连接。第 11 章 打印机操作 提供了在 Linux 中操作打印机的详细信息。

通过设备文件 /dev/ircomm0 可以与其它主机以及移动电话或其它类似设备进行通讯。例如,Siemens S25 和 Nokia 6210 移动电话可以通过使用红外线接口的 wvdial 应用程序拨号并连接到因特网。还可以与 Palm Pilot 同步数据,但前提是已将相应的应用程序的设备设置设置为 /dev/ircomm0

如果愿意,您可以只对支持打印机或 IrCOMM 协议的设备进行寻址。通过特殊应用程序(例如 irobexpalm 和 irobexreceive)可以对支持 IROBEX 协议的设备(例如 3Com Palm Pilot)进行寻址。有关信息,请参见 IR-HOWTO (http://tldp.org/HOWTO/Infrared-HOWTO/)。irdadump 输出中设备名后的方括号中列出了此设备支持的协议。IrLAN 协议支持仍在开发中。

34.3.4. 查错

如果连接到红外线端口的设备不响应,请使用命令 irdadump(以 root 用户身份)检查计算机是否识别其它设备。当 Canon BJC-80 打印机在计算机的可视范围内时,会经常出现类似 例 34.1 “irdadump 的输出” 的内容:

例 34.1. irdadump 的输出

21:41:38.435239 xid:cmd 5b62bed5 > ffffffff S=6 s=0 (14) 
21:41:38.525167 xid:cmd 5b62bed5 > ffffffff S=6 s=1 (14)
21:41:38.615159 xid:cmd 5b62bed5 > ffffffff S=6 s=2 (14)
21:41:38.705178 xid:cmd 5b62bed5 > ffffffff S=6 s=3 (14)
21:41:38.795198 xid:cmd 5b62bed5 > ffffffff S=6 s=4 (14)
21:41:38.885163 xid:cmd 5b62bed5 > ffffffff S=6 s=5 (14)
21:41:38.965133 xid:rsp 5b62bed5 < 6cac38dc S=6 s=5 BJC-80 
                        hint=8804 [Printer IrCOMM ] (23) 
21:41:38.975176 xid:cmd 5b62bed5 > ffffffff S=6 s=* earth 
                        hint=0500 [ PnP Computer ] (21)

如果没有输出或其它设备不回应,则检查接口的配置。校验是否使用了正确的接口。有时红外线接口位于 /dev/ttyS2/dev/ttyS3,并且有时使用了 IRQ 3 之外的中断。可以在几乎每台便携式计算机的 BIOS 设置菜单中检查和修改这些设置。

还可以使用普通数码摄像机来帮助确定红外线 LED 是否发光。大多数数码摄像机都可以看到红外线,但人眼却看不到。