nixp.ru v3.0

29 мая 2017,
понедельник,
09:00:20 MSK

DevOps с компанией «Флант»
binr написал 5 октября 2005 года в 12:52 (340 просмотров) Ведет себя неопределенно; открыл 1 тему в форуме, оставил 5 комментариев на сайте.

Уже задавал этот вопрос тут:

http://www.linux.org.ru/view-message.jsp?msgid=1100774&back=group.jsp%3Fgroup%3D4066

Пока ни чего не ответили.

Debian Sarge, 2.6.8, tcgetattr, cfgetospeed не срабатывает, пишет ошибку «неприемлимый ioctl для устройства» В ядре 2.4.18 таких проблем не встречал. Подскажите пожалуйста где искать ошибку.

rgo

Я понял ты tcgetattr на /dev/tts/* пытаешься сделать? Посмотри сорцы setserial — как она это делает.

binr

:( но в 2.4.18 работало? по старой памяти из ASPLinux-а setserial конкретно глючил. Может тогда посмотреть stty?

rgo

А тут возникает вопрос, зачем тебе собственно нужен tcgetattr.

ps у меня setserial ни разу ни глючит…

binr

setserial это функция? Насколько я помню это утилита, а мне нужна функция…

rgo

помнишь правильно. утилита. написанная на C между прочим. С открытым исходным кодом. использующая ту функцию которая тебе нужна. Ещё вопросы?

binr

Конечно есть, проблема не решена. На irc debian ни чего содержательного не говорят. Буду искать и смотреть исходники.

Спасибо.

binr

stty на 2.6.8 ловко зависает, я так понимаю что надо откатываться до 2.4.18 когда всё работало. Конесно, проблема может быть во мне, но пока это не очевидно.

rgo

если ты будешь продолжать говорить загадками, то ничего другого кроме как возвращатся к 2.4.18 тебе точно не останется. Что ты хочешь получить от tcgetattr, или stty? Я понять не могу. boudrate? ’setserial -a' об этом сообщает, ядро у меня 2.6.13. с stty тоже проблем не возникало на всех 2.6.* которые у меня стояли, правда всё что мне требовалось от stty это установка количества строк и столбцов терминала для досовых приложений. Я не очень верю, что в дефолтовой установке debian может не работать stty или setserial. Может ты сам это сломал неосторожным движением? Тогда надо выяснять как ты сломал. Но я ж не телепат.

ps вот написал программку:

#include 
#include 
#include 
#include 
int main ()
{
      int fd;
      struct termios tinfo;
      fd = open ("/dev/ttyS0", O_RDWR);
      if (fd < 0) {
            perror ("open");
            return 1;
      }
      if (tcgetattr (fd, &tinfo) < 0) {
            perror ("tcgetattr");
            return 1;
      }
      close (fd);
      printf ("Ok. all operations are done.\n");
      return 0;
}

она замечательно работает.

binr

Похоже ошибка найдена в моей голове.

Но проблему stty это не отменяет.