Как из usb com port эмулятор для подключения тсд

Обновлено: 04.07.2024

Есть УСБ устройство. которое нужно подключить по УСБ интерфейсу и программно эмулировать комп порт. Есть варинаты?
Раньше популятрна была эта тема, при подключении телефонов. Но универсальных методов не нашел.

QUOTE (Flash @ 25 января 2010, 22:13)
Есть УСБ устройство. которое нужно подключить по УСБ интерфейсу
QUOTE
и программно эмулировать комп порт. Есть варинаты?

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

Если мне память не изменяет, то под ХР далеко не все устройства "купятся" на такую фишку. Если требуется прямое обращение к COM порту то ничего не получится.

З.Ы. поправьте если ошибаюсь

а зачем программно эмулировать что-то?? что в ЮСБ нельзя писать также как в COM?? если устройство не типовое то драйвер придёца писать однозначно вот там и сэмулируйте.

а телефоны раньше подключались к ЮСБ через PL-2303 на одном конце шнурка ЮСБ с на другом COM и комп видит его как COM порт


не все ПО умеет работать с современным оборудованием, которое через УСБ. Например 1с работает со скареном штрих кодов через КОМ порт. И дрова хороших производителей создают виртуальный ком порт.
а вот у других не таких хороших, таких дров нет. А сканер есть

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

прога + бесплатный эмулятор нуль-модемного кабеля решат вашу проблему.

Сечас вспомнил. В сфере охранной сигнализации я сталкивался с модемом, который принимал телефонные сигналы с объектового оборудования и по COM порту отправлял в программу. Вот он ни при каких "каврижках" кроме как под голым досом работать не хотел.

З.Ы. узкоспециализированное оборудование

я бы сказал криворукие програмисты

Там программа работать не хотела или сам ком порт?

добавлено в [mergetime]1264500318[/mergetime]
оборудование как работало, так и будет, ему пох какая у вас винда стоит. А вот программы надо минимум перекомпиливать, чтобы работали на новой оси.

Там пакет из 2-х программ был. Одна под досом с модема (COM порт) брала данные, потом по LPT порту перекидывала на второй комп ( ХР ), где вторая прога приводила всё это в более читаемый и приятный для оператора вид.

При подключении модема к ХР, 1-я программка его не видела.

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

ТОгда и вправду вам проще писать программу ретранслятор которая создаёт виртуальный ком порт и все данные что на него приходят-уходят слать в ЮСБ для работы с юсб есть прекрасная Разработка libUSB портированая с Unix там всё просто и примеров куча

dll правильной для 1с поделитесь?
лежит два сканера..один "правильный" дрова которого из HID устройства, делают эмуляцию COM
и "не правильный" который эмулировать не умет.
"в лоб" переписав идентификацию устройств и вручную поставив драйвер от другого сканера. заставить работать в 1с не получилось
QUOTE (Flash @ 26 января 2010, 15:50)
dll правильной для 1с поделитесь?
лежит два сканера..один "правильный" дрова которого из HID устройства, делают эмуляцию COM
и "не правильный" который эмулировать не умет.
"в лоб" переписав идентификацию устройств и вручную поставив драйвер от другого сканера. заставить работать в 1с не получилось

У меня для таких сканеров есть exe файлик. Его запускаешь и сканер работает.

Может для древник com-овских и нужны были дрова, на современных нет.
Тупо как USB клава работает.

Flash, что за модель сканера у вас?


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

Спасибо за наводку Нашел драйвер от Atoll, который умеет работать правильно. Старый, но бесплатный. новые дровишки уже платные.

В этой статье дается пошаговая инструкция о переводе сканера штрихкодов Metrologic Eclipse 5145 в режим эмуляции COM-порта. О том, что такое режим эмуляции COM-порта и зачем нужно его переводить в этот режим, подробно описывается в этой статье.

Внимание!
Согласно этой статье вы можете перенастраивать сканер штрихкодов, подключаемый в разъем USB компьютера. Если шнур вашего сканера заканчивается другим (не-USB) разъемом, то ваш сканер либо нельзя перевести в режим эмуляции COM-порта, либо он в нем уже работает.

Итак, вы приобрели сканер штрихкодов Metrologic Eclipse 5145 и хотели бы перевести его в режим эмуляции COM-порта. Для этого вам потребуется драйвер эмуляции COM-порта фирмы Honeywell (так сейчас называется фирма Metrologic) и специальные управляющие штрихкоды, напечатанные в инструкции по эксплуатации сканера.

