Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: eCos не блокируемое чтение serial порт
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
grishkin
Камень at91sam7x256. Поставил на него eCos. Сконфигурировал usart0 средствами eCos, не могу найти где выставить таймаут на приём при неблокируемом чтении. Подскажите как это сделать?
Kirill Frolov
Цитата(grishkin @ Feb 27 2008, 17:15) *
Камень at91sam7x256. Поставил на него eCos. Сконфигурировал usart0 средствами eCos, не могу найти где выставить таймаут на приём при неблокируемом чтении. Подскажите как это сделать?


На счёт ecos не уверен, но в общем случае так:

Код
struct termios ts;
        tcgetattr(FILENO, &ts);
        cfmakeraw(&ts);
        ts.c_cc[VMIN]=0, ts.c_cc[VTIME]=TIMEOUT; /* ! */
        tcsetattr(FILENO, TCSANOW, &ts);
grishkin
Это работает только, если есть поддержка posix termios, но у меня не получается сконфигурировать eCos с этой поддержкой. Если я включаю posix, eCos не собирается и выдаёт ошибку, что pkgconf/posix.h: Нет такого файла или каталога. В кодах eCos его нет, где он должен быть я не знаю.
v_shamaev
Цитата(grishkin @ Feb 27 2008, 17:15) *
Камень at91sam7x256. Поставил на него eCos. Сконфигурировал usart0 средствами eCos, не могу найти где выставить таймаут на приём при неблокируемом чтении. Подскажите как это сделать?

Если у вас не блокирующее чтение, то что должно происходить по тайм-ауту? А как примеры использования механизмов можно посмотреть в тестах,- благо их в eCos полно.
axle
Цитата(grishkin @ Feb 27 2008, 20:15) *
Камень at91sam7x256. Поставил на него eCos. Сконфигурировал usart0 средствами eCos, не могу найти где выставить таймаут на приём при неблокируемом чтении. Подскажите как это сделать?

А у raw serial driver в eCos нельзя выставить таймауты. Вызов может быть либо блокирующим либо нет. И все.

Posix termios вы неправильно подключаете. То что касается termios находится в io/serial, а заголовочный файл подключается через #include <termios.h>. Пакет posix для termios подключать не надо, достаточно isoinfra.

Только не уверен, что termios поможет. По моему он вызывает, то же самый raw serial.
grishkin
Какую функцию для открытия порта нужно использовать при работе через termios: cyg_io_loop или open?
axle
Цитата(grishkin @ Mar 1 2008, 14:19) *
Какую функцию для открытия порта нужно использовать при работе через termios: cyg_io_loop или open?

В общем случае используется cyg_io_lookup().
Но если добавить пакет CYGPKG_IO_FILEIO (слой совместимости с posix file io), то можно использовать fopen().
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.