Название: Имитатор устройства и связь по com-порту Отправлено: Givoi от Январь 18, 2012, 11:37 Здравствуйте.
Дали задание - написать имитатор устройства, которое общается с компьютером по com-порту. В работе использую ноут с Debian. Физических com портов нету. Для создания виртуальных портов думаю использовать socat, в имитаторе QSerialDevice. подскажите с чего вообще начать? Название: Re: Имитатор устройства и связь по com-порту Отправлено: Bepec от Январь 18, 2012, 17:09 С разработки протокола передачи :)
Чётко поставить себе цели, описать возможности, реализовать в протоколе. А потом уже и об устройстве думать ;) Название: Re: Имитатор устройства и связь по com-порту Отправлено: Givoi от Январь 18, 2012, 18:28 ммм, отличный ответ, ну собственно дело пошло =) спасибо. вот ток закрался один вопрос, если у меня есть один порт, я в него буду посылать данные одной программой, а другой программой его слушать, это будет работать?
Название: Re: Имитатор устройства и связь по com-порту Отправлено: kuzulis от Январь 18, 2012, 19:42 1. Под линукс, если использовать самодельный голый POSIX код, да - будет.
В линуксе возможен одновременный доступ к ресурсу (порту) из нескольких приложений. Но я б не стал так делать. 2. QSerialDevice использует порт в монопольном режиме, т.е. не даст открыть уже открытый порт (читай документацию). Если оч надо два порта - то в линухе есть утилиты, которые делают как бы виртуальную связь между у-вами типа /dev/pts. И в своей программе-симуляторе открывай не порты, а эти /dev/pts ... Погугли. Название: Re: Имитатор устройства и связь по com-порту Отправлено: Bepec от Январь 18, 2012, 20:00 Можно так делать, но для этого нужна сторонняя библиотека.
Та, которой я пользуюсь, является коммерческой(разработкой моей же фирмы) и соответственно никому её не дам. А проблема монопольного доступа решается 2 потоками, которые получают указатели на порт (открытый ужо). Соответственно чтение/запись одновременная будет доступна. Название: Re: Имитатор устройства и связь по com-порту Отправлено: Givoi от Январь 20, 2012, 08:04 использую виртуалку, ком порт имитирую средствами виртуалки, сохранение данных отправленных в порт осуществляется в файл на хосте, при чтении из порта, должен читать из того же файла, но этого не происходит. код использую тот что в примерах qserialdevice, программа говорит что время ожидания истекло, в чем накосячил? =(
Название: Re: Имитатор устройства и связь по com-порту Отправлено: Bepec от Январь 20, 2012, 08:24 А давайте напишем как вы это делаете, чем вы это делаете и определён ли COM порт в системе?
А так же, ради удовлетворения своего же, установите что нить типа "HDD Free Serial Monitor", и будете точно знать, что у вас уходит и что приходит. Название: Re: Имитатор устройства и связь по com-порту Отправлено: Givoi от Январь 20, 2012, 08:47 семерка хост, виртуалка виртуал бокс, гостевая убунту 11.10, в настройках виртуалки определил ком порт, режим порта- перенаправление в файл на хосте. код проги взят из примеров qserialdevice для записи в ком порт использую пример writer, запись проходит, в файл coхраняется, для чтения использую пример reader, который постоянно выдает timeout read data.
Название: Re: Имитатор устройства и связь по com-порту Отправлено: kuzulis от Январь 20, 2012, 09:58 Цитировать семерка хост, Поставь на свой хост ПО для создания виртуальных портов, типа:1. Eltima Virtual Serial Port Driver (что предпочтительнее, но нужен кряк) 2. com0com (свободное ПО, бесплатно) И разрабатывай проект на хосте (Win7) и не мучайся с виртуалками, потом, когда приобретешь реальные переходники USB/Serial - переедешь на Ubuntu и проверишь на реальном железе. ЗЫ: Кстати, я планирую создать универсальный кросс-платформенный набор утилит (https://gitorious.org/qt-serial-port-monitor-tools/qt-serial-port-monitor-tools) на Qt для создания виртуальных портов, их трассировки и т.п. Чтобы не было такого рода проблем в разных ОС. Но пока дальше чем создание MainWindow я не продвинулся (оказалось, что все намного сложнее чем я думал) ::). |