Как пробросить usb на com порт

Обновлено: 06.07.2024

У меня есть программное обеспечение, которое может печатать только на принтере на COMx, принтер с USB-портом и компьютер с USB-портом, но без последовательных портов, поэтому часто предлагаемый физический адаптер Serial-to-USB не является решением. Я ищу программное обеспечение, которое обманывает Windows 7 в сопоставлении виртуального COM-порта с физическим USB-портом. Я уверен, что если программное обеспечение, которое я использую, отправляет свой поток биты к порту USB, что принтер будет работать просто отлично. Как я могу обмануть программного обеспечения в том, что она печать на Сомхбыл, когда это на самом деле печать на USBx?

поиск в Интернете появляются только драйверы для определенного аппаратного адаптера последовательного порта USB, но это не то, что я ищу, поскольку у меня нет этого оборудования. Я нашел форум Microsoft, где они предложили изменить ярлык USB-порта в Диспетчере устройств, но мы никогда не находили ничего подобного тому, что они описали; возможно, это возможно с другим регулятором USB чем мы имеем.

мы используем это решение в компании.

драйверы виртуального COM-порта (VCP) вызывают дополнительный COM порт доступный к ПК. Прикладное обеспечение может доступ к USB-устройству таким же образом, как и к стандартному последовательный порт.

здесь руководство по установке.

есть простой способ сделать это с помощью стандартных команд Windows. Ссылка ли Харрисона показывает эту команду, но вот краткое описание. Начните, сделав принтер общим (в свойствах принтера - > вкладка доступ).

Теперь запустите командную строку и введите:

здесь pc_name - это имя общего компьютера, и printer_share_name - это имя вы дали принтер при настройке доля.

С тех пор все, что вы отправляете на COM1 будет перенаправлено на принтер.

однако есть одно условие-и оно применяется независимо от того, какой метод вы используете для получения данных на принтер, аппаратное или программное обеспечение:

поскольку ваша программа знает только о COM1, я предполагаю, что она будет отправлять обычный текст на принтер. Многие USB-принтеры не понимают простой текст и просто игнорируют его. Принтеры, которые делают это, называются хост-принтеры, где графический движок Windows преобразует страницу в точки на бумаге, вместо того, чтобы позволить принтеру сделать преобразование. Они главным образом принтеры низкой цены, специально inkjets но также некоторые лазеры. Принтеры, которые понимают текст, должны поддерживать язык PCL5. PCL6 принтеров, как правило, также поддерживает PCL5, PCL3, но принтеры не.

Если вы говорите мне вашу модель принтера, то я могу проверить какой язык он поддерживает.

Когда человек много лет рыл бункер и запасал там продукты, он должен испытывать глубокое моральное удовлетворение, если бункер понадобился. Он будет довольный заявлять: «А я говори-и-и-ил!» То же касается и того, кто делал запасы продуктов в кладовой, когда все закупались в магазинах только на сегодня. А вот с нашим комплексом для удалённой работы Redd как-то и не хочется злорадствовать. Он проектировался для удалёнки в мирное время. И использовался задолго до первых новостей из Китая.

Давно я про него ничего не писал. Другие проекты отвлекают, да и интерес, судя по рейтингу последней из опубликованных статей, уже упал. Сил на подготовку статьи отнимают много, и это имеет смысл делать только если оно нужно достаточному числу читателей.

Но так как сейчас удалёнка у всех на устах, возникло желание поделиться одной наработкой, которая может кому-то помочь. Это не наша разработка, я проводил исследования в рамках работы над сервисом удаленной работы с отладочными платами All-Hardware. Вот их результаты сейчас и опишу. Проект USB/IP известен многим. Но он давно свёрнут авторами. Самые свежие драйверы были под WIN7. Сегодня я опишу, где скачать вариант для WIN10, и покажу, как я его проверял. Кроме того, разработчики современного аналога уверяют, что у них сделан не только Windows-клиент, но и Windows-сервер (правда, в этом режиме я тестирование не вёл: задача того не требовала). Но кому-то это тоже может оказаться полезным.




Введение

