Підробка послідовного порту RS232


86

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

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

Хтось знає спосіб створення підробленого послідовного порту та управління ним у Windows XP?


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

4
Я цього не пробував. Звучить, що це повинна бути повна відповідь, а не коментар :)
BefittingTheorem

1
Я зміг без помилок використовувати com0com та послідовний емулятор порту Com в 64-розрядної версії Windows 7, чудово працював.
JWiley

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

Відповіді:


70

Якщо ви розробляєте для 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) можна завантажити звідси .
Frank Bollack

Велике спасибі, ти заслуговуєш пива!
Pale Ale

як це насправді робиться? які основи вікон?
Nacht

@Nacht Кожен драйвер робить певну абстракцію, навіть якщо до них існує справжній послідовний порт "connectet". Це означає, що якщо ви пишете драйвер, ви помітите, що вам не доведеться спілкуватися з реальними речами. Тоді ви можете використовувати буфер перенесення як завгодно. У цьому віртуальному випадку замість надсилання потоку до реальної речі ви надсилаєте дані на інший "порт". Цей порт є парою з першим. Все це схоже на дзеркальне відображення потоку даних. Сподіваюся, зараз це зрозуміло.
MrHIDE

64

Я знаю, що це стара публікація, але на випадок, якщо з цим запитанням трапиться хтось інший, хорошим варіантом є віртуальний емулятор послідовного порту (VSPE) від Eterlogic. Він забезпечує API для створення віртуальних пристроїв для транспортування в режимі ядра, тобто з’єднувачів, картографувачів, сплітерів тощо. .
Тим НЕ менше , деякі з рекламованих можливостей були дійсно неможливо взагалі .

EDIT
Набагато кращий вибір , Eltima . Цей продукт повністю випікається. Хороша технічна підтримка розробника. Продукт зробив усе, на що претендував. Варіанти продуктів включають як настільні програми, так і набори для розробки програмного забезпечення з API.

Жоден із цих продуктів не є відкритим або безкоштовним. Однак, як зазначають інші публікації, є й інші варіанти. Ось список різних послідовних утиліт:

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


35

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

Потім я використовую емулятор COM Dataport для отримання від COM4.

Потім я відкриваю COM3 із розробкою програми (c #) і надсилаю дані на COM3.

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

Тож за допомогою цих 2 чудових програм мені вдалося наслідувати послідовний зв’язок RS-232.

Сподіваюся, це допоможе.

Обидві програми безкоштовні !!!!!


1
Фантастично. Це мені допомогло, це точно. Чи знаєте ви, як я можу змусити емулятор даних COM-портів чекати мого введення, а потім надсилати його назад?
bunggo

4

Завжди є апаратний шлях. Придбайте два USB-послідовних перетворювача та підключіть їх через NULL-модем.

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


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

3

Інша альтернатива, хоча ОП не просила про це:

Існують адаптери usb-to-serial. Залежно від типу адаптера, вам також може знадобитися нульмодемний кабель.

Вони надзвичайно прості у використанні під Linux, працюють і під Windows, якщо у вас встановлені робочі драйвери.

Таким чином, ви можете працювати безпосередньо з датчиками, і вам не доведеться намагатися емулювати дані. Таким чином ви, можливо, навіть врятуєте від побудови анемічної системи. (Через те, що ваші введені дані не охоплюють усіх випадків, ви потрапляєте до крихкої системи.)

Часто краще працювати з реальними речами.


Чи можна мати назву програмного адаптера usb-to-serial? :) Дякую
alcor

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

1

я використовував eltima make virtual послідовний порт для моєї роботи з налагодження додатків modbus. це справді дуже хороший додаток на стадії розробки для перевірки програми послідовного порту без підключення обладнання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.