使用python

时间:2018-10-09 10:56:40

标签: python windows libusb image-scanner pyinsane


这是我的第一篇文章,并且我已经看到越具体越好,所以我会尽量保持清晰,并预先感谢!

我想要的是
我需要同时扫描2台或更多扫描仪的图像,这些扫描仪来自相同的品牌和型号,在这种情况下 Epson Perfection V600 ,我需要不同的时间间隔以进行至少40次捕获一个20小时的过程。

我的方法
我决定使用Windows,我已经有了Python程序,仅使用一个扫描仪,或者使用两个来自不同型号的扫描仪就可以实现我想要的功能。但这是你们来的地方:

问题
Windows始终使用相同的扫描仪进行打印,由于它们来自相同的品牌和型号,因此始终使用相同的扫描仪,并且我不能使用两个不同的扫描仪,因为这将导致图像无法比较。但是,当我使用两个不同的扫描仪时,我没有这样的问题。我需要找到一种使用每台扫描仪进行打印的方法。我本来想购买USB集线器并用python控制它,但是显然在Windows中实现了 libsub 的实现,我将无法控制它。因此,我目前正在寻找一种方法来禁用特定的USB端口,因此该程序将只能识别一个设备,对其进行扫描,禁用该设备,重新启用另一个设备,依此类推。


我可以访问的内容:

  • 现在我在Conda环境中的python 3.5版本(conda版本(4.5.11))中使用Windows 10、64位,python内核3。
  • Ubuntu 16.04,64位,在pydaane中工作,在conda内的python 3.5环境中(手头没有conda版本)。
  • 一个 Epson perfection V600。
  • 两个 Canon Lide200,仅在Windows中工作,因为驱动程序在Ubuntu中不可用。

我也尝试过的

  • 使用Ubuntu
    我认为这是个好主意,但是Epson drivers webpage无法连接到包含其余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未找到
  E:某些索引文件下载失败。它们已被忽略,或改用旧的。

  • 当我手动尝试输入site's repository时,我发现 到XENIAL驱动程序的所有链接都断开了,实际上是整个Xenial 文件夹丢失。

  • 然后也认为忽略此消息是个好主意,但我 需要 Epwoka驱动程序在Ubuntu中运行Epson扫描仪, 整个问题本身。除此之外,不知道爱普生是否 Perfection V600将可以由 PyInsane lib,因为被标记为未经测试。

使用Windows

  • 我本来打算购买USB集线器并按in this thread所示进行控制,但显然在Windows中是不可能的。

  • 我已经安装了libsub,usb.util,libusb1,USB(用于核心功能)和usb1,但是我不知道(我认为这是不可能的)来禁用和重新启用特定的USB端口跟他们。

  • 无法禁用驱动程序,因为这意味着所有USB 都将无法与扫描仪连接。

  • 设备管理器无济于事,因为无法告知哪个设备是哪个设备。

  • 无法更改扫描仪的名称(是的,打印机可以使用特定名称),但扫描仪不能更改。

  • 无法购买其他扫描仪,我对Epson感到困惑。


我的扫描代码

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”,并且始终使用我首先插入的扫描仪进行扫描。

这是我想做的(并且手动完成):**This is what I'm trying to do**



这是我在python中尝试时得到的:

This is what I get

任何解决方案都可以帮助我,发挥创造力!我在考虑使用.bat文件禁用特定端口,并使用Python调用它。但是我找不到方法。请记住,手动进行操作不是一种选择,因为需要20到40个小时的连续图像采集。
谢谢!

〜迭戈

0 个答案:

没有答案