Сначала краткий рассказ, что такое USB/IP. Это комплекс программ, которые позволяют пробросить USB-устройство через сеть. Само устройство подключено к серверу. Клиент располагается на другой машине. При этом на клиентской машине имеется приложение, совершенно не рассчитанное на работу с сетью. Оно хочет настоящее USB-устройство. И оно получает информацию, что это устройство подключено. На это устройство встаёт штатный драйвер. В общем, клиент считает, что он работает с локальным USB-устройством.

Кто-то так пробрасывает ключи защиты. Мы же проверяли возможность удалённого доступа к JTAG-адаптеру.

Проект USB/IP активно развивался до 2013 года. Затем Windows-ветка остановилась. В целом, был выпущен даже двоичный подписанный драйвер. Но он был под Windows 7. Linux-ветка же продолжила развитие, и этот сервис оказался встроенным в саму операционную систему. По крайней мере, в сборку Debian он точно встроен. Причём для Linux имеется и клиент, и сервер, а для Windows исходно был сделан только клиент. Сервер под Windows сделан не был.

Существует очень хорошая статья на Хабре, которую можно использовать и как справочник по работе с данным сервисом, и как отзыв о работе с ним.

Вариант под актуальную версию Windows

Но как бы ни была хороша Windows 7, а она уже мертва. В рамках работ над All-Hardware мы рассматривали разные варианты решения одной из проблем, и надо было просто проверить ряд альтернатив по принципу «подойдёт — не подойдёт». Тратить много человеко-часов на проверку было невозможно. А переделка драйвера под Windows 10 могла затянуть в себя. Поэтому был проведён поиск в сети, который вывел на проект usbip-win. На момент его обнаружения свежий вариант был датирован 23 февраля 2020 года, то есть проект живой. Он может быть собран и под WIN7, и под WIN10. К тому же, в отличие от оригинального проекта, может быть собран не только Windows-клиент, но и Windows-сервер.

Я проверил, проект прекрасно собирается и устанавливается, поэтому дальнейшая работа велась с ним. В файле readme есть ссылка на готовый двоичный код для тех, кто не хочет самостоятельно производить сборку.

Грустная часть проверки: серверная часть

Сначала я расскажу, как проводилась проверка в рамках нашего проекта. Там всё кончилось не очень хорошо. Проверяли адаптер ST-LINK, установленный в корпус комплекса Redd, благо я уже отмечал, что в комплексе используется ОС Linux сборки Debian, а эта сборка содержит встроенный сервис USB/IP.

Согласно статье, устанавливаем сервис:


Дальше в статье подробно рассказано, как автоматизировать процесс загрузки сервиса. Как я разбираюсь в Линуксе, я уже многократно писал. Плохо разбираюсь. У меня нет привычки с умным лицом цитировать чужие тексты, слабо понимая суть. Поэтому я ещё раз напомню ссылку на замечательную статью, где всё рассказано, а сам покажу, что делал я при каждом старте ОС (благо всё было нужно только для проверки):


Назначение первых двух из вышеприведённых заклинаний мне неизвестно, но без них не создаются какие-то каталоги, а без этих каталогов потом не будет экспорта USB-порта. Каталоги создаются только до перезапуска системы. Так что создавать их надо каждый раз. Третья строка — с нею всё понятней, она запускает сервис.

Теперь смотрим, как зовут устройство:


Получается, что нам нужно устройство и busid, равным 1-5.4.1.3.


Всё, сервер готов к работе.

Грустная часть проверки: клиентская часть

В Windows устанавливаем драйвер (делаем это только один раз, дальше он будет всегда установлен). Для этого запускаем от имени администратора файл usbip.exe с аргументом install:

usbip.exe install

Теперь смотрим, доступно ли нам устройство:


Убеждаемся, что оно присутствует в списке. Ну, и подключаем его:


В менеджере устройств появляется новое USB-устройство, Keil его прекрасно видит…

Но на этом всё приятное кончается. Небольшая программа заливается во флэшку около минуты. Попытки шагать по строкам идут от 5 до 20 секунд на каждую строку. Это неприемлемо. Во время паузы в обе стороны идёт трафик примерно 50 килобит в секунду. Долго и вдумчиво идёт.

