Отключить определенный порт USB в Windows с Python - PullRequest
0 голосов
/ 09 октября 2018


Это мой первый пост, и я вроде как увидел, что чем конкретнее, тем лучше, поэтому я постараюсь быть предельно ясным, и спасибо заранее!

Что я хочу:
Мне нужно сканировать изображения одновременно с двух или более сканеров, эти сканеры одной и той же марки и модели, в данном случае Epson Perfection V600 , мне нужны разные временные интервалы как минимум для 40 захватов в течение 20 часов.

Мой подход
Я решил использовать Windows, у меня уже есть программа на Python, которая делает то, что я хочу, только с одним сканером или с двумя из разных моделей.Но вот куда вы, ребята, приходите:

Проблема
Windows всегда печатает с одним и тем же сканером , поскольку они принадлежат к одной марке и моделируют еевсегда использую один и тот же, и я не могу использовать два разных сканера, потому что это приведет к несопоставимости изображений.Тем не менее, когда я использую два разных сканера, у меня нет такой проблемы.Мне нужно найти способ печати с каждым сканером.Я думал, что при покупке USB-концентратора и управления им с помощью python, но, очевидно, учитывая реализацию libsub в Windows, я не смогу управлять им.В настоящее время я ищу способ отключить определенный USB-порт , чтобы программа распознавала только одно устройство, сканировала его, отключала это устройство, повторно включала другое и т. Д.


К чему у меня есть доступ:

  • Сейчас я использую Windows 10, 64 бит,ядро python 3 в версии python 3.5 в среде Conda, версия conda (4.5.11).
  • Ubuntu 16.04, 64 бита, с работающим pyinsane, в среде python 3.5 внутри conda (нетверсия conda под рукой).
  • One Epson Perfection V600.
  • Два Canon Lide200, работающие только в Windows, поскольку драйверы недоступны вUbuntu.

То, что я тоже пробовал

  • Использование Ubuntu ,
    Я подумал, что это хорошая идея, но веб-странице драйверов Epson *1061* не удается подключиться к хранилищу, содержащему остальные файлы Epson, что позволяетЗагрузив файлы только частично, я уже пытался связаться с владельцем хранилища Docky, но он не может связаться со мной.
    Ошибка:

W: Хранилище 'http://ppa.launchpad.net/docky-core/ppa/ubuntu Xenial Release' не имеет файла Release.
N:Данные из такого хранилища не могут быть аутентифицированы и поэтому потенциально опасны для использования.
N: см. Справочную страницу apt-secure (8) для получения информации о создании хранилища и конфигурации пользователя.
E: Не удалось получить http://ppa.launchpad.net/docky-core/ppa/ubuntu/dists/xenial/main/binary-amd64/Packages 404 Не найдено
E: Не удалось загрузить некоторые индексные файлы.Они были проигнорированы, или вместо них использовались старые.

  • , когда я вручную пытаюсь войти в репозиторий сайта Я обнаружил, чтоВсе ссылки на драйверы XENIAL не работают, на самом деле вся папка Xenial отсутствует.

  • Также подумал, что было бы неплохо проигнорировать это сообщение, но мне нужен Драйвер Epwoka для запуска сканеров Epson в Ubuntu, и это сама по себе проблема.Кроме того, неизвестно, будет ли Epson Perfection V600 возможным управлять библиотекой PyInsane, поскольку он помечен как непроверенный.

Использование Windows

  • Я думал о покупке USB-концентратора и с управлением, как показано в этой теме , но, очевидно, это невозможно в 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 часов непрерывного получения изображений.
Спасибо!

~ Диего

...