3. 与 DC 系列相机通讯

以下章节针对特定的相机型号和/或相机型号组。一个特定的相机型号可能会在多个章节中列出,因为它可能被多种方法支持。一种方法可能比另一种方法更容易,并且特定的方法可能更符合您的需求。请仔细选择使用的方法,并在选择之前阅读所有选项,这可以为您节省大量的时间。

如果 PC 卡读卡器可用,或者笔记本电脑内置了读卡器,那么遵循 Compact Flash PC 卡适配器/PCMCIA-ATA 存储卡应该具有足够的通用性,可以适用于几乎所有柯达 DC 系列相机和许多非柯达数码相机。请注意,几乎所有数码相机中使用的存储设备都有适配器可以转换为另一种更常见的技术。用于智能存储卡的软盘适配器可能适用于使用智能存储卡的相机。这些方法也往往提供快速的数据传输速率,是许多人的首选方法。

即使某些软件可能没有提及与特定软件的兼容性,也不要认为这意味着该相机不适用于该软件包。通常,相机可以使用其他数码相机使用的协议,并且过去的方法仍然有效。如果有人发现某种方法有效但未在 HOWTO 中提及,请不要忘记将信息发送给本文档的作者 David Burley

3.1. DC40、DC50、DC120、DC200、DC210

所有这些相机都提供了通过标准 RS232 串行端口进行数据传输的机制。本节专为希望将其数码相机与 kdpci 应用程序一起使用的人员量身定制。以下步骤未经测试,但是没有理由认为它们不起作用。如果有人发现这些步骤有效或无效,请发送报告至 David Burley,以便在此处注明状态。

3.1.1. 串行相机控制

有关使用 RS232 串行支持从这些相机传输数据的其他说明将在本 HOWTO 的未来版本中添加。所有 GNU/Linux 发行版都应配置为默认安装,以便与相机的串行通信不需要任何内核配置。有关 kdcpi 的使用和配置的更多信息,请参阅软件部分的 kdcpi 部分。

3.2. DC20、DC25、DC200+、DC210、DC210+ Zoom、DC215、DC220、DC220+、DC240、DC260、DC265、DC280、DC290

所有这些相机都提供了通过标准 RS232 串行端口进行数据传输的机制。一些相机提供了通过 USB(通用串行总线)进行数据传输的机制。本节专为希望将其数码相机与 gPhoto 一起使用的人员量身定制。有关应用程序使用的更多信息,请参阅本文档的软件部分的 gPhoto 部分。

以下步骤未经测试,但是没有理由认为它们不起作用。如果有人发现这些步骤有效或无效,请发送报告至 David Burley,以便在此处注明状态。

3.2.1. 串行相机控制

有关使用 RS232 串行支持从这些相机传输数据的其他说明将在本 HOWTO 的未来版本中添加。所有 GNU/Linux 发行版都应配置为默认安装,以便与相机的串行通信不需要任何内核配置。有关 gPhoto 的使用和安装的更多信息,请参阅软件部分的 gPhoto 部分。

3.2.2. USB 相机控制

在此配置下,DC220、DC260、DC265 和 DC290 相机无需特殊的驱动程序或内核更改即可支持。gPhoto 包含支持从这些相机进行 USB 传输的必要驱动程序。但是,如果加载了 dc2xx 内核模块,则可能需要删除它,否则可能会发生资源繁忙错误。要删除模块,请运行以下命令

bash# /sbin/rmmod dc2xx
   

即使模块未加载,尝试删除模块也不会造成任何损害,因此建议在启动 gPhoto 并通过 USB 连接到相机之前删除它。有关 gPhoto 的使用和安装的更多信息,请参阅软件部分的 gPhoto 部分。

3.3. DC220、DC260、DC265、DC290 (HP Photosmart C500?)

这些相机提供了通过标准 RS232 串行端口、USB(通用串行总线)和 IrDA(红外线)接口进行数据传输的机制。此外,可以通过移除相机的 Compact Flash 卡并在 PC 卡读卡器或笔记本电脑 PC 卡插槽中使用 Compact Flash PC 卡适配器来卸载图像。目前,OpenDiS 支持这些相机的 USB、IrDA 和串行数据传输。有关使用示例以及如何安装和配置应用程序以与相机配合使用的信息,请参阅软件部分的 Open Digita Services 部分。

请注意,以下步骤仅经过验证可与柯达 DC-265 配合使用;应将其他型号使用相同步骤的报告发送至 David Burley。没有理由认为这些步骤不适用于所有运行 DigitaOS 的数码相机。

3.3.1. 串行相机控制

有关使用 RS232 串行支持从启用 DigitaOS 的相机传输数据的其他说明将在本 HOWTO 的未来版本中添加。所有发行版都应配置为默认安装,以便与相机的串行通信不需要任何内核配置。有关串行相机控制的信息,请参阅软件部分的 OpenDiS 和/或 Digita Operating Environment -- Command Device Protocol Python Script 部分。

3.3.2. 2.2.x 内核 USB 支持

本节仅适用于运行 2.2.x 系列内核的用户。对于运行 2.4.x 系列内核的用户,请跳过本节。目前,2.2.x 系列中的 USB 实现不足且已严重过时。因此,大多数 USB 设备在使用包含的驱动程序时不受本地支持。但是,2.2.15 - 2.2.17 内核有一个补丁可用。

所需的软件(如果尚未安装)

  1. usb-2.4.0-test2-pre2-for-2.2.16-v3.diff.gz

  2. Linux 内核 2.2.17

本文档假定您具备内核和程序编译的工作知识。如果您不熟悉该过程,请阅读 Kernel-HOWTO

应用补丁

bash# cp usb-2.4.0-test2-pre2-for-2.2.16-v3.diff.gz /usr/src
bash# gunzip /usr/src/usb-2.4.0-test2-pre2-for-2.2.16-v3.diff.gz
bash# cd /usr/src/linux
bash# patch -p1 < ../usb-2.4.0-test2-pre2-for-2.2.16-v3.diff
   

选择以下选项,将其构建为模块或内核的一部分

  1. 支持您的 USB 控制器(建议将所有这些编译为模块,除非已知控制器类型)。

  2. USB 柯达 DC-2xx 相机支持。

  3. 初步的 USB 设备文件系统。

重新启动系统,然后在每次需要访问 compact flash 卡时加载已创建的模块(如果支持未编译到内核中)。要加载模块,请执行以下操作

bash# /sbin/insmod /lib/modules/$(uname -r)/usb/usbcore.o
   

如果 USB 控制器使用 Intel 或 VIA 芯片组,请使用以下命令。也可能支持其他一些芯片组

bash# /sbin/insmod /lib/modules/$(uname -r)/usb/usb-uhci.o
   

如果以上方法不起作用且这是控制器类型,请使用以下命令

bash# /sbin/insmod /lib/modules/$(uname -r)/usb/uhci.o 
   

如果 USB 控制器使用 SiS 芯片组、是 Compaq 或者因为以上两种方法似乎都不起作用且这是唯一剩下的选项,请使用此命令。

bash# /sbin/insmod /lib/modules/$(uname -r)/usb/usb-ohci-hcd.o 
   

加载柯达数码相机支持模块

bash# /sbin/insmod /lib/modules/$(uname -r)/usb/dc2xx.o 
   

挂载 USB 设备文件系统

bash# mount -t usbdevfs ignored /proc/bus/usb
   

3.3.3. 2.4.x 内核 USB 支持

本节仅适用于运行 2.4.x 系列内核的用户。对于运行 2.2.x 系列内核的用户,请跳过本节并遵循 2.2.x 内核 USB 支持部分。2.4.x 系列内核本地支持 USB,这使得配置比 2.2.x 内核系列更容易。

所需的软件(如果尚未安装)

  1. Linux 内核 2.4.0

本文档假定您具备内核和程序编译的工作知识。如果您不熟悉该过程,请阅读 Kernel-HOWTO

选择以下选项,将其构建为模块或内核的一部分

  1. 支持您的 USB 控制器(建议将所有这些编译为模块,除非已知控制器类型)。

  2. USB 柯达 DC-2xx 相机支持。

  3. 初步的 USB 设备文件系统。

重新启动系统,然后在每次需要访问 compact flash 卡时加载已创建的模块(如果支持未编译到内核中)。要加载模块,请执行以下操作

bash# /sbin/insmod /lib/modules/$(uname -r)/usb/usbcore.o
   

如果 USB 控制器使用 Intel 或 VIA 芯片组,请使用以下命令。也可能支持其他一些芯片组

bash# /sbin/insmod /lib/modules/$(uname -r)/usb/usb-uhci.o
   

如果以上方法不起作用且这是控制器类型,请使用以下命令

bash# /sbin/insmod /lib/modules/$(uname -r)/usb/uhci.o 
   

如果 USB 控制器使用 SiS 芯片组、是 Compaq 或者因为以上两种方法似乎都不起作用且这是唯一剩下的选项,请使用此命令。

bash# /sbin/insmod /lib/modules/$(uname -r)/usb/usb-ohci-hcd.o 
   