Честно говоря, ограничение по времени привело к тому, что я только предполагаю, почему всё было так плохо. Подозреваю, что там по сети бегает JTAG-трафик. А он бегает небольшими пакетами в обе стороны, отсюда и проблемы. Так было завершено исследование с результатом: «Для проекта не подходит».

Более весёлая часть: подготовка

Чтобы не тратить на сервер целую PC, для проверки, я сделал этакий комплекс Yelloww (чисто по цвету пластика, из которого сделан корпус):


Роль сервера выполняет Raspberry Pi с установленной ОС Raspbian (это тот же Debian, а значит, там имеется требуемый сервер). Одна из «голубых пилюль» выступает в роли адаптера CMSIS DAP, вторая — в роли отлаживаемого устройства.

Точно так же ставим и настраиваем сервис. Разве что здесь список устройств, допустимых к экспорту, намного скромнее:


Понятно, что здесь экспортируем и импортируем устройство busid=1-1.4.

И вот тут конкретно с CMSIS DAP у меня периодически возникает небольшая проблемка. В менеджере устройств я вижу такую неприятность:


Напомню, что статья пишется по принципу «Лучше неплохая, но сегодня, чем идеальная, но завтра». Проблемы удалённой работы возникают прямо сейчас. Надеюсь, в обозримом будущем они уже будут не актуальны. А пока актуальны — показываю, как я обхожу данную проблему вручную. Сначала я отключаю устройство:


Затем сразу же включаю:


И оно начинает работать без проблем. В Keil меняем отладчик на CMSIS DAP:



При работе по локальной сети всё просто летает. Но понятно, что локальная сеть никому не интересна. Я попробовал пробросить порт устройства у себя дома, а затем удалённо зайти на машину на работе и потрассировать «прошивку» оттуда. Связь у моего домашнего провайдера весьма и весьма тормозная, особенно — от меня наружу. Прошивается контроллер примерно втрое медленнее, чем при прямом подключении к USB. Трассировка… Ну около секунды на строку, точно не больше. В общем, терпимо. С хорошими провайдерами, надеюсь, будет лучше.

Заключение

Проект usbip-win является современной заменой для проекта USB/IP. Он живёт и развивается. При этом он предоставляет для ОС Windows не только функцию клиента, но и функцию сервера. Совместимость с Linux-версией сохранена.

Устойчивость работы удалённого USB-устройства неожиданно поразила. Я был уверен, что возникнут таймауты. Возможно, где-то они и возникнут, но для JTAG-адаптеров не было замечено ни одного сбоя. К сожалению, не все USB-устройства могут быть проброшены через сеть по причине низкого быстродействия получившейся системы. Но в случае с JTAG-адаптерами можно рассмотреть альтернативные вещи. В частности, CMSIS-DAP вместо ST-LINK.

Оба рассмотренных проекта (usbip-win и CMSIS-DAP) могут быть скачаны с GitHub в виде исходных кодов.

Если это поможет кому-то организовать удалённый доступ к оборудованию, я буду рад. Использование Raspberry Pi позволит бросить оборудование в произвольных местах.

Продолжение. Посмотреть начало - Космос и ходиболтайки
Вот уже есть первые вопросы по использованию COM портов преобразованых из USB соединения. Это радует. И не ругайте меня слишком строго за то что не всё описываю детально. Ведь многие то, о чём я пишу, знают хорошо. Ну, ближе к делу. В любом магазине можно купить преобразователи USB - COM. Они могут быть на один COM порт, на два, на четыре, восемь и т.д. Ограничения в скорости работы при обслуживании многопортового преобразователя вряд ли наступит. Особенно если у вас современный скоростной USB2. Конструктивно они тоже разные, одни выполнены прямо в разъёме USB, некоторые с проводами, а также другие комбинации. Я, например, не люблю, когда ноутбук весь в разъёмах выглядит как ощетинившийся ёжик, поэтому выбираю разъём с длинным проводом и все "прячу" за ноутбук. Ближе к стенке :-)

