LINUX.ORG.RU

Эмуляция COM-порта.


0

1

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


Я делал заменой окрытия/настройки COM-порта в программулине на открытие/создание unix socket и вешал эмулятор на другой его конец. Алгоритмы прошивки отлаживали.

Delirium_veritas ()
Ответ на: комментарий от Eddy_Em

Эмм. Не распарсил. read/write также работает. poll/select тоже. А всяческие tc{s|g}etattr обходил либой. В зависимости от -DDEBUG включал то или иное определение функции настройки int fd_setup(). Один вариант открывал COM-порт, второй — открывал сокет. В принципе этого хватало.

Delirium_veritas ()

>си++

Юзал бы asio, тогда с методом, предложенным в первом комменте, не было бы ниакого геморроя, описанного в четвёртом

yoghurt ★★★★★ ()
Ответ на: комментарий от Delirium_veritas

И какой в этом случае смысл городить сокеты, если можно просто задать тестовые условия при помощи тех же #ifdef ?

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

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

Delirium_veritas ()
Ответ на: комментарий от yoghurt

А то, что зачем делать эмулятор, который не эмулирует по-человечески, а вместо этого в коде программы изменяется режим работы с портом? Зачем это может быть нужно? Проверить, как своя программа реагирует на те или иные полученные от порта данные можно в этом случае и без работы с портом - просто задавая эти данные явно. :)

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

>просто задавая эти данные явно

Так поведение то может быть самым разным и очень нелинейным

yoghurt ★★★★★ ()
Ответ на: комментарий от yoghurt

Да я вообще собирался на перл написать) Для эмулятора хватит.

da17 ()

> Вот думаю, как бы его сэмулировать
man socat
/PTY

Сойдёт?

AITap ★★★★★ ()

[quote]
Если я все правильно понимаю, чтение из ком порта не отличается от чтения из обычного файла, можно как-нибудь это сэмулировать?
[/quote]

Соедини TX с RX - вот и вся эмуляция.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.