Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: sergek от Октябрь 30, 2018, 00:31



Название: [РЕШЕНО] Работа с QSerialPort по RS-232
Отправлено: sergek от Октябрь 30, 2018, 00:31
Коллеги, добрый день.
Есть прибор с интерфейсом RS-232, подключен к компьютеру c Windows 7 через переходник USB/RS-232. Обмен с прибором осуществляется через COM1 символьными фреймами с использованием QSerialPort в асинхронном режиме. Проблема в том, что почему-то ответы прибора в слот, подключенный к сигналу QSerialPort::readyRead, не поступают.
При этом ответы формируются, их можно принять, подключившись к этому же порту с помощью Putty и нажав в терминале Enter (конечно, предварительно отключив программу от com-порта).

Может возникнуть сомнение в правильности программы, но она прекрасно работает по com-порту c эмулятором прибора по шине RS-485 (через переходники USB/RS-485). Впрочем, могу показать и сам тестовый проект, если нужны какие-то детали.
К сожаленинию, на моем компьютере нет разъемов RS-232 (завтра поищу), чтобы поставить более чистый эксперимент. Я первый раз работаю с RS-232, поэтому и вопрос - есть ли какие-нибудь особенности в обмене по этой шине?


Название: Re: Работа с QSerialPort по RS-232
Отправлено: kuzulis от Октябрь 30, 2018, 10:08
[режим телепата] Если исп. версия Qt 5.10.x то там был баг. Нужно исп. или 5.11.х или 5.9.х. [/режим телепата]


Название: Re: Работа с QSerialPort по RS-232
Отправлено: qate от Октябрь 30, 2018, 10:46
Некоторые пользователи сообщали о сбоях в работе через переходник USB/RS-232 на W10, при этом на W7 работает Ок
Каких то особенностей с usb переходником или без - нет
Еще порт переходника может "прыгать", если программа открыла порт, и в это время переходник вынуть/вставть - ОС назначит новый свободный порт


Название: Re: Работа с QSerialPort по RS-232
Отправлено: sergek от Октябрь 30, 2018, 11:02
Спасибо за информацию.
Насчет 5.10 - учту, в целевой системе (Raspbian) у меня как раз такая. Но на виндах у меня 5.11.1 (в профиле указано)))


Название: Re: Работа с QSerialPort по RS-232
Отправлено: kuzulis от Октябрь 30, 2018, 12:20
Цитировать
целевой системе (Raspbian)

Баг был только в Windows


Название: Re: Работа с QSerialPort по RS-232
Отправлено: sergek от Октябрь 30, 2018, 13:42
Это хорошо.
Пробую разные варианты обмена с прибором:
- запрос отправляю в программе через QSerialPort, ответ принимаю в терминале Putty;
- запрос отправляю через терминал Putty, ответ принимаю в программе через QSerialPort.
Т.е. в программе запись в порт и асинхронное чтение из порта работают по отдельности ???
Все извилины заплел, нифига не врубаюсь, где накосячил... Может, глянете мельком (ресурсы в архив не включил, проигнорируйте)?


Название: Re: Работа с QSerialPort по RS-232
Отправлено: kuzulis от Октябрь 30, 2018, 14:04
Цитировать
- запрос отправляю в программе через QSerialPort, ответ принимаю в терминале Putty;
- запрос отправляю через терминал Putty, ответ принимаю в программе через QSerialPort.

А как так получается? QSerialPort открывает у-во в монопольном режиме, поэтому ну никак Putty не сможет открыть то-же самое у-во.

ЗЫ: Не хочу смотреть код, нет времени разбираться. Это твоя работа, а не моя.



Название: Re: Работа с QSerialPort по RS-232
Отправлено: sergek от Октябрь 30, 2018, 14:24
А как так получается? QSerialPort открывает у-во в монопольном режиме, поэтому ну никак Putty не сможет открыть то-же самое у-во.
Естественно, по очереди.


Название: Re: Работа с QSerialPort по RS-232
Отправлено: sergek от Октябрь 31, 2018, 01:08
Нашел косяк - в настройках порта QSerialPort вместо 8N1 нужно было устанавливать 7N1. Туда полез в последнюю очередь, т.к. в putty стояло 8N1 и все работало((


Название: Re: [РЕШЕНО] Работа с QSerialPort по RS-232
Отправлено: kuzulis от Октябрь 31, 2018, 08:36
Какую то дичь говоришь. Сначала разберись, какие настройки нужны по документации на девайс.


Название: Re: [РЕШЕНО] Работа с QSerialPort по RS-232
Отправлено: sergek от Октябрь 31, 2018, 09:25
Нет в документации этих настроек))


Название: Re: [РЕШЕНО] Работа с QSerialPort по RS-232
Отправлено: sergek от Ноябрь 07, 2018, 14:06
Истины ради решил указать настоящую причину того, что прибор меня игнорировал. Ее я нашел на следующий день, экспериментируя с Терминалом из состава примеров Qt.
Правильные настройки у прибора, все же, обычные 8-N-1, а отвечать он стал так, как положено, после того, как в конец запроса я дописал символ возврата каретки '\r'. Является ли это особенностью прибора, я не выяснять не стал. Скоро у меня появится еще один прибор с символьным доморощенным протоколом, посмотрю еще и там.