Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Работа с СОМ портом  (Прочитано 39132 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Kern
Гость
« Ответ #30 : 19-08-2004 06:20 » 

а чем же select() не нравится?

например примерно такой код:
Код:
char GetTimeOutSimvol(unsigned int sec)
{
       for(;;){
                fd_set fdsr;
                FD_ZERO(&fdsr);
                FD_SET(STDIN_FILENO,&fdsr);
                timeval tt;
                tt.tv_sec=sec;
                tt.tv_usec=0;
                int count_desc;
                if ((count_desc=select(sock+1, &fdsr, NULL, NULL , &tt)) < 0){
                        if (errno == EINTR)continue;
                        fprintf(stderr,"Select error! %d (%s)\n",errno, strerror(errno));
                        continue;
                }
                if(count_desc<0){
                         printf("Time Out has expired!\n");
                         return -1;
                }
                char Simvol;
                read(STDIN_FILENO,&Simvol,1);
                return Simvol;
         }
}
« Последнее редактирование: 30-11-2007 22:09 от Алексей1153++ » Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #31 : 19-08-2004 07:24 » 

Kern, а причем тут сокеты к СОМ порту???
Записан

А птичку нашу прошу не обижать!!!
Kern
Гость
« Ответ #32 : 19-08-2004 08:46 » 

хм.. упс..
строчку
Код:
if ((count_desc=select(sock+1, &fdsr, NULL, NULL , &tt)) < 0){ 
следует читать как
Код:
if ((count_desc=select(STDIN_FILENO+1, &fdsr, NULL, NULL , &tt)) < 0){

а сокеты не при чем - данная операция применима к любым файлам, или файловым потокам, в том числе и к stdin.

Если я правильно понял - речь идет о том, чтобы написать фнкцию getch() с таймоутом. А то что getch() читает не с клавиатуры а с ком порта особой разницы нет.
« Последнее редактирование: 30-11-2007 22:11 от Алексей1153++ » Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #33 : 19-08-2004 09:20 » 

Kern, вот теперь я понЯл - спасибки попробую....

А то меня сок - сбил с панталыку Улыбаюсь
Записан

А птичку нашу прошу не обижать!!!
Kern
Гость
« Ответ #34 : 19-08-2004 11:37 » 

эх... чего-то я глючу и глючу... Жаль
там еще есть одна опечатка... даже не знаю как закралась...
Код:
if(count_desc<0){
надо чтобы было
Код:
if(count_desc==0){ 
« Последнее редактирование: 30-11-2007 22:12 от Алексей1153++ » Записан
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines