9.6. 图像扫描仪 =============== 在 FreeBSD 中,对图像扫描仪的访问是由 `SANE(Scanner Access Now Easy,简易扫描仪访问) `__\ 提供的,可以在 FreeBSD ports 中找到它。 9.6.1. 检查扫描仪 ----------------- 在尝试任何配置之前,重要的是检查 SANE 是否支持扫描仪。 在连接了扫描仪的情况下,运行以下命令以获得所有连接的 USB 设备: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # usbconfig list 输出结果看起来像这样: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session ugen4.2: at usbus4, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON (70mA) ugen4.3: at usbus4, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON (100mA) ugen3.2: at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (2mA) 运行以下命令以获得 ``idVendor`` 和 ``idProduct``\ : .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # usbconfig -d 3.2 dump_device_desc .. **注意** 请注意,扫描仪是一个即插即用的设备,改变它所连接的 USB 端口将改变 ``usbconfig list`` 的输出。 输出结果看起来像这样: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session ugen3.2: at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (2mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0200 bDeviceClass = 0x0000 bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0040 idVendor = 0x03f0 idProduct = 0x8911 bcdDevice = 0x0100 iManufacturer = 0x0001 iProduct = 0x0002 bNumConfigurations = 0x0001 一旦获得了 ``idVendor`` 和 ``idProduct``\ ,就有必要在 `SANE 的支持设备列表 `__\ 中通过过滤 idProduct 来确认是否支持你的扫描仪。 9.6.2. SANE 配置 ---------------- SANE 通过后端提供对扫描仪的访问。为了能够用 FreeBSD 进行扫描,必须通过运行以下命令来安装 `graphics/sane-backends `__ 软件包: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # pkg install sane-backends .. **提示** 一些 USB 扫描器需要加载固件。像上面的例子中使用的惠普扫描仪,需要安装软件包 `print/hplip `__ 。 在安装了必要的软件包之后,必须配置 `devd(8) `__ 允许 FreeBSD 访问扫描仪。 将 ``saned.conf`` 文件添加到 **/usr/local/etc/devd/saned.conf** 中,内容如下: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session notify 100 { match "system" "USB"; match "subsystem" "INTERFACE"; match "type" "ATTACH"; match "cdev" "ugen[0-9].[0-9]"; match "vendor" "0x03f0"; match "product" "0x8911"; action "chown -L cups:saned /dev/\$cdev && chmod -L 660 /dev/\$cdev"; }; ``vendor``\ :是之前通过运行 ``usbconfig -d 3.2 dump_device_desc`` 命令得到的 idVendor。 ``product``\ :是之前通过运行 ``usbconfig -d 3.2 dump_device_desc`` 命令获得的 idProduct。 之后,必须通过运行下面的命令重新启动 `devd(8) `__\ : .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # service devd restart SANE 的后端包括 `scanimage(1) `__\ ,可以用来列出设备并执行图像采集。 用 ``-L`` 参数执行 `scanimage(1) `__\ ,以列出扫描仪设备: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # scanimage -L 输出结果看起来像这样: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session device `hpaio:/usb/Deskjet_1050_J410_series?serial=XXXXXXXXXXXXXX' is a Hewlett-Packard Deskjet_1050_J410_series all-in-one 如果 `scanimage(1) `__ 不能识别扫描仪,就会出现这个信息: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session No scanners were identified. If you were expecting something different, check that the scanner is plugged in, turned on and detected by the sane-find-scanner tool (if appropriate). Please read the documentation which came with this software (README, FAQ, manpages). 在 `scanimage(1) `__ 识别到扫描仪后,配置就完成了,扫描仪就可以使用了。 要激活该服务并在启动时运行,请执行以下命令: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # sysrc saned_enable="YES" 虽然 `scanimage(1) `__ 可以用来从命令行中进行图像采集,但通常更倾向于使用图形界面来进行图像扫描。 **表 20. 图形化扫描程序** ================= ======= ==================== 名称 许可证 软件包 ================= ======= ==================== skanlite GPL 2.0 graphics/skanlite GNOME Simple Scan GPL 3.0 graphics/simple-scan XSANE GPL 2.0 graphics/xsane ================= ======= ====================