加载柯达数码相机支持模块

bash# /sbin/insmod /lib/modules/$(uname -r)/usb/dc2xx.o 
   

挂载 USB 设备文件系统

bash# mount -t usbdevfs ignored /proc/bus/usb
   

3.3.4. 内核 USB 设备

以下是一个 bash shell 脚本,旨在为当前 2.4.x 内核系列和已过时的 2.2.X 内核系列(带有当前 USB 反向移植)创建所有 16 个柯达设备。将以下文本复制到名为 MakeKodakDev 的文件中,然后通过键入“chmod +x MakeKodakDev”使该文件可执行,然后以 root 用户身份(或 su 到 root 用户)运行脚本 ./MakeKodakDev,它将创建设备,因此不必手动单独创建它们。

它根据内核文档中的 dc2xx.txt 文件创建以下 16 个设备

/dev/dc2xx0 类型=字符 主设备号=180 次设备号=80

...

/dev/dc2xx16 类型=字符 主设备号=180 次设备号=95

# Filename: MakeKodakDev
# Creates the device files for USB access of Kodak digital cameras.
# Last Modified January 6, 2001 
# Please see the Kodak Digital Camera HOWTO for more information 
# http://www.marblehorse.org/projects/documentation/kodak/
#!/bin/sh

export scrapvar=0
 
   while [ $scrapvar -lt 17 ];
      do mknod -m 0666 /dev/dc2xx$scrapvar c 180 $(( $scrapvar + 80 ));
      scrapvar=$(( $scrapvar + 1 ));
   done

# EOF
   

3.3.5. 内核 IrDA 支持

大多数较新的发行版都带有 IrDA 支持和处理 IrDA 的正确实用程序。Redhat 7.0 就是其中之一。但是,对于我们其余的人来说,一些配置是必要的。获取最新内核(2.2.x 系列或更高版本)的副本,并将所有 IrDA 功能编译为模块。IrDA 的工作方式很像 GNU/Linux 中的 PCMCIA 支持,因此拥有可能拥有的任何其他 IrDA 设备的模块非常重要。有一个关于编译新内核的很好的 HOWTO,即 Kernel-HOWTO。有关配置和编译新 Linux 内核的问题,请参阅它。

3.3.6. IrDA 实用程序软件

配置 IrDA 支持的下一步是安装 irda-utils 软件包。不幸的是,在当前版本的 HOWTO 发布时,作者在查找实用程序的源代码存档时遇到了问题,因此他使用了 Redhat 用于构建其 Redhat 7.0 的 RPM 的存档。请注意,需要 root 权限才能运行安装软件所需的命令,但访问相机不需要 root 权限。

所需的软件(如果尚未安装)

  1. irda-utils 0.9.10 和补丁

  2. irda-utils 存档的 gpg 签名

提取存档、打补丁、编译和安装它

bash# cp irda-utils-0.9.10+patches.tar.gz /usr/src
bash# cd /usr/src
bash# tar zxvf irda-utils-0.9.10+patches.tar.gz
bash# tar zxvf irda-utils-0.9.10.tar.gz
bash# cd irda-utils-0.9.10
bash# patch -p1 < ../irda-utils-0.9.4-chkconfig.patch 
bash# patch -p1 < ../irda-utils-typo.patch
bash# patch -p1 < ../irda-utils-redhat.patch
bash# make
bash# make install
   

3.3.7. 创建 IrDA 设备节点

设备节点是必要的,以便应用程序可以与设备的驱动程序通信。虽然 irlpt 设备对于使相机工作不是必需的,但现在创建它们将节省以后需要查找它们的时间,如果您确实需要它们的话。

bash# mknod -m 0666 /dev/ircomm0 c 161 0
bash# mknod -m 0666 /dev/ircomm1 c 161 1
bash# mknod -m 0666 /dev/irlpt0 c 161 16
bash# mknod -m 0666 /dev/irlpt1 c 161 17
   

3.3.8. 修改 /etc/conf.modules 或 /etc/modules.conf

使用文本编辑器打开 /etc/conf.modules 或 /etc/modules.conf,具体取决于您的发行版。将以下三行添加到文件中,同时注意不要更改任何其他行。

#IrDA
alias tty-ldisc-11 irtty 
alias char-major-161 ircomm-tty
   

3.3.9. 启用 IrDA 并测试连接性

Irmanager 是启动和停止正确 IrDA 模块的程序。d1 标志告诉 irmanager 进入发现模式。

以 root 用户身份运行以下命令

bash# /usr/sbin/irmanager -d1
   

