Russian Qt Forum
Ноябрь 24, 2024, 07:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Имитатор устройства и связь по com-порту  (Прочитано 5368 раз)
Givoi
Гость
« : Январь 18, 2012, 11:37 »

Здравствуйте.
Дали задание - написать имитатор устройства,  которое общается с компьютером по com-порту.
В работе использую ноут с Debian.
Физических com портов нету.
Для создания виртуальных портов думаю использовать socat,  в имитаторе QSerialDevice.
подскажите с чего вообще начать?
Записан
Bepec
Гость
« Ответ #1 : Январь 18, 2012, 17:09 »

С разработки протокола передачи Улыбающийся
Чётко поставить себе цели, описать возможности, реализовать в протоколе.
А потом уже и об устройстве думать Подмигивающий
Записан
Givoi
Гость
« Ответ #2 : Январь 18, 2012, 18:28 »

ммм, отличный ответ, ну собственно дело пошло =) спасибо. вот ток закрался один вопрос, если у меня есть один порт, я в него буду посылать данные одной программой, а другой программой его слушать, это будет работать?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Январь 18, 2012, 19:42 »

1. Под линукс, если использовать самодельный голый POSIX код, да - будет.
В линуксе возможен одновременный доступ к ресурсу (порту) из нескольких приложений.
Но я б не стал так делать.

2. QSerialDevice использует порт в монопольном режиме, т.е. не даст открыть уже открытый порт (читай документацию).

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

Погугли.
Записан

ArchLinux x86_64 / Win10 64 bit
Bepec
Гость
« Ответ #4 : Январь 18, 2012, 20:00 »

Можно так делать, но для этого нужна сторонняя библиотека.

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

А проблема монопольного доступа решается 2 потоками, которые получают указатели на порт (открытый ужо). Соответственно чтение/запись одновременная будет доступна.
Записан
Givoi
Гость
« Ответ #5 : Январь 20, 2012, 08:04 »

использую виртуалку,  ком порт имитирую средствами виртуалки, сохранение данных отправленных в порт осуществляется в файл на хосте,  при чтении из порта,  должен читать из того же файла,  но этого не происходит. код использую тот что в примерах qserialdevice,  программа говорит что время ожидания истекло,  в чем накосячил?  =(
Записан
Bepec
Гость
« Ответ #6 : Январь 20, 2012, 08:24 »

А давайте напишем как вы это делаете, чем вы это делаете и определён ли COM порт в системе?

А так же, ради удовлетворения своего же, установите что нить типа "HDD Free Serial Monitor", и будете точно знать, что у вас уходит и что приходит.
Записан
Givoi
Гость
« Ответ #7 : Январь 20, 2012, 08:47 »

семерка хост,  виртуалка виртуал бокс,  гостевая убунту 11.10, в настройках виртуалки определил ком порт,  режим порта- перенаправление в файл на хосте. код проги взят из примеров qserialdevice для записи в ком порт использую пример writer,  запись проходит, в файл coхраняется,  для чтения использую пример reader,  который постоянно выдает timeout read data.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #8 : Январь 20, 2012, 09:58 »

Цитировать
семерка хост,
Поставь на свой хост ПО для создания виртуальных портов, типа:
1. Eltima Virtual Serial Port Driver (что предпочтительнее, но нужен кряк)
2. com0com (свободное ПО, бесплатно)

И разрабатывай проект на хосте (Win7) и не мучайся с виртуалками,
потом, когда приобретешь реальные переходники USB/Serial - переедешь на Ubuntu
и проверишь на реальном железе.


ЗЫ:
Кстати, я планирую создать универсальный кросс-платформенный набор утилит на Qt для создания виртуальных портов, их трассировки и т.п.
Чтобы не было такого рода проблем в разных ОС.

Но пока дальше чем создание MainWindow я не продвинулся (оказалось, что все намного сложнее чем я думал) Строит глазки.
« Последнее редактирование: Январь 20, 2012, 10:03 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 23.