Доброе время суток, коллеги.
А подскажите, пожалуйста, кто знает, как в С можно реализовать неблокирующее чтение из файлового дескриптора (конкретно из /dev/ttyS[n])?
Короче, есть у меня девайс, подключающийся к COM-порту. Пишу программу, надо реализовать функцию, которая проверяет, подключён ли девайс. Я думаю себе это сделать так:
1. подать команду ТЕСТ в девайс (он должен вернуть определённое число)
2. прочитать с таймаутом... если ничего нет - значит не подключён
программка примерно выглядит так:
//открываем порт
int fd = open("/dev/ttyS1", O_RDWR | O_NOCTTY | O_NDELAY);
//устанавливаем параметры порта
.....
// даём команду "ТЕСТ"
char cmd[1];
cmd[0] = TST_CONNECTION;
write (fd, cmd, 1);
//читаем
cmd[0] = 0;
read(fd, cmd, 1);
if (cmd[0] == 0) return ERROR;
функция read блокирующая - т.е. будет ждать, пока что-нибудь не придёт (даже несмотря на флаги O_NDELAY и O_NONBLOCK почему-то :-\ )... есть, конечно функции из группы unlocked_stdio (getc_unlocked, например)... но они работают с файловыми потоками, а не с дескрипторами файлов.... а мне для установки параметров COM-порта и вообще для работы с ним нужен именно дескриптор.... да и девайсу нужно какое-то время, чтобы ответ послать, а getc_unlocked сразу проверит, что ничего нет и всё...
как быть?
заранее спасибо за ответы.
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от cvv
Ответ на:
комментарий
от lg
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от lg
Ответ на:
комментарий
от cvv
Ответ на:
комментарий
от Mishail
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Открыть сокет в эксклюзивном режиме (2012)
- Форум Serial port programming (2008)
- Форум Неблокирующий ввод/вывод без поллинга (2014)
- Форум не видит com порт (2007)
- Новости Библиотека libevent для асинхронного неблокирующего ввода/вывода (2011)
- Форум Qt Embedded работа с com-портом (2012)
- Форум Ввод-вывод (2013)
- Форум Ввод вывод (2008)
- Форум ввод/вывод какие выводы? (2011)
- Форум Си ввод/вывод (2011)