![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
Waldis |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 14.3.2005 Репутация: нет Всего: нет |
Кто знает, подскажите, можно ли в линухах программно менять тайм-ауты COM-порта?
|
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 4 Всего: 317 |
ответ: конечно же да, блин... вопросик странноватый...
как бы тогда без этого можно было бы напр. модем под линуксом использовать ? как это сделать: нужно выкурить man termios и после юзать: int tcsetattr(int fd, int optional_actions, const struct termios *termios_p); удачи. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
Waldis
не конкретный вопрос, имхо. Это в винде только таймауты com-порта, а у нас (в линукс) таймауты на выполнение запроса ![]() а вариантов таймаутов - дофига. самый простой через alarm () ЗЫ может я не понял вопроса ? |
|||
|
||||
Oligarch |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 8.8.2007 Репутация: нет Всего: нет |
Используй массив с_сс структуры struct termios: struct termios options; options.c_cc[VMIN] options.c_cc[VTIME] Драйвера последовательного интерфейса UNIX предоставляют возможность специфицировать таймауты для символа и пакета. Два элемента массива c_cc используемых для указания таймаутов: VMIN и VTIME. Таймауты игнорируются в случае режима канонического ввода или когда для файла устройства установлена опция NDELAY при открытии файла open или с использованием fcntl. VMIN определяет минимальное число символов для чтения. Если VMIN установлено в 0, то значение VTIME определяет время ожидания для каждого читаемого символа. Примечательно, что это не подразумевает, что вызов read для N байтов будет ждать поступление N символов. Тайаут произойдет в случае задержки приема любого одиночного символа и вызов read вернет число непосредственно доступных символов (вплоть до числа которое вы запросили). Если VMIN не 0, то VTIME определяет время ожидания для чтения первого символа. Если первый символ прочитан в течение указанного времени, то любое чтение будет блокироваться (ждать) пока все число символов, указанное в VMIN, не будет прочитано. Таким образом, как только первый символ будет прочитан, драйвер последовательного интерфейса будет ожидать приема всего пакета символов (всего количества байтов указанного в VMIN). Если символ не будет прочитан за указанное время, то вызов read вернет 0. Этот метод позволяет вам указать последовательному интерфейсу возвращать 0 или N байтов. Однако, таймаут будет приниматься только для первого читаемого символа, таким образом, если драйвер по какой-либо причине 'потеряет' один символ из N-байтного пакета, то вызов readможет быть заблокирован ожиданием ввода дополнительного символа навсегда. VTIME определяет величину времени ожидания ввода символа в десятых долях секунды. Если VTIME установлено в 0 (по умолчанию), то чтение будет заблокировано в ожидании на неопределенное время если для порта не была установлена опция NDELAY вызовом open или fcntl. |
|||
|
||||
Helmet |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 27.2.2009 Где: Someone's hea d Репутация: нет Всего: 1 |
Oligarch, ты зачем это все написал?
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |