|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
ReadyRead будит поток с задержкой?16.02.2018, 10:20. Показов 4068. Ответов 54
Метки нет (Все метки)
Работаем с COM-портами... есть линия на которой висит 6 клиентов и один запросчик... запросчик опрашивает клиентов по очереди, а они ему отвечают... идет запрос, если в течении 100мс ответ не получен, то отправляется следующий запрос...
работа с COM-портом вынесена в отдельный не GUI поток, как у клиента, так и у сервера... про отладке программы в логе запросчика обнаружена следующая ситуация: запросчик отправляет запрос, ждет ответа 100мс, его нет и он отправляет следующий запрос (вроде все логично)... НО!!! в логе ответчика четко видно, что после получения запроса от ответил практически мгновенно (намного быстрее 100мс + сами сообщения по линии не большие)... по факту получаем следующее - был запрос, ответчик ответил, но поток запросчика не проснулся по сигналу readyRead (по которому я и читаю пришедшие данные), а проснулся по таймеру в 100мс... прикрепил кусок лога, с отображением проблемы.... есть какие-то варианты, как это устранить???
0
|
|
| 16.02.2018, 10:20 | |
|
Ответы с готовыми решениями:
54
БУДИТ РАБОТАТЬ БП? QUdpSocket readyRead QSerialPort и readyRead |
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
||
| 17.02.2018, 09:03 [ТС] | ||
|
Avazart, опять же, я не детскую программу для себя пишу))) каждый класс важен, и он четко выполняет свою, необходимую функцию.
0
|
||
|
|
|
| 17.02.2018, 09:10 | |
|
JIawliet, не надо ломаться, как молодая девушка на вписке. Наш ответ будет не лучше, чем твой вопрос. Не хочешь выкладывать проект на гитхаб - твоё право, но, блин, хотя бы параметры соединения, операционную систему и оборудование опиши, ты физический com-порт используешь или ch340, к примеру?
0
|
|
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|||
| 17.02.2018, 09:20 [ТС] | |||
|
Добавлено через 2 минуты Windows 7; FTDI; BaudRate=115200 DataBits =8 Parity =N StopBits =1
0
|
|||
|
Заблокирован
|
||
| 17.02.2018, 09:34 | ||
|
0
|
||
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
| 17.02.2018, 10:21 [ТС] | |
|
Слева (блокнот) у нас лог запросчика, справа (тоже блокнот) лог ответчика, сверху - информация из AccessPort
Смотрим на 8:32:07.034.... видим: запрос, мгновенный ответ... НО!!! запросчик его получает с запозданием, поэтому шлет следующий запрос... вот такие пироги....
0
|
|
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
| 17.02.2018, 10:22 [ТС] | |
|
PC.exe - запросчик
ImitDiag.exe - ответчик
0
|
|
|
Заблокирован
|
|||
| 17.02.2018, 10:37 | |||
|
Добавлено через 5 минут ![]() Видишь, твой запросчик ждёт 100мс и не дожидается... Но фактический, ответ приходит, только позже... Значит что нужно сделать? Правильно! Ждать не 100мс, а дольше и это число должно быть определено эмпирическим путём с учётом работы всех! железок, а не одной
0
|
|||
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
| 17.02.2018, 10:43 [ТС] | |
|
Digital_Cry, да можно поставить хоть час ждать))) и тогда он считает данные когда-то... через 100мс, 200мс или через пол часа.... вопрос не в этом... вопрос стоит в том ПОЧЕМУ при мгновенном ответе (и фактической записи данных в порт со стороны ответчика) чтение со стороны запросчика не происходит сразу!?!? при чем это случается не на постоянной основе, а раз в несколько тысяч сообщений... если б программа сбоила, она б сбоила регулярно-постоянно... а так - даже не знаю... на помойку USBtoCOM и все работает отлично
0
|
|
|
Заблокирован
|
||
| 17.02.2018, 10:50 | ||
|
Так же ты тратишь время на формирование команды ответа...
0
|
||
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
||
| 17.02.2018, 10:53 [ТС] | ||
|
Digital_Cry, как ты можешь видеть - сами сообщение небольшие, и за 100мс вполне можно его доставить и считать)
Добавлено через 1 минуту
0
|
||
|
Заблокирован
|
|||
| 17.02.2018, 11:09 | |||
|
1. Увеличивай таймаут 2. Или меняй шнур USBtoCOM на более качественный Добавлено через 52 секунды
0
|
|||
|
370 / 226 / 53
Регистрация: 18.10.2017
Сообщений: 2,418
|
|
| 17.02.2018, 12:44 | |
|
Мы использовали конвертер интерфейсов moxa - сделайте поиск по Moxa Uport 11,
с ним никаких проблем не было.
0
|
|
|
|
||
| 17.02.2018, 14:24 | ||
|
Вот интересно зачем потребовалось обворачивать логически завершенный класс QSerialPort? Если Вам лень придумать простой пример демонстрирующий проблему, ничем не могу помочь.
0
|
||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 17.02.2018, 16:30 | ||
. Паузы нужны больше.
0
|
||
|
Заблокирован
|
|
| 17.02.2018, 18:11 | |
|
0
|
|
| 17.02.2018, 18:11 | |
|
Будит ли нормально работать? Не работает QTcpSocket::readyRead Баг QAudioInput + readyRead QAbstractSocket::readyRead и winsockets Notification из сервиса не будит устройство Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|