Прежде чем переводить сканер в другой режим работы давайте проверим, в каком режиме сканер работает сейчас. Подключите сканер к компьютеру, откройте какой-нибудь текстовый редактор (Microsoft Word, программу Блокнот или любой другой - неважно) и отсканируйте какой-нибудь штрихкод. Если отсканированный штрихкод появится в окне открытого текстового редактора (скорее всего так и будет) Ваш сканер работает в режиме эмуляции клавиатуры, и для перевода его в режим эмуляции COM-порта вам нужно проделать все перечисленные в этой статье шаги. Если штрихкод в окне текстового редактора не появился, сканер скорее всего УЖЕ работает в режиме эмуляции COM-порта (либо неисправен) и вам нужно пропустить главу Перевод сканера штрих кодов в режим эмуляции COM-порта этой инструкции.

Установка драйвера эмуляции COM-порта

Перед началом работы отсоедините сканер штрихкодов от компьютера.

На этом этапе вам необходимо установить драйвер эмуляции COM-порта на свой компьютер. Для этого перейдите, пожалуйста, по этой ссылке, выберите пункт Honeywell Scanning and Mobility (HSM) USB Serial Driver, заполните минианкету, скачайте драйвер на жесткий диск своего компьютера и разархивируйте все файлы драйвера в какую-нибудь папку.

Теперь вам нужно определить, какая именно операционная система Windows установлена на вашем компьютере, 64-битная или 32-битная. Если вы знаете это и так - замечательно; если нет - щелкните дважды мышкой в иконку Мой Компьютер, выберите диск C: и посмотрите, есть ли у вас там папка по имени Program Files (x86) (именно со словом (x86) на конце). Если такая папка у вас есть, то у вас установлена 64-битная Windows, в противном случае - 32-битная.

Перейдите теперь в ту папку, куда вы разархивировали драйвер сканера и запустите программу Install_x86.bat в случае, если вы используете 32-битную Windows и Install_x64.bat в противоположном случае.

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

Из описания на сайте:
VSPE призвана помочь инженерам программного обеспечения и разработчикам создавать / производить отладку / тестирование приложений, которые используют последовательные порты. Она может создавать различные виртуальные устройства для приема / передачи данных. В отличие от обычных последовательных портов, виртуальные устройства имеют специальные возможности: например, то же устройство может быть открыто несколько раз по различным приложениям, которые могут быть полезны во многих случаях. Вы можете сделать доступными физические данные СОМ порта для нескольких приложений, расшаривать последовательный порт для локальной сети (по протоколу TCP) итд.


Эмулировать COM-порт помогают соответствующие драйверы и программы, с помощью которых создаётся виртуальный порт в системе. Для начала надо установить АТОЛ-драйвер, соответствующий типу подключаемого оборудования. Для эмуляции COM-порта предназначена программа «Virtual Null Modem». Чтобы осуществить отправку данных на COM-порт без подключения устройства можно использовать бесплатную программу «COM Port Data Emulator».

Утилиты запускают процесс создания виртуального СОМ-порта путём простого включения режима «Эмуляция» через интерфейс программы. Если же был установлен драйвер для эмуляции, то новый виртуальный COM-порт просто будет отображаться в диспетчере устройств. Таким образом можно осуществить подключение оборудования к ПК посредством эмуляции COM-порта. Подключите устройство и переведите его в режим работы по USB, следуя прилагающийся инструкции.

Чтобы проверить, верно ли подключено оборудование, зайдите в режим тестирования драйвера АТОЛ нужного устройства. В открывшемся окне интерфейса следует выбрать вкладку «Настройка свойств», затем нажать кнопку «Поиск оборудования». В параметрах поиска следует выбрать искомое устройство и подождать, пока оно отобразится в списке. Затем это окно можно закрыть и вернуться к предыдущему. Там следует нажать кнопку «Проверка связи», и если установка завершена правильно, то в строке «Результат» отобразятся параметры подключённого оборудования.

Теперь следует настроить верное отображение устройства в 1С. Для этого заходим в раздел «Подключение и настройка торгового оборудования». Там следует выбрать пункт «АТОЛ», а в пункте «Порт» указать «COM1» (если COM-портов несколько и среди них присутствуют реальные, выбираем необходимый виртуальный, который создавался с помощью эмуляции).


Бесплатное обновление для COM Port Data Emulator (начиная с версии 2.7.0 до последней версии 2.7.3 build 1108. 8 ноября 2019.)

Скачайте файл и замените файлы в папке с программой новыми файлами из архива.

Замечание! Нет необходимости скачивать это обновление, если вы скачаете полный пакет установки.

ПРОБЛЕМЫ СО СКАЧИВАНИЕМ ИЛИ ИНСТАЛЛЯЦИЕЙ?

Если Вы столкнулись с какими-либо проблемами при скачивании или инсталляции, пожалуйста, свяжитесь со службой технической поддержки AGG Software. Подробнее.

Вас могут заинтересовать:

Advanced Serial Port Monitor

Программа, которая, пригодится Вам как для наблюдения за передачей данных другими приложениями, так и непосредственно, для отправки и приема данных через последовательный порт (RS232) Вашего компьютера. Программа позволяет различными способами сохранять данные в файл и визуализировать данные на экране монитора. Она может пригодиться как начинающим, так и профессионалам. подробнее

Advanced Serial Data Logger

Advanced Serial Data Logger обрабатывает данные, полученные через RS232 порт, COM порт или через RS485 при наличии аппаратного конвертора. Программа записывает данные в файл Excel, Access, базу данных и т.п. подробнее

Advanced TCP/IP Data Logger

Advanced TCP/IP Data Logger позволяет захватывать данные, передаваемые по протоколу TCP/IP или UDP и сохранять их в файл, а также передавать в другие приложения Excel, Access или базы данных. Программа в реальном времени собирает данные от любого устройства или инструмента и может использоваться как при работе в локальной сети, так и при работе в Интернет. подробнее

Serial Printer Logger

Serial Printer Logger может заменить ваш старый матричный принтер и собирать данные в реальном времени в текстовые, двоичные лог-файлы, а также непосредственно создавать файлы документов Adobe PDF или MS Word. Эта замена позволит сэкономить ваши деньги, которые вы бы потратили на бумагу, расходные материалы и техническую поддержку устаревшего устройства. подробнее

Advanced NMEA Data Logger

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




Зачем?

Нужно это бывает когда некий специальный аппаратный комплекс, состоящий из отдельных устройств и который выполняет какую-то единый функционал, вдруг начинают модифицировать. Разумеется что можно попробовать найти комплекс оборудования по новее, но в реальной жизнь на это идут очень редко. Начинают модифицировать то что есть. Иногда вдумчиво, но чаще как получится.

Как правило «мозгами» такого комплекса является компьютер у которого 100500 выходов RS232. Из примеров могу привести место кассира в супермаркете, банкоматы и тому подобное. С первым случаем столкнулся я.


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

Разумеется что можно заменить само оборудование, но если вы посмотрите сколько стоит стационарный лазерный сканер приличной фирмы и помножите эту цену на их количество то передумаете.

Люди не посвященный в тему сразу радостно покупают пучок китайских USBtoRS232 переходников, а дальше все идет очень печально. Лучше этого не делать. Вторым вариантом является покупка специализированной платы расширения с кучей RS232. Этот вариант уже лучше и имеет право на жизнь, но тоже имеет свои недостатки. Например стоимость и проблемы с дровами если используется не Windows или не та версия. Так же не маловажным фактором является доступность в будущем, так как что-то выходит из строя и парк может расширятся в будущем. Потом оказывается что конкретная модель уже не выпускается или не постановляется в конкретную местность и т.д. В общем привязывать себя к конкретному устройству это всегда опасно, особенно если можно этого не делать.


Пробуем что-то сделать

Может показаться странным что примитивные RS232 устройства так сложно и дорого подключить по нормальному если по сути там обычно простые протоколы и примитивный физический уровень. А все потому что обычно подобные аппаратные комплексы используются в коммерческих доходных сферах и покупка оборудования по таким ценам оправдана, а само оборудование уже перешло в разряд специального. Спец оборудование = спец цена вопроса.

Однако все это не мешает попробовать собрать свой бюджетный велосипед. Бонусом получим возможность менять поведение такого своеобразного RS232 мультиплексора и полностью обойдем проблему написания USB драйверов. HID профиль поддерживается почти везде.

Однажды я прочел отличную статью автора RaJa До этого я интересовался USB, но до практики не доходило. В наличии у меня было несколько дешевых отладочных плат, китайских клонов Blue Pill на микроконтроллере Stm32f103c8t6. Сама история и идея создания этой платы очень интересная, стоит поинтересоваться.