Изначально, пока мы не подключим этот девайс в разъём, в "Диспетчере Устройств" его нет. Но пусть вас это не вводит в заблуждение. Откройте "Мой компьютер-Свойста-Оборудование-Диспетчер устройств" после чего вставьте ваш преобразователь в USB разъём. Компьютер тут же покажет вам, что система обнаружила USB Serial Port (COM1) Этих портов может быть несколько, например у меня три: два на обслуживание моего КВ логгера, один на VHF. ВЫбираете нужный, Свойства и в разделе Port Setting скорость порта, Data Bits (8) длительность стопового бита (1) и способ управления потоком Flow Control. Из перевода английского названия становиться понятным, что это способ обнаружить "переполнение" буфера приёмного устройства (в случае когда оно медленное). Для современных компьютеров и периферийных устройств это уже излишняя предосторожность. Но мало ли. Всегда лучше иметь возможность выбора.
На самом деле я порекомендую решать задачу с конца. при возможности определить параметры оконечного устройства и в каких диапазонах оно позволяет изменять настройки. В нашем случае, например, оконечное устройство не может обслуживать более чем COM4 и скорость не выше чем, например 9600. Тогда мы должны выставить в настройках преобразователя USB-COM скорость 9600 и назначить этому порту идентификатор COM4.
Делается это так. В меню свойства USB Serial Port (COM(X)) нажимаем кнопочку Advanced, то бишь "продвинутые" настройки. Ставим галочку Serial Enumerator, после чего в выпадающем окне COM Port Number выбираем нужный нам номер порта. Потом ОК-ОК-ОК. Должно работать.
P.S. Поступил комментарий от Евгения R8MM, мне кажется по делу. Он предлагает использовать дополнительные установки для того, чтобы интерфейс не "дёргал" трансивер в момент включения-выключения или, не дай бог, зависания компьютера. Для этого Евгений рекомендует поставить галочку Disable Modem Сontrol At Startup. То есть все предустановки виртуального порта будут переданы с USB в режиме отключенных действий (изменения напряжений) на коннекторе COM
Продолжение следует МКС. BBS и APRS

You have no rights to post comments Недостаточно прав для комментирования

Школа радиста

Урок третий+. Учимся разбирать электрические схемы.

Так как тема довольно таки обширная и теоретического материала много, его сокращение будет лежать на плечах учителя, проводящего занятия. Нужно учитывать так же усвояемость материала и затягивать данную тему сильно не стоит. Может даже имеет смысль этот материал разбирать с перерывами на другие темы ну или например по определнным дням недели.

В подборе материала я решил не "изобретать велосипед" и воспользоваться готовыми материалами от сайта "Практическая электроника".

Как создавать материалы в JCE редакторе

Урок второй. Электричество - подробнее

В наше повседневной жизни мы часто сталкиваемся с таким понятием как «электрический ток». Что же это такое и всегда ли люди знали о его существовании?

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

Подробное изучение электрического тока можно отнести к периоду конца девятнадцатого века, но первые электрические явления люди наблюдали ещё в пятом веке до нашей эры. Они замечали, что потёртый мехом или шерстью кусок янтаря притягивает к себе лёгкие тела, например, пылинки. Древние греки даже научились использовать это явление – для удаления пыли с дорогих одежд. Ещё они заметили, что, если сухие волосы расчесать янтарным гребнем, они поднимаются, отталкиваясь друг от друга.

Перечень знаний и умений на ECC Report 089 CEPT (ENTRY LEVEL)

Тематический перечень для экзаменационных вопросов для присвоения категории

согласно положениям рекомендации ECC Report 089 CEPT (ENTRY LEVEL)

1. Практические рабочие аспекты

1.1. Знакомство с управлением передатчика или трансивера

1.1.1. Включение/выключение питания, переключатель диапазонов, настройка и индикация частоты, громкость, уровень мощности и дисплей, усиление звукового сигнала с микрофона.

1.2. Работа на коротких волнах

1.2.1. Настройка в режиме SSB с верхней и нижней боковой полосой,

1.2.2. Вызов корреспондента, общий вызов,

1.2.3. Способность проведения радиосвязи в приемлемом формате, рапорта, обмен информации об имени оператора, информации о станции. Демонстрация использования аппаратуры

Как мы будем учить

Урок первый. Электричество.

