ilyazh
@ilyazh
Инженер-программист

Как реализовать запись и чтение COM порта?

Здравствуйте. Есть устройство, которым надо управлять с ПК. Управление осуществляется с помощью команд пересылаемых по COM-порту по RS232. Устройство позволяет регулировать значения нескольких параметров. А также по команде может вернуть текущее значение. GUI реализую на Qt. Как сделать обработку слайдеров и записать новое значение в устройство - с этим проблем нет. Обрабатываю слот valueChanged и записываю это значение по RS.

Кроме этого, хочу реализовать, чтоб программа последовательно спрашивала все параметры устройства циклично, тем самым показывая на мониторе самые актуальные значения, а заодно и проверяя тем самым наличие соединения с устройством. Каждое окно в программе описано классом с функциями setParameter и getParameter - соответственно, установить новое значение и считать.

Как реализовать циклический опрос параметров, а также запись новых значений при изменении значения ползунка? Я правильно понимаю, что надо использовать потоки (thread)? Как их лучше использовать? С такой задачей сталкиваюсь впервые, опыта нет. Посоветуйте как лучше реализовать.
  • Вопрос задан
  • 1028 просмотров
Пригласить эксперта
Ответы на вопрос 2
Zifix
@Zifix Куратор тега Qt
Barbatum
Ну проще всего сделать таймер, который будет запускать опрос параметров через определенный интервал.
Ответ написан
когда-то для подобного делал следующее:

есть структура данных, которая представляет собой параметры устройства;

есть класс, который хранит два экземпляра структур с параметрами: в первом экземпляре -- данные, прочитанные с утсройства. во втором -- данные, которые выставил пользователь.

Дальше, по таймеру или через QThread, класс выполняет итерации, состоящие из:
1. опросить устройство
2. отправить желаемую конфигурацию на устройство.

в моем случае параметров было не очень много (около 7) и чтение/запись всех параметров выполнялось одной строкой. Работало довольно шустро, задержки не заметны.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы