Подделка последовательного порта RS232


84

Я разрабатываю проект, в котором есть несколько аппаратных датчиков, подключаемых к машине развертывания через последовательные порты RS232.

Но ... Я разрабатываю на машине без физических последовательных портов RS232, но я хотел бы создать поддельные последовательные порты, к которым я могу подключаться и выводить данные с целью имитации ввода от аппаратных датчиков.

Кто-нибудь знает способ создать поддельный последовательный порт и управлять им в Windows XP?


2
Вы пробовали виртуальные машины с установленными последовательными портами?
Рестута,

4
Я этого не пробовал. Похоже, это должен быть полный ответ, а не комментарий :)
BefittingTheorem

1
Я смог без проблем использовать com0com и последовательный эмулятор COM-порта в 64-разрядной версии Windows 7, отлично работал.
JWiley 06

для тех , кто в конечном итоге здесь я написал инструкцию для краткого com0com здесь
FOAD

Ответы:


69

Если вы разрабатываете для Windows, возможно, вы ищете проект com0com .

Он предоставляет пары виртуальных COM-портов, которые связаны через нуль-модемное соединение. Затем вы можете использовать свое любимое приложение-терминал или что угодно, чтобы отправлять данные на один COM-порт и получать от другого.

РЕДАКТИРОВАТЬ:

Как указал Томас , в проекте отсутствует подписанный драйвер, что особенно проблематично для определенных версий Windows (например, Windows 7 x64).

Есть несколько неофициальных версий com0com, которые содержат подписанный драйвер. Одна из последних версий (3.0.0.0) может быть загружена, например, отсюда .


4
Хотя com0comпроект является отличным проектом с открытым исходным кодом, поскольку он должен устанавливать драйвер устройства без цифровой подписи, некоторые системы Windows, проверяющие драйвер с цифровой подписью, не будут работать с его виртуальным последовательным портом. Просто хочу, чтобы люди знали.
Tae-Sung Shin

5
@Thomas: Поиск в сети показывает, что есть несколько неофициальных подписанных версий драйвера. Одну из последних версий (3.0.0.0) можно скачать здесь .
Фрэнк Боллак,

Большое спасибо, вы заслуживаете пива!
Pale Ale

как это на самом деле делается? каковы основы Windows?
Ночь,

@Nacht Каждый драйвер делает некоторую абстракцию, даже если к ним подключен настоящий последовательный порт. Это означает, что если вы напишете драйвер, вы заметите, что вам не нужно общаться с реальной вещью. Тогда вы можете использовать буфер перемещения по своему усмотрению. В этом виртуальном случае вместо отправки потока на реальный объект вы отправляете данные в другой «порт». Этот порт является парой с первым. Все это выглядит как зеркальное отображение потока данных. Надеюсь, теперь все ясно.
MrHIDEn

63

Я знаю, что это старый пост, но в случае, если кто-то другой столкнется с этим вопросом, один хороший вариант - эмулятор виртуального последовательного порта (VSPE) от Eterlogic. Он предоставляет API для создания виртуальных устройств компорта режима ядра, то есть разъемов, картографов, сплиттеров и т. Д. .
Тем не менее , некоторые из рекламируемых возможностей были действительно не возможности вообще .

РЕДАКТИРОВАТЬ
Гораздо лучший выбор , Элтима . Этот продукт полностью запечен. Хорошая техподдержка разработчика. Продукт сделал все, что от него требовалось. Варианты продуктов включают как настольные приложения, так и комплекты для разработки программного обеспечения с API.

Ни один из этих продуктов не является открытым или бесплатным. Однако, как указывали здесь другие сообщения, есть и другие варианты. Вот список различных серийных утилит:

com0com (текущий)
com0com - с подписанным драйвером (старая версия)
Еще одно место для com0com с подписанным драйвером (блог Пита)
Тактическое программное обеспечение
Termite
Последовательный эмулятор COM-порта
Kermit (устаревший, но все еще загружаемый) Программное обеспечение
HWVSP3
HHD (бесплатная версия)


35

Я использую com0com - с подписанным драйвером в Windows 7 x64 для имитации COM3 И COM4 как пары.

Затем я использую эмулятор COM Dataport Emulator для получения от COM4.

Затем я открываю COM3 с помощью разрабатываемого приложения (C #) и отправляю данные в COM3.

Данные, отправленные через COM3, принимаются COM4 и отображаются «Эмулятором порта данных COM», который также может отправить ответ (не автоматически).

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

Надеюсь, поможет.

Обе программы бесплатны !!!!!


1
Фантастика. Это мне помогло, это точно. Вы знаете, как заставить эмулятор данных COM-порта ждать моего ввода, а затем отправлять его обратно?
bunggo

4

Всегда есть аппаратный путь. Купите два преобразователя USB в последовательный порт и подключите их через модем NULL.

Советы от профессионалов: 1) Windows может назначать новые COM-порты адаптерам после каждого спящего режима или перезагрузки устройства. 2) Лидерами рынка микросхем для USB на последовательный порт являются Prolific и FTDI. Обе компании борются с подделками и могут быть заблокированы в будущих официальных драйверах Windows. Однако драйверы Linux отлично работают с клонами.


3
Обратите внимание, что последовательные USB-адаптеры имеют другое поведение синхронизации / группировки по сравнению с традиционными UART. Тем не менее, тестирование с одним из них - неплохая идея, если есть шанс, что он когда-нибудь будет использован. Когда они впервые становятся популярными, плохо спроектированные или реализованные протоколы иногда ломаются или замедляются до ползания при использовании с одним. Сегодня маловероятно, что что-то выйдет наружу, не попробовав USB-UART в разработке; действительно, испытание традиционного UART на ПК сейчас маловероятно.
Крис Страттон

3

Еще одна альтернатива, хотя OP не просил об этом:

Существуют переходники usb-to-serial. В зависимости от типа адаптера вам также может потребоваться нульмодемный кабель.

Они очень просты в использовании под linux, работают и под windows, если у вас установлены рабочие драйверы.

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

Часто лучше работать с реальным материалом.


Можно ли присвоить имя программному адаптеру usb-to-serial? :) Спасибо
alcor

1
screen /dev/ttyUSB0 9600или используйте, minicomесли вам нужно программное обеспечение для такого оборудования.
sjas

1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.