Russian Qt Forum
Ноябрь 24, 2024, 12:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблемы с двумя таймерами и Езернетом  (Прочитано 2711 раз)
billidean
Гость
« : Январь 29, 2016, 21:40 »

Добрый день всем.
Такая проблема с двумя таймерами:
-первый таймер кидает запрос по Езернету с периодом Х (например 420 мс) - он служит для контроля связи с устройством.
-второй таймер кидает запрос по Езернету на то же самое устройство с периодом Y (например 100 мс) - он ведет периодический информационный обмен с устройством.

Обработка принимаемых данных от обоих запросов производится в одном слоте.

иногда получается так, что один из таймеров "замирает", это я сужу по снифферу, т.е. один из этих обменов идет дальше, а второй перестает.
Я так понимаю, что происходит коллизия при выдаче запросов... или НепонимающийНепонимающий

В-общем, задача такая - контролировать соединение по Езернету с устройством и в это же время вести циклический обмен с ним же.

Что можете посоветовать???
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Январь 29, 2016, 21:44 »

Странный контроль. Вы получаете отзыв от устройтва каждые 100 мс, но живость его хотите дополнительно проверять раз в 400 мс.
Если вы перестали получать ответы раз в 100 мс, то через 400 мс он уже четыре раза как не ответит.  Непонимающий
Записан
billidean
Гость
« Ответ #2 : Январь 29, 2016, 22:04 »

Может быть это и не правильно, НО ока вопрос в том, что при постоянном коннекте в устройством обработка ответа от запросов из одного из таймеров пропадает.
Я понимаю, что один из запросов просто теряется, и ответ на него просто не приходит... и вся конструкция рушится...
Но пока не могу понять, как все сделать правильно.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #3 : Январь 29, 2016, 22:08 »

Часто, устройства не предполагают получение нового запроса, пока выполняется текущий. У вас возможна такая ситуация. Вы отправляете рабочий запрос (который раз в 100 мс), потом срабатывает контрольный таймер и вы отправляете контрольный запрос, а железка его просто глотает.
Записан
Bepec
Гость
« Ответ #4 : Январь 29, 2016, 22:28 »

Железяка занята может быть. Если же у вас железяка представляет полноценный пк, данный комментарий отпадает Улыбающийся
Записан
billidean
Гость
« Ответ #5 : Январь 29, 2016, 22:55 »

Железяка - некий датчик.
На счет занятости железяки - понял... может быть так и происходит...буду разбираться.
Спасибо за помощь.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 22.