Аватар для _SayHello
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739

Работа с ком портом

19.11.2018, 09:18. Показов 14681. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Подскажите пожалуйста, как лучше организовать такую систему:
Приложение должно отправлять раз в секунду некую команду и получать на нее ответ. Так определяется наличие связи с железкой слейвом.
Также пользователь может в любое время отправить одну или несколько специальных команд, на которые тоже надо получить ответ.
Как правильно в Qt совместить такие работы с портом?
У меня пока идея была, настроить таймер и в его слоте отправлять команду пинг и ждать какое то время ответа через метод
C++
1
waitForReadyRead
А если пользователь жмакнет на кнопку отправки специальной команды пока мы ждем ответа на пинг?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.11.2018, 09:18
Ответы с готовыми решениями:

Работа с COM портом
Подскажите хорошую книгу или статью а еще бы исходник:) реализации работы с COM портом на C на самом низком уровне, без использования...

Работа с COM портом
Кто-нибудь делал это? В скором времени понадобится реализовать проект, в котором будет требоваться чтение и запись по COM порту. Как это...

Работа с COM портом
Всем доброго времени суток! Требуется небольшая подсказка. Пишу программу, которая отправляет\принимает данные с\на COM порт. Суть....

32
 Аватар для _SayHello
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
22.11.2018, 18:02  [ТС]
Студворк — интернет-сервис помощи студентам
Avazart,
Цитата Сообщение от Avazart Посмотреть сообщение
Может все же стоит заглянуть в примеры из документации?
Код полностью взят из примеров Qt Blocking Master Example. Лишних мьютексов я туда не добавлял.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
22.11.2018, 18:05
Цитата Сообщение от Avazart Посмотреть сообщение
и начните с нуля писать код, но без мютексов
А по моему мнению, лучший аналог блокирующего watchdog-таймера в вызывающем потоке будет именно на мьютексе...
0
 Аватар для _SayHello
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
22.11.2018, 18:16  [ТС]
Вообще мне на самом деле все равно, блокирующими функциями пользоваться или сигналами. В основном окне блокирующими функциями пользоваться нельзя - зафризит окно, поэтому эта задача и уехала в другой поток.
Не блокирующие функции же никак не привязаны ни ко времени, ни к количеству пришедших байт. И надо думать как из них вытянуть правильный response если мы, например не знаем длину пакета и так далее. + все равно надо заводить таймер на таймаут, если сигнал вообще не придет. То есть проблем не меньше. Если у меня срастется в голове концепция как это все объединить , то я перепишу, пока пробую то что есть в примерах.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
22.11.2018, 18:21
Цитата Сообщение от _SayHello Посмотреть сообщение
Не блокирующие функции же никак не привязаны ни ко времени, ни к количеству пришедших байт.
Таймеры зачем?
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
22.11.2018, 18:24
Цитата Сообщение от _SayHello Посмотреть сообщение
В основном окне блокирующими функциями пользоваться нельзя
Ну я б не сказал что фризенье окна бесполнезно. А то пользователь начнёт щёлкать кнопку подсоединения/отсоединения, параллельно что-то пытаясь сделать. В результате очереди будут наполнены всяким "мусором" (в особенности собственно командами на открытие/закрытие соединения) и после подключения прибора всех их обрабатывающему потоку придётся последовательно выполнить, что не есть хорошо.
0
 Аватар для _SayHello
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
22.11.2018, 18:35  [ТС]
TRam_, вот я как раз и думаю, как бы у пользователя окно не фризило, и разгрести все что он натыкает Если обычные пинги летают туда сюда быстро, то команды вытаскивания большого блока данных на 9600 бодах будет не особо быстрым ))

Avazart,
Цитата Сообщение от _SayHello Посмотреть сообщение
+ все равно надо заводить таймер на таймаут
я понимаю, какой инструмент надо использовать.
Данная программа пишется исключительно в образовательных и развлекательных целях. Блокирующий метод это первое, что пока руки дошли опробовать.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
22.11.2018, 19:05
Цитата Сообщение от _SayHello Посмотреть сообщение
и разгрести все что он натыкает
Можно дать пользователю визуализацию очереди с возможностью очищать её вручную (по кнопке). Ну и очищать при подключении/отключении.
0
 Аватар для _SayHello
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
22.11.2018, 19:18  [ТС]
TRam_, вот я уже подумал, на длинные команды, отключать кнопки, а по приходу ответа на нее включать обратно
0
20 / 16 / 8
Регистрация: 16.07.2014
Сообщений: 151
26.11.2018, 13:22
Цитата Сообщение от Avazart Посмотреть сообщение
используйте систему сигналов/слотов.
Я ему пример своего кода выше кинул. Как раз на системе сигнал/слот. И большие пакеты в один склеивает и вообще код стабильный. Никогда не подводил меня. Зачем все эти мютексы для меня вообще не понятно. Зачем нужно было так всё усложнять?
0
 Аватар для _SayHello
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
26.11.2018, 13:32  [ТС]
razorqhex, ну в итоге у меня все тоже работает, как я и хотел. Сигнал/слот+ таймер тоже понятно как работает. Как мне больше нравится я еще не решил.
0
18 / 18 / 2
Регистрация: 24.02.2014
Сообщений: 44
26.11.2018, 14:30
Сообщение от _SayHello
Пока не могу понять, что там эти 3 секунды происходит.
Сдается мне, что система сразу не отдает ресурс для повторного использования. Линукс - так точно. Причем,это касается и компортов, и сокетов.
2
0 / 0 / 0
Регистрация: 22.02.2025
Сообщений: 46
Записей в блоге: 5
03.04.2026, 14:46
Я пробую создаю connect, но у меня пишет ошибка, что я не так делаю?
0
Заблокирован
03.04.2026, 15:17
Цитата Сообщение от Uhbif79 Посмотреть сообщение
что я не так делаю?
Как правильно задавать вопросы
Точно и детально опишите свою проблему
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.04.2026, 15:17

Работа с COM-портом QT
Всем привет. Захотелось на днях написать GUI под windows для общения с STM32F100 по COM-порту. После долгих поисков перепробовал Delphi -...

Работа с COM портом, потоки
Есть 2 файла myclass.cpp и mainwindow.cpp В первом я создал поток чтения ком порта OVERLAPPED over; COMSTAT...

Работа с COM портом RTS/DTR
Делаю прием передачу по ком порту rs-232C подключение прием передачу я сделал но вот возникает вопрос как им управлять, а точнее как мне...

QT Работа с usb COM портом. Подключение Perl
Добрый день! Возникла такая проблемма. Занимаюсь одним проектом,и там стоит задача зделать связь,между контроллером и компьютером. Ранее я...

Работа нескольких UDP сокетов с 1м портом
Здравствуйте, возникла у меня такая проблемка: есть 2+ программы, расположенные на одной машине, которые должны читать данные с одного и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Опции темы

Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru