Size: a a a

Maxwell's Demons

2021 February 24

jp

jon pedro in Maxwell's Demons
Вы с помощью сигналов/слотов приложение пилите?
источник

A

Al in Maxwell's Demons
jon pedro
Вы с помощью сигналов/слотов приложение пилите?
как сделано сейчас:
по сигналу readyRead останавливаю таймер, проверяю сколько байт пришло (available) , если их 128 то получаю и обрабатываю. после обработки запускаю таймер.
если их не 128, то запускаю таймер.

по прерыванию таймера чищу буфер ком порта (read all) и запускаю таймер снова
источник

TK

Timur Khasanshin in Maxwell's Demons
Al
вручную на таймере городить - это кривая залупа.

пока комп ничего не делает - окей, всё работает. но как только запускаешь параллельно какой то другой софт (да хоть видео на ютубе) наярнают сыпаться таймаут эррор
нет не кривая
источник

TK

Timur Khasanshin in Maxwell's Demons
все дело в том что uart/rs232 - не пакетизирован, это просто байтовый протокол
источник

TK

Timur Khasanshin in Maxwell's Demons
поэтому в его функционале и не должно быть такой фичи
источник

TK

Timur Khasanshin in Maxwell's Demons
а значит придется пилить самому таймаут
источник

jp

jon pedro in Maxwell's Demons
Al
как сделано сейчас:
по сигналу readyRead останавливаю таймер, проверяю сколько байт пришло (available) , если их 128 то получаю и обрабатываю. после обработки запускаю таймер.
если их не 128, то запускаю таймер.

по прерыванию таймера чищу буфер ком порта (read all) и запускаю таймер снова
Я тогда не совсем понимаю с чего это у вас всё ломается при любой нагрузке на комп. У меня просто и графики успевают отрисовываттся, и в файл записываются.
источник

TK

Timur Khasanshin in Maxwell's Demons
а я cutomHID использую
источник

A

Al in Maxwell's Demons
jon pedro
Я тогда не совсем понимаю с чего это у вас всё ломается при любой нагрузке на комп. У меня просто и графики успевают отрисовываттся, и в файл записываются.
пока сложно сказать почему именно ломается, сам понять не могу.

как будто у прерываний таймера приоритет выше, чем прерывания ком порта.
а реакция на сам ком порт походу затормаживается при нагрузке на комп
источник

TK

Timur Khasanshin in Maxwell's Demons
увы windows не RT система
источник

A

Al in Maxwell's Demons
jon pedro
Я тогда не совсем понимаю с чего это у вас всё ломается при любой нагрузке на комп. У меня просто и графики успевают отрисовываттся, и в файл записываются.
вы с каким бод рейтом, количеством байт и периодом посылок работаете успешно?
источник

RS

Roman Storozhenko in Maxwell's Demons
Timur Khasanshin
увы windows не RT система
Причём тут rt?
Драйвер uart работает аппаратно.
Другое дело что qt использует софт таймеры потому что так проще разработчикам qt
источник

RS

Roman Storozhenko in Maxwell's Demons
Хочешь хороший com port на винде?
Используй win API
источник

TK

Timur Khasanshin in Maxwell's Demons
он там будет работать всегда быстро даже если комп сильно загружен?
источник

jp

jon pedro in Maxwell's Demons
Al
вы с каким бод рейтом, количеством байт и периодом посылок работаете успешно?
Несколько мс это оооочень много времени.
По разному, начинал с 960 000, но с этой скоростью у меня стали возникать проблемы. В итоге остановился на гарантированной максимальной доступной в qserialplot. Потом перешёл на can
источник

jp

jon pedro in Maxwell's Demons
Много времени для компа
источник

НГ

Нафис Гимранов... in Maxwell's Demons
Al
пока сложно сказать почему именно ломается, сам понять не могу.

как будто у прерываний таймера приоритет выше, чем прерывания ком порта.
а реакция на сам ком порт походу затормаживается при нагрузке на комп
приоритет прерываний внешних портов ниже чем портов SATA/IDE, возможно при большом обмене данных с ЖД растут задержки
источник

НГ

Нафис Гимранов... in Maxwell's Demons
Roman Storozhenko
Хочешь хороший com port на винде?
Используй win API
даже с Win API самый минимум 10мс между посылками и отправками в ком-порт чего можно добиться от винды,
источник

A

Al in Maxwell's Demons
jon pedro
Несколько мс это оооочень много времени.
По разному, начинал с 960 000, но с этой скоростью у меня стали возникать проблемы. В итоге остановился на гарантированной максимальной доступной в qserialplot. Потом перешёл на can
у меня бодрейт 480 или 460 тыщ, кол-во байт 128 итого длительность uart посылки около 3+ мс.
затем 8-10 мс тишина, затем опять посылка.

и походу при нагрузке на комп, реакция на readyRead сдвигается на N ms.
источник

jp

jon pedro in Maxwell's Demons
Нафис Гимранов
даже с Win API самый минимум 10мс между посылками и отправками в ком-порт чего можно добиться от винды,
Хм, уверен? У меня на ком порт бегали пакеты с частотой 1 кГц, когда я разгонял юарт до мбоад
источник