Этот микроконтроллер отличается тем что имеет три UART и аппаратную поддержку USB. Это то что может быть нам интересно в разрезе нашей задумки, а вообще микроконтроллер на этой плате, работает на частоте 72Mhz и по характеристикам порвет любое Arduino схожего формфактора. Но самое главное преимущество это повсеместная распространенность этой платы. Я не знаю более простых и дешевых способов пощупать «железный» USB.


Добавив три дешевых преобразователя RS232toUART MAX2323 и немного «рассыпухи» можно собрать своеобразный конвертер интерфейса 3хRS232 <=> USB.

В моем случае нужно было подключить три RS232 устройства к Raspberry Pi 3. Если использовать обычные RS232 <=> USB переходники то в итоге сталкиваешься с тем что в системе куча одинаковых устройств к которым не понятно что подключено и все это дико глючит, а выглядит еще более печально.

Если вы немного капнете в сторону какие микросхемы USB to UART доступны повсеместно, то обнаружите что там полно подделок. Думаю не стоит объяснять как это все потом себя ведет с оригинальными драйверами. И никто не сможет гарантировать вам что даже брендовые переходники вдруг не закупят левую партию микросхем. Удешевление производства оно происходит повсеместно.

В итоге придумалась примерно такая простая схема коммутации ее даже можно изобразить в стиле Arduino:


Я отломал резистор который подтягивает D+ к питанию и сделал эту подтяжку управляемой с помощью транзистора. Она отвечает за опознание устройства на USB шине.

Распиновка разъемов RS232 в программе (Fritzing) где я набрасывал схему странноватая, но думаю никому не составит труда найти ее в интернете, контакты задействованы как обычно 2,3 и 5. А еще удобнее будет использовать платы конвертера UART to RS232 котором уже присутствует разъем RS232.


Low Level

Код для микроконтроллера я писал и отлаживал с помощью IDE EmBitz (если честно то я был удивлен как легко завелась эта IDE, особенно после танцев с бубном вокруг CooCox. ). За основу взял проект из статьи выше. Это первый пример который у меня заработал сразу после заливки.

Я добавил работу с тремя UART и изменил структуру HID репортов так чтобы обмен с ПК шел всегда по 64 байта с контрольной суммой (crc8).

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

Было замечено что в Linux (Raspbian) процент не успешных подключений значительно меньше чем в Win 10, возможно этот результат получился из-за моих локальных технических условий.

Общий алгоритм похож на примитивный маршрутизатор, принимая пакет по USB мы смотрим какому UART оно предназначено и пересылаем туда, в обратную сторону аналогично. Есть немного обработки самих пакетов но это относится к конкретному RS232 оборудованию которое я подключал. Это были: экран покупателя Datecs dpd-201, стационарный лазерный сканер штрихкодов Datalogic Magellan 8300 и весы Digi DS890.


На фото выше тестовый образец устройства содержит еще DC-DC шим преобразователь питания на микросхеме MP2307.

Это нужно для того чтобы питать устройство от напряжения 10-24В (входное) и иметь возможность подключить дисплей покупателя который питается от такого же напряжения. После DC-DC шим преобразователя поулчаем 3.3В для всех остальных модулей. Для этого дисплея так же установлен «телефонный» разъем вместо RS232, не хотелось перепаивать стоковый штекер.

High level

Вторая часть софта это примеры и тесты собранные в сумбурный проект на Java написанный IDE IDEA. Предполагается что работа с устройством интегрируется в софт высокого уровня используя различные обертки по работе с USB стеком в зависимости от языка на кортом этот софт пишется. Сейчас сложно найти такой ЯП чтобы под него не существовало таких оберток. Отдельно для староверов отмечу что java и usb совместимы если готовить правельно, это доказано практикой и используется в коммерческом проекте.

В процессе тестирования выяснилось что работа в Linux и Windows с USB HID несколько отличается, работа отлаживалась через две библиотеки usb4java и hid4java. Работа через последнюю используется в Linux (Raspberry Pi 3).

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

Заключение

Представленное устройство это лишь одни из примеров как довольно легко можно приобщится к процессу создания нативных USB устройств и перестать наконец использовать переходники.

Не забываем плюсовать RaJa автора статью в которых на пальцах объясняется как пощупать железный USB и сохранить желание разбираться дальше.

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