这是我的第一篇文章,我已经看到越具体越好,所以我会尽量做到超级清楚,并提前感谢!
我想要什么:
我需要同时从 2 个或更多扫描仪扫描图像,这些扫描仪来自相同的品牌和型号,在这种情况下是Epson Perfection V600,我需要不同的时间间隔在一个过程中至少 40 次捕获20小时。
我
决定使用 Windows 的方法,我已经有一个 Python 程序,它只用一个扫描仪或两个来自不同型号的扫描仪就可以完成我想要的工作。但这是你们进来的地方:
问题
Windows 总是使用相同的扫描仪打印,因为它们来自相同的品牌和型号,所以它总是使用相同的扫描仪,而且我不能使用两种不同的扫描仪,因为这会导致图像无法比较。然而,当我使用两个不同的扫描仪时,我没有这样的问题。我需要找到一种方法来使用每台扫描仪进行打印。我想买一个 USB 集线器并用 python 控制它,但显然在 windows 中实现了libsub,我将无法控制它。因此,我目前正在寻找一种禁用特定 USB 端口的方法,以便程序仅识别一个设备,对其进行扫描,禁用该设备,重新启用另一个设备,等等。
我可以访问的内容:
- 现在我在 Conda 环境中的 python 3.5 版本中使用 Windows 10、64 位、python 内核 3,conda 版本(4.5.11)。
- Ubuntu 16.04,64 位,pyinsane 工作,在 conda 内的 python 3.5 环境中(手头没有 conda 版本)。
- 一台爱普生完美V600。
- 两个Canon Lide200,只能在windows 下工作,因为驱动程序在Ubuntu 中不可用。
我也尝试过的
- 使用 Ubuntu,
我认为这是一个好主意,但是Epson 驱动程序网页无法连接到包含其余 Epson 文件的存储库,让我只能下载部分文件,我已经尝试联系 Docky 存储库的所有者,但他没有联系我。
错误:
W:存储库“ http://ppa.launchpad.net/docky-core/ppa/ubuntu Xenial Release”没有发布文件。
N:来自此类存储库的数据无法进行身份验证,因此使用起来存在潜在危险。
N:有关存储库创建和用户配置的详细信息,请参见 apt-secure(8) 手册页。
E: 无法获取http://ppa.launchpad.net/docky-core/ppa/ubuntu/dists/xenial/main/binary-amd64/Packages 404 Not Found
E: 一些索引文件下载失败。它们已被忽略,或者使用旧的。
当我手动尝试进入站点的存储库时,我发现所有指向 XENIAL 驱动程序的链接都已关闭,实际上整个 Xenial 文件夹都丢失了。
然后还认为忽略此消息是个好主意,但我需要Epwoka 驱动程序才能在 Ubuntu 中运行 Epson 扫描仪,这本身就是一个完整的问题。除此之外,不知道 Epson Perfection V600 是否可以由 PyInsane 库控制,因为它被标记为未经测试。
使用视窗
我想购买一个 USB 集线器并按此线程所示进行控制,但显然在 Windows 中是不可能的。
我已经安装了 libsub、usb.util、libusb1、USB(用于核心功能)和 usb1,但我不知道(我认为不可能)用它们禁用和重新启用特定的 USB 端口。
无法禁用驱动程序,因为这意味着所有 USB都将关闭以与扫描仪连接。
设备管理器没有帮助,因为无法分辨哪个设备是哪个。
无法更改扫描仪的名称(是的,打印机可以有特定的名称),但扫描仪不能。
不能再买一台扫描仪,我被爱普生困住了。
我的扫描代码
import pyinsane2
def Scan(Device, dpi):
pyinsane2.init()
try:
pyinsane2.set_scanner_opt(Device, 'resolution', [dpi])
pyinsane2.set_scanner_opt(Device, 'mode', ['Color'])
pyinsane2.maximize_scan_area(Device)
scan_session = Device.scan(multiple=False)
try:
while True:
scan_session.scan.read()
except EOFError:
pass
Image = scan_session.images[-1]
finally:
pyinsane2.exit()
return(Image)
devices = pyinsane2.get_devices()
image_a = Scan(devices[0], 75)
image_b = Scan(devices[1], 75)
a = devices[1]
b = devices[0]
a == b #Different
a.dev_type == b.dev_type
a.model == b.model
a.name == b.name #Different
a.nice_name == b.nice_name
a.options == b.options
a.reload_options == b.reload_options #Different
a.scan == b.scan #Different
a.srcs == b.srcs #Different
a.vendor == b.vendor
我在每个扫描仪内放了一张便签,一个带有“a”,另一个带有“b”,它始终使用我首先插入的扫描仪进行扫描
这是我想做的(并且手动进行) : .
这是我在 python 中尝试时得到的:
任何解决方案都会帮助我,发挥创造力!我正在考虑使用 .bat 文件来禁用特定端口并使用 Python 调用它。但我找不到制作它的方法。请记住,手动操作不是一种选择,因为需要 20 到 40 小时的连续图像采集。
谢谢!
~迭戈