Название: [РЕШЕНО]Не срабатывает timeout QTimer Отправлено: Larry от Март 04, 2018, 19:57 Добрый день, форумчане.
Возник вопрос. К com-порту подключено устройство, которое опрашивается через определенный промежуток времени. Необходим механизм разъединения в случае, если устройство не отвечает. При отправке сообщения запускаю таймер, а при получении ответа отключаю. Кроме того, если не было ответа необходимо продублировать запрос (количество попыток настраивается). По умолчанию количество попыток 3 и встретился с тем, что таймер два раза отрабатывает, а третий уже нет и получается, что сообщения сыпятся в порт постоянно, а ответа нет (возможно выставили некорректно скорость, либо устройство зависло). слот обработки таймаута сделал следующим образом: Код: void CModbus::timeout() Т.е. если запрос остался без ответа 3 раза, то отключаемся от порта. Иначе повторяем текущий запрос...почему таймер не отрабатывает третий раз? Где может подвисать? Спасибо. Название: Re: Не срабатывает timeout QTimer Отправлено: vic57 от Март 04, 2018, 21:37 Код: void CModbus::timeout() Название: Re: [РЕШЕНО]Не срабатывает timeout QTimer Отправлено: Larry от Март 04, 2018, 21:42 старт был при отправке сообщения. Выяснил, что такие проблемы возникали только при подключенном таймере синхронизации (когда синхронизация работала, тогда и возникал такой вариант). Переписал логику синхронизации и все стабильно заработало.
Спасибо. |