LINUX.ORG.RU

QSerialPort

 ,


0

1

Кто то тестировал QSerialPort? он может одновременно принимать и передавать? Не переполниться ли буфер пока идет выдача в порт?

Да, он может одновременно и принимать и передавать (RS-232, RS-422). Буфер не переполняется, ведь есть аппаратный буфер (FIFO), плюс в драйвере (или ОС?) есть существенных размеров буфер на несколько килобайт - так что не пропустишь ничего, я вообще в начале работы с портом вычитываю в пустоту всякий предыдущий шлак.

Касательно «переполнится буфер» - а сколько планируется выдавать в порт? Секунду? Минуту? Если несколько секунд - вообще не парься.

Хотя, быть может, это зависит всё от железа, но мне пока обратная ситуация не попадалась.

I-Love-Microsoft ★★★★★
()

он может одновременно принимать и передавать?

Да.

Не переполниться ли буфер пока идет выдача в порт?

Какой буфер?

Если речь о FIFO драйвера, то данные туда пишутся из внутреннего буфера QSerialPort частями по мере получения от ОС сигнала доступности буфера FIFO. Максимальный единоразово передаваемый чанк равен 32768 байтам, т.о. если драйвер не может это обработать - то это проблема драйвера.

т.е. если ты сделал serial.write(100500), то оно по очереди передастся частями по 32768 байт.

Если речь о внутреннем буфере QSerialPort, то он по умолчанию неограничен, и если будешь добавлять туда данные быстрее, чем они реально передаются, то со временем приложение выжрет всю раму.

kuzulis ★★
()
Последнее исправление: kuzulis (всего исправлений: 4)
Ответ на: комментарий от kuzulis

А если грубо говоря мне передают огромный файл, смогу ли я отправить «отмена» в процессе приема (и на оборот если передаю, смогу ли получить «отмена»)?

С получением еще могу предположить что из-за низкой скорости порта будет свободная «милисекунда». А вот передача, если не резать в ручную вешает поток полностью, теоретически...

(просто сейчас нет под рукой 2х портов...)

LinuxDebian ★★★★
() автор топика
Последнее исправление: LinuxDebian (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

а сколько планируется выдавать в порт

По разному, я просто хочу понять смогу ли я заменить полностью «родные» порты... Например худший случай: выдача файла и возможность прерывания этого процесса с удаленного терминала...

LinuxDebian ★★★★
() автор топика
Ответ на: комментарий от LinuxDebian

Почему бы не использовать устоявшиеся протоколы для этого? zmodem например? А так да, заменить можно, будет нормально всё.

I-Love-Microsoft ★★★★★
()

1. Может.

2. Контролируй количество переданных байт и/или количество байт в буфере.

aiqu6Ait ★★★★
()
Ответ на: комментарий от LinuxDebian

QSerialPort работает полностью асинхронно и двунаправленно, и ничего особо не нагружает. Как и что передавать зависит от тебя и твоего протокола обмена (как тут уже писали).

kuzulis ★★
()
Последнее исправление: kuzulis (всего исправлений: 1)

Всем спасибо за информацию!

LinuxDebian ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.