Перейти к содержанию
    

eCos не блокируемое чтение serial порт

Камень at91sam7x256. Поставил на него eCos. Сконфигурировал usart0 средствами eCos, не могу найти где выставить таймаут на приём при неблокируемом чтении. Подскажите как это сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Камень 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);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это работает только, если есть поддержка posix termios, но у меня не получается сконфигурировать eCos с этой поддержкой. Если я включаю posix, eCos не собирается и выдаёт ошибку, что pkgconf/posix.h: Нет такого файла или каталога. В кодах eCos его нет, где он должен быть я не знаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Камень at91sam7x256. Поставил на него eCos. Сконфигурировал usart0 средствами eCos, не могу найти где выставить таймаут на приём при неблокируемом чтении. Подскажите как это сделать?

Если у вас не блокирующее чтение, то что должно происходить по тайм-ауту? А как примеры использования механизмов можно посмотреть в тестах,- благо их в eCos полно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Камень at91sam7x256. Поставил на него eCos. Сконфигурировал usart0 средствами eCos, не могу найти где выставить таймаут на приём при неблокируемом чтении. Подскажите как это сделать?

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

 

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

 

Только не уверен, что termios поможет. По моему он вызывает, то же самый raw serial.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какую функцию для открытия порта нужно использовать при работе через termios: cyg_io_loop или open?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какую функцию для открытия порта нужно использовать при работе через termios: cyg_io_loop или open?

В общем случае используется cyg_io_lookup().

Но если добавить пакет CYGPKG_IO_FILEIO (слой совместимости с posix file io), то можно использовать fopen().

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...