Russian Qt Forum
Ноябрь 24, 2024, 04:32
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Имитатор устройства и связь по com-порту
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Имитатор устройства и связь по com-порту (Прочитано 5358 раз)
Givoi
Гость
Имитатор устройства и связь по com-порту
«
:
Январь 18, 2012, 11:37 »
Здравствуйте.
Дали задание - написать имитатор устройства, которое общается с компьютером по com-порту.
В работе использую ноут с Debian.
Физических com портов нету.
Для создания виртуальных портов думаю использовать socat, в имитаторе QSerialDevice.
подскажите с чего вообще начать?
Записан
Bepec
Гость
Re: Имитатор устройства и связь по com-порту
«
Ответ #1 :
Январь 18, 2012, 17:09 »
С разработки протокола передачи
Чётко поставить себе цели, описать возможности, реализовать в протоколе.
А потом уже и об устройстве думать
Записан
Givoi
Гость
Re: Имитатор устройства и связь по com-порту
«
Ответ #2 :
Январь 18, 2012, 18:28 »
ммм, отличный ответ, ну собственно дело пошло =) спасибо. вот ток закрался один вопрос, если у меня есть один порт, я в него буду посылать данные одной программой, а другой программой его слушать, это будет работать?
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Имитатор устройства и связь по com-порту
«
Ответ #3 :
Январь 18, 2012, 19:42 »
1. Под линукс, если использовать самодельный голый POSIX код, да - будет.
В линуксе возможен одновременный доступ к ресурсу (порту) из нескольких приложений.
Но я б не стал так делать.
2. QSerialDevice использует порт в монопольном режиме, т.е. не даст открыть уже открытый порт (читай документацию).
Если оч надо два порта - то в линухе есть утилиты, которые делают как бы виртуальную связь между у-вами типа /dev/pts.
И в своей программе-симуляторе открывай не порты, а эти /dev/pts ...
Погугли.
Записан
ArchLinux x86_64 / Win10 64 bit
Bepec
Гость
Re: Имитатор устройства и связь по com-порту
«
Ответ #4 :
Январь 18, 2012, 20:00 »
Можно так делать, но для этого нужна сторонняя библиотека.
Та, которой я пользуюсь, является коммерческой(разработкой моей же фирмы) и соответственно никому её не дам.
А проблема монопольного доступа решается 2 потоками, которые получают указатели на порт (открытый ужо). Соответственно чтение/запись одновременная будет доступна.
Записан
Givoi
Гость
Re: Имитатор устройства и связь по com-порту
«
Ответ #5 :
Январь 20, 2012, 08:04 »
использую виртуалку, ком порт имитирую средствами виртуалки, сохранение данных отправленных в порт осуществляется в файл на хосте, при чтении из порта, должен читать из того же файла, но этого не происходит. код использую тот что в примерах qserialdevice, программа говорит что время ожидания истекло, в чем накосячил? =(
Записан
Bepec
Гость
Re: Имитатор устройства и связь по com-порту
«
Ответ #6 :
Январь 20, 2012, 08:24 »
А давайте напишем как вы это делаете, чем вы это делаете и определён ли COM порт в системе?
А так же, ради удовлетворения своего же, установите что нить типа "HDD Free Serial Monitor", и будете точно знать, что у вас уходит и что приходит.
Записан
Givoi
Гость
Re: Имитатор устройства и связь по com-порту
«
Ответ #7 :
Январь 20, 2012, 08:47 »
семерка хост, виртуалка виртуал бокс, гостевая убунту 11.10, в настройках виртуалки определил ком порт, режим порта- перенаправление в файл на хосте. код проги взят из примеров qserialdevice для записи в ком порт использую пример writer, запись проходит, в файл coхраняется, для чтения использую пример reader, который постоянно выдает timeout read data.
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Имитатор устройства и связь по com-порту
«
Ответ #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
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...