LINUX.ORG.RU

еще раз про com порты


0

0

можно ли приостановить выполнение программы до изменения игналов ком
порта?
select(fd,&rd,NULL,&ev,NULL) не работает т.е. пока байт не придет из
кома программа дальше не выполняется, как бы не изменялось состояние
линий.
А опрашивать в нити ioctl() без задержек слишком накладно

anonymous

самый простой способ - включить в select timeout (только стоит
обратить внимание на то, что в линуксе он сделан непортабельно),
и после завершения select проверять сигналы.
я сомневаюсь, что можно повесить прерывание на изменение статуса
порта (хотя чтобы быть до конца уверенным нужно посмотреть source
драйвера).

Z0termaNN
()

Енто конечно хорошо но изменение состояния - асинхронно
поэтому с таймаутом можно пропустить изменение:(((

anonymous
()

Енто конечно хорошо но изменение состояния - асинхронно
поэтому с таймаутом можно пропустить изменение:(((

anonymous
()
Ответ на: комментарий от anonymous

слушай, я не знаю что у тебя там с сигналами на порту, но в данном
конкретном случае я все-таки разобрался бы с сигналами на принтере и
flow controlом и сделал бы signal driven I/O - появляется байт и тебе
генерится SIGIO.

Z0termaNN
()

насчет принтера не понял:(
А если на ком не приходят данные, но состояния линий меняются ~100 раз
в секунду?

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