Отключить определенный порт 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 часов непрерывного получения изображений.
Спасибо!
~ Диего