URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6462
[ Назад ]

Исходное сообщение
"Внеочередная передача данных в com-порт"

Отправлено yuriam , 15-Май-07 14:43 
Здравствуйте! Помогите решить проблему. В ком-порт передаётся пакет данных. Во время его передачи может возникнуть необходимость срочно отправить другой пакет. Есть ли какая-нибудь возможность приостановить уже идущую передачу, отправить срочную информацмю, а потом вернуться к прерванной передаче?

Содержание

Сообщения в этом обсуждении
"Внеочередная передача данных в com-порт"
Отправлено devcoder , 15-Май-07 15:49 
man 3 termios
/TCOFLUSH

"Внеочередная передача данных в com-порт"
Отправлено yuriam , 16-Май-07 13:55 
>man 3 termios
>/TCOFLUSH

Насколько я понимаю, так можно прервать текущую передачу, очистив буферы. Но мне надо после передачи срочного сообщения вернуться к прерванной передаче с того места, где она была остановлена. А если использовать /TCOFLUSH придётся передавать всё сначала. Может как-нибудь можно узнать сколько байт уже передано?


"Внеочередная передача данных в com-порт"
Отправлено Iceman , 16-Май-07 18:01 
>>man 3 termios
>>/TCOFLUSH
>
>Насколько я понимаю, так можно прервать текущую передачу, очистив буферы. Но мне
>надо после передачи срочного сообщения вернуться к прерванной передаче с того
>места, где она была остановлена. А если использовать /TCOFLUSH придётся передавать
>всё сначала. Может как-нибудь можно узнать сколько байт уже передано?

К сожалению, скорее всего, нет. Как вариант, наверно можно попробовать отправлять пакеты небольшими порциями такими, чтобы задержка на отправку одной порции была не существенна. И самому высчитывать, сколько уже успели переслать до того, как пришел запрос на передачу срочного пакета.
Или у вас такая задача, что в таком случае задержка даже в один байт будет критична?


"Внеочередная передача данных в com-порт"
Отправлено devcoder , 16-Май-07 18:05 
для таких вещей обычно протокол пакетной передачи придумывают