将相机置于连接模式并打开电源。确保相机靠近计算机上的 IrDA 端口并面向它。运行以下命令以查看是否通过 IrDA 进行任何通信

bash$ /usr/bin/irdadump
   

运行命令后,您应该看到类似于以下内容的输出

00:04:10.608823 xid:cmd bedcb551 > ffffffff S=6 s=2 (14)
00:04:10.698818 xid:cmd bedcb551 > ffffffff S=6 s=3 (14)
00:04:10.788815 xid:rsp bedcb551 < 5f36a4a1 S=6 s=3 Kodak DC265 Zoom hint=8404 [ Computer IrCOMM ]
(33) 00:04:10.798819 xid:cmd bedcb551 > ffffffff S=6 s=4 (14)
00:04:10.888815 xid:cmd bedcb551 > ffffffff S=6 s=5 (14)
00:04:10.978818 xid:cmd bedcb551 > ffffffff S=6 s=* armstrong hint=0400 [ Computer ] (25)

6 packets received by filter
   

如果未显示之前的消息,请尝试将相机移近或远离 IrDA 端口,并确保环境中没有太多光线形式的外部干扰。此外,如果机器是带有 PC 卡(或 PCMCIA)调制解调器的笔记本电脑,则移除它可能有助于解决问题。

3.4. Compact Flash PC 卡适配器/PCMCIA-ATA 存储卡

本节适用于希望利用最大数据传输速率并节省相机电池电量的人员。本节中建议的连接方法适用于所有使用 PCMCIA-ATA 存储卡或 Compact Flash 卡的柯达 DC 系列相机。这种图片访问方法仅允许存储、检索和删除 Compact Flash 卡上的图像。这些说明已在 Dell Inspiron 7000 笔记本电脑上使用柯达 16 MB 图片卡和 SanDisk CompactFlash PC 卡适配器进行了测试。

所需的软件(如果尚未安装)

  1. PCMCIA-CS-3.1.21

本文档假定您具备内核和程序编译的工作知识。如果您不熟悉该过程,强烈建议您阅读 Kernel-HOWTO

选择以下选项,将其构建为模块或内核的一部分

  1. DOS FAT fs 支持

  2. VFAT (Windows-95) fs 支持

重新启动系统,然后在每次需要访问 compact flash 卡时加载已创建的模块(如果支持未编译到内核中)。要加载模块,请执行以下操作

bash# /sbin/insmod /lib/modules/$(uname -r)/fat.o 
bash# /sbin/insmod /lib/modules/$(uname -r)/vfat.o 
  

编译和配置 PCMCIA-CS。这部分过程超出了本文档的范围,但是,在 PCMCIA-HOWTO 中可以找到包含此类信息的文档。很可能还有计算机运行的 GNU/Linux 发行版的预打包版本。如果使用预打包版本,则可以大大简化此步骤。

使用 Compact Flash PC 卡适配器

创建一个目录以挂载 Compact Flash 卡。

bash# mkdir /flashcard 
  

将 Compact Flash 卡插入 Compact Flash PC 卡适配器(两者应朝向同一方向。请注意,对于使用 PCMCIA-ATA 存储卡的相机,此步骤是不必要的)。

将 Compact Flash PC 卡适配器或 PCMCIA-ATA 存储卡插入笔记本电脑的 PC 卡插槽。

将卡挂载到 /flashcard(Compact Flash 卡 PC 卡适配器/PCMCIA-ATA 存储卡通过计算系统上有多少 IDE 控制器来分配其设备,然后将其分配为下一个设备。例如,如果一个系统有 2 个 IDE 控制器,因此将 /dev/hda /dev/hdb /dev/hdc 和 /dev/hdd 分配给当前控制器,则 Compact Flash 卡 PC 卡适配器将被分配为 /dev/hde1)。

bash# mount -t vfat /dev/hde1 /flashcard 
  

从此时开始,可以像在普通文件系统上一样复制、移动、删除和重命名文件。有关文件管理命令的信息可以在使用的操作系统发行版附带的文档中找到,例如 man 手册。可以通过键入以下内容来访问列出用于执行上述过程的命令的手册页条目:“man cp”、“man mv”、“man rm”。在移除 Compact Flash 卡 PC 卡适配器之前,请记住使用以下命令卸载它。

bash# umount /flashcard 
  

可以将 Compact Flash 卡 PC 卡适配器/PCMCIA-ATA 存储卡从 PC 卡读卡器中移除,并将 Compact Flash 卡从 Compact Flash 卡 PC 卡适配器中移除(如果使用了适配器)。