Начнём с простого. Батарейка. Это "законсервированное" электричество. Оно находится внутри и по команде (замыканию выключателя) может делать какую-то работу: светить, вращать моторчик ручного вентилятора, когда жарко, обеспечивать вас звуком от работающего радиоприёмника на пляже. Пока контакты не замкнуты, электричество есть, но работу не делает. Спит. Это называется напряжение. Или потенциал. Типа может делать, но пока не делает. Напряжение всегда подают по ДВУМ проводам: плюс и минус. Вообще-то бывает еще и переменное напряжение, но о нём позже.

VirtualBox: Как прокинуть в виртуальную машину USB устройство

Данная статья предназначена специально для тех, кто хочет "прокинуть" напрямую в виртуальную машину под управлением VirtualBox USB устройство но не знает как. Этим устройством может быть что угодно - принтер, подключенный по USB, флешка, какой-либо USB токен (Рутокен, eToken) и т. д.

Во многих дистрибутивах Linux, для проброса USB устройств требуется дополнительная установка VirtualBox Extension Pack

И так, что нужно для этого:

  1. Включаем виртуальную машину и ждем окончания её загрузки.
  2. В верхнем меню VirtualBox находим пункт "Устройства", и нажимаем на него. Там находим пункт "USB", и тоже нажимаем на него.
  3. В раскрывшемся списке устройств находим нужное и нажимаем на него. После этого оно будет проброшено прямо в виртуальную машину.


При "пробросе" какого-либо USB устройства в виртуальную машину, оно перестает быть видимым в настоящей системе. Возможности заставить работать USB устройство одновременно в двух системах нет!

Однако, после перезагрузки USB устройство снова нужно будет пробрасывать в виртуальную машину, что может показаться утомительным. Для того, чтобы при каждом включении виртуальной машину устройство автоматом пробрасывалось, нужно проделать следующие действия:

  1. Открываем главное окно программы VirtualBox, и нажимаем правой кнопкой на нужной виртуальной машине. В появившемся меню выбираем пункт "Свойства".

    В свойствах переходим на вкладку под названием "USB".
  2. Если ваше устройство уже вставлено в компьютер, и нужно настроить его автоматический проброс, то нужно нажать на иконку с зеленым плюсом, которая находится в правой части окна. Там, в выпадающем списке нужно выбрать нужное USB устройство.
  3. Выбранное устройство появится в списке "Фильтр устройств USB", откуда его можно будет в любой момент либо удалить, либо выключить (просто нажав галочку). Теперь, для того, чтобы внесенные изменения вступили в силу, необходимо добавленное ранее USB устройство переподключить к компьютеру - для этого подойдет банальное физическое переподключение. Как только вы повторно подключите устройство к компьютеру, оно будет автоматически проброшено в виртуальную среду.
Была ли эта статья Вам полезна?
Что в статье не так? Пожалуйста, помогите нам её улучшить!

Комментарии к статье (21)

Нет описания случая когда USB устройство не отображается в списке. Например, принтер

Есть переходник usb-rs232. На основной ОС (WINDOWS 10) установлены дравйвера и устройство работает нормально. Но необходимо чтобы перезодник работал на виртуальном windows 2000. Как заставить windows 2000 видеть переходник. Драйвера туда отдельно ставить и как настроить COM порты.

Помимо проброса USB, в VirtualBox есть встроенная функция проброса COM портов. Поскольку с подобной задачей я не сталкивался, да и под рукой нет никаких устройств, на которых можно было бы это проверить, могу только посоветовать поискать информацию о пробросе COM в виртуальную машину - мне кажется это будет более правильно, нежели пробрасывать сам USB переходник.

Извините не знал, что устанавливать Extension Pack нужно без установленной гостевой машине. Установил VirtualBox Extension Pack версия соответствует номеру версии VirtualBox. При подключении USB флешки пишет "Не удалось подсоединить устройство". Причём в Основной системе флешка пропадает.

Сергей. Пробовал устанавливать VirtualBox Extension Pack, но в настройках VirtualBox нет пункта Плагины. Есть пункты: Общие, Система, Дисплей, Носители, Аудио, Сеть, COMпорты, USB, Общие папки, Интерфейс пользователя. Как установить?

Искать надо в настройках программы.

Здравствуте! Никак не могу увидеть сканер в виртуалке. Основная ОС win7 x64 гостевая winXP SP3 сканер HP ScanJet 2200C. После манипуляций описанных Вами появляется окно с текстом Не удалость установить драйвер для этого устройства. Причём это относится и к попытке пробросить USB флеш. На вирт.машине не устанавливал драйвер для сканера.

