|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
ReadyRead будит поток с задержкой?16.02.2018, 10:20. Показов 3920. Ответов 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,403
|
|
| 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 | |
|
Помогаю со студенческими работами здесь
55
Будит ли нормально работать? Не работает QTcpSocket::readyRead Баг QAudioInput + readyRead QAbstractSocket::readyRead и winsockets Notification из сервиса не будит устройство Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|