Отключить определенный порт USB в Windows с Python


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

Что я хочу:
Мне нужно сканировать изображения с двух или более сканеров одновременно, эти сканеры принадлежат к одной и той же марке и модели, в этом случае 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 отсутствует).
  • Один Epson совершенство V600.
  • Два Canon Lide200, работающие только в Windows, потому что драйверы недоступны в Ubuntu.

Что я тоже пробовал

  • Используя Ubuntu,
    Я подумал, что это хорошая идея, но веб-странице драйверов Epson не удается подключиться к хранилищу, содержащему остальные файлы 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 Not Found
E: Не удалось загрузить некоторые индексные файлы. Они были проигнорированы, или вместо них использовались старые.

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

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

Использование 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

Я вставил заметку в каждый сканер, один с буквой "а", другой с буквой "b", и он всегда сканирует сканер, который я подключил первым

Это то, что я хотел бы сделать (и это работает вручную): Это то, что я пытаюсь сделать,



Вот что я получаю при попытке в Python:

Это то, что я получаю

Любое решение поможет мне, проявите творческий подход! Я думал об использовании файла.bat для отключения определенного порта и вызова его с помощью Python. Но я не смог найти способ сделать это. Имейте в виду, что делать это вручную нельзя из-за 20–40 часов непрерывного получения изображений.
Спасибо!

~ Диего

0 ответов

Другие вопросы по тегам