Судя по тому, что даже флешка у Вас не прокидывается, проблема не с драйверами, а с чем-то другим.

Проверьте, что на стороне виртуальной машины установлены дополнения гостевой системы той же версии, что и сама VirtualBox - возможно Вы выполняли обновление VB, а дополнения гостевой системы остались старые.

Так же, возможно, Вам нужно поставить VirtualBox Extension Pack той же версии, что и VirtualBox.

Плскажите, что может быть не так.
ОС Rosa 8.2
VitrualBox 6.1.6
Установлена Win7
Пакет расширения установлен.
Включено USB2.0

Но USB устройств не видит. Их просто нет в списке, хотя они подключены и из основной ОС они видны.

Возможно Вам нужно поставить VirtualBox Extension Pack той же версии, что и VirtualBox.

Например, в этой теме официального форума данного дистрибутива, человек пишет, что хоть у него и стоял VirtualBox Extension Pack, но удаление и повторная установка решила его проблему.

А возможно как-либо подключить сканер в виртуалку (где установлена WinXP), если он выше WinXP не работает (не поддерживается), при том что это проделывается в Ubuntu? В фильтрах usb сканера нет, только видно в терминале через lsusb что устройство в наличии, но драйверов нет и он не работает под убунту, тем более под 64 бит.
В общем ситуация когда основная система не имеет на устройство драйвера.

Если не ошибаюсь, то возможность прокидывать устройство в ВМ без наличия драйверов хоста у VirtualBox есть. Для этого нужно прописать корректные параметры для вашего сканера в фильтре.

Почему при подключении сканера, USB постоянно начинает переподключаться пока не выключешь VB. Основная ОС - Win10 (х64), виртуалка - ХР (х32). Патчи установленны. И там и там устройство видно, только в десятке неизвестное, в хрюшке определяется но не подключается. Пробовал экспериментировать в настройках с USB 2.0 и 1.1 - без результата. Так же пробовал подключать сканер уже после запуска ВМ и перед. Перед - определяет, но невозможно подключить в VB, а если после - начинает переподключаться, как вроде конфликт ОС, друг у друга его выхватывают и в итоге ни тот ни тот не успевает определить оборудование и это не прекращается пока не выключу VB, только после этого десятка определяет его как неизвестное. Как его пробросить в VB?

В "фильтрах устройств USB" у вас что?

Стоит галочка "Включить контроллер USB", чек на "Контроллер USB 2.0", в фильтре устройств сканер Mustek 1200 UB Plus определяется как "Ultima Electronics Corp. Artec Ultima 2000 (GT6801 based)/Lifetec LT9385/ScanMagic 1200 UB Plus Scanner [0100]", в свойствах которого есть ID поставщика - 05d8, ID продукта - 4002, Ревизия - 0100, в Удаленный стоит "нет", а в остальном пусто. На нетбуке с Windows 7 x32 устройство работает нормально, а на ПК с WIN10 x64 ни в какую.
Старый принтер ML-1520 пробрасывается без проблем, печатает.

У меня были мысли, что у вас возможно как-то ошибочно настроен фильтр в VB, но судя по всему там у вас все нормально. Пробовали создать новую ВМ и попробовать пробросить устройство туда? Увы, больше мыслей у меня не возникает про то, как можно решить данную ситуацию.

Пробовал создавать заново, пересоздавать, пробовал менял образы windows xp. Даже образ windows 7 , который установлен на ноутбуке, так же не прокидывает этот сканер в VB. А на нетбуке с этой виндой все ок. Сканирует. Какой-то конфликт драйверов. Ну не может это быть связано с тем что хостовая винда х64, а в VB х86

Кажется нашел в чем проблема. Забыл что лет 5 назад уже пытался подружить эту винду и сканер и по ошибке подсунул не тот драйвер (то же семейство с теми же ID). После очистки реестра от неправильных драйверов все заработало.

У меня та же самая ситуация, с тем же самым сканером. У вас в итоге получилось подружить виртуалку с ним? Можете сбросить мне правильные драйвера? Спасибо.

Читайте также: