Die*_*dez 6 python windows libusb image-scanner pyinsane
这是我的第一篇文章,我已经看到越具体越好,所以我会尽量说得非常清楚,在此先感谢!
我想要什么:
我需要同时从 2 个或更多扫描仪扫描图像,这些扫描仪来自相同的品牌和型号,在这种情况下是Epson Perfection V600,我需要不同的时间间隔在一个过程中至少进行 40 次捕获20 小时。
我的方法
我决定使用 Windows,我已经有一个 Python 程序,它可以用一台扫描仪或两个来自不同型号的扫描仪来完成我想要的。但这是你们进来的地方:
问题
Windows 总是使用相同的扫描仪打印,因为它们来自相同的品牌和型号,所以它总是使用相同的扫描仪,我不能使用两个不同的扫描仪,因为这会导致图像无法比较。然而,当我使用两个不同的扫描仪时,我没有这样的问题。我需要找到一种使用每台扫描仪进行打印的方法。我想购买一个USB集线器并用python控制它,但显然在windows中实现了libsub,我将无法控制它。所以我目前正在寻找一种禁用特定 USB 端口的方法,以便程序只能识别一个设备,使用它进行扫描,禁用该设备,重新启用另一个设备,依此类推。
我可以访问的内容:
我也尝试过
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 库控制,因为它被标记为未经测试。
使用 Windows
我想购买一个 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
Run Code Online (Sandbox Code Playgroud)
我在每个扫描仪内放了一张便签,一个带有“a”,另一个带有“b”,并且它始终使用我首先插入的扫描仪进行扫描
这就是我想做的(并且手动进行) :
.
这是我在 python 中尝试时得到的:

任何解决方案都会帮助我,发挥创意!我正在考虑使用 .bat 文件来禁用特定端口并使用 Python 调用它。但我找不到办法做到这一点。请记住,手动操作不是一种选择,因为需要 20 到 40 小时的连续图像采集。
谢谢!
~迭戈