Size: a a a

2021 June 17

АТ

Андрей Тарасенко... in Qt
ну и какой там поток данных? этож КОМ, а не террабитный оптоканал
источник

m

mefest in Qt
QIODevice::readAll(), читаешь все что есть. когда приходят новые данные то эмитится readyRead
источник

v

vyacheslav@deepin:~$ in Qt
а если у меня виртуальный ком, который на самом деле террабитный оптоканал?)) лан, я уже стебусь)
источник

v

vyacheslav@deepin:~$ in Qt
Но суть я понял
источник

v

vyacheslav@deepin:~$ in Qt
думаю достаточно просто поток создать, переместить туда сериал и пусть живёт
источник

m

mefest in Qt
надо понимать что общение между потоками в Qt обычно тоже через сигнал слоты. Если поток делает полезную нагрузку а не просто эмитит сигнал когда новые данные доступны, то выносить все в отдельный поток имеет смысл
источник

АТ

Андрей Тарасенко... in Qt
не, ну я согласен что можно считывать по 8байт и применять операцию факториала через сложение, и тут и потоки не спасут. Но как показывает практика - обработка потока СОМ на порядок дешевле чем перерисовывание состояния кнопочки.
А поток (в данном случае) это только усложнение кода и внесение дополнительных ошибок и головной боли при отладке и синхронизации данных.
источник

АТ

Андрей Тарасенко... in Qt
на моей практике ни разу не потребовалось пихать что-то в поток, хотя имею минимум 30ком портов за раз в каждом из которых идёт двунаправленная работа с переупаковкой данных.
наоборот, приходилось изголяться по замедлению передачи данных чтоб компорт (на другой стороне) не захлёбывался и не начинал терять данные
источник

v

vyacheslav@deepin:~$ in Qt
так а бодами это не ограничивается?
источник

АТ

Андрей Тарасенко... in Qt
ограничевается. но не смотря на выставление одной и тойж скорости на обоих концах иногда происходила потеря данных. видимо конкретная железка уже сама не поспевала за стандартом. да и наблюдал я это только на высших скоростях 115200, если задавал 9600 - потерь небыло.
источник

v

vyacheslav@deepin:~$ in Qt
а провод длинный?
источник

v

vyacheslav@deepin:~$ in Qt
даже в стандарте прописано, что 115200 будут потери, несколько процентов
источник

SK

Stas Koynov in Qt
что за стандарт?
источник

АТ

Андрей Тарасенко... in Qt
ммм. сложно сказать, вроде около 50см. я по удалёнке с железом работаю.
потери наблюдались начиная с 10-12байта стабильно, поэтому я стал их(пакеты)  фрагментировать на 8 и меньше (если элемент пакета умещался в меньшее число) байт за раз.
источник

АТ

Андрей Тарасенко... in Qt
ну за номер сертификата соответствия не скажу. но гугль выдал это:

Для СОМ-порта стандартными являются следующие скорости: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/с.
источник

SK

Stas Koynov in Qt
у нас на сериал порте от Qt утилита сделана (делал не я), но я писал прошиву для кольцевой линии связи через 485 на нашем контроллере длина провода такая. PC —->usb-485 (200 метров) —>Controller —RS-485(1100m) —> device за час потерь нет скорость 115200-8-n-1 опрос через модбас 100 регистров (ригстры 2 байта)
источник

SK

Stas Koynov in Qt
опрос 100 регистров через 100msec
источник

АТ

Андрей Тарасенко... in Qt
именно поэтому у меня и есть один дополнительный байт КЦ
источник

v

vyacheslav@deepin:~$ in Qt
а кабель экранирован?
источник

АТ

Андрей Тарасенко... in Qt
вероятно, делали "железячники".
у меня есть только ssh
источник