Форум программистов, компьютерный форум CyberForum.ru

Опрос\динамическое ожидание при работе с консолью - C++

Восстановить пароль Регистрация
 
AraxniD
0 / 0 / 0
Регистрация: 08.01.2010
Сообщений: 7
20.08.2012, 19:08     Опрос\динамическое ожидание при работе с консолью #1
Помогите решить проблемку: есть программа на си++, вывод\ввод информации через консоль(win32) + так же внутри в цикле идет сохранение потока данных через другую функцию.
Данные сохраняются в текстовой файлик, ничего особенного, но надо как-то реализовать опрос пользователя, когда остановить сохранение данных, грубо говоря выйти из цикла дальше..
Как это можно сделать? Из-за "cin<<" весь цикл встает, думал сделать опрос раз в Н минут, но тоже слишком часто вводить "Нет" не очень..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2012, 19:08     Опрос\динамическое ожидание при работе с консолью
Посмотрите здесь:

Работа с консолью C++
C++ Не является внутренней или внешней командой - ошибка не при компиляции а при работе программы
Работа с консолью C++
C++ Проблемы с консолью в Codeblocks
C++ Работа с консолью
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
20.08.2012, 19:17     Опрос\динамическое ожидание при работе с консолью #2
#многопоточность
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
20.08.2012, 19:17     Опрос\динамическое ожидание при работе с консолью #3
Цитата Сообщение от AraxniD Посмотреть сообщение
cin<<
what is this...?
если бы Вы выложили код, было бы проще советовать...
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
20.08.2012, 19:19     Опрос\динамическое ожидание при работе с консолью #4
То приложение, что вы хотите написать в консоли работать не будет. В данном случае необходимо использовать win32api, при этом создать два таймера при помощи SetTimer(...), один таймер будет в определенные моменты времени вытягивать из списка вопросы для пользователя и отображать их в консоли, а второй таймер будет проверять дан ли ответ на вопрос через заданное число секунд. Если нет, то вопрос будет отмечен в списке как неотвеченный. Другие функции программы могут тоже работать в фоновом режиме при помощи SetTimer(...), CreateThread(...).

Добавлено через 1 минуту
Действительно, вам нужен совет или программа? Если есть исходники, выкладывайте плиз.
AraxniD
0 / 0 / 0
Регистрация: 08.01.2010
Сообщений: 7
20.08.2012, 19:28  [ТС]     Опрос\динамическое ожидание при работе с консолью #5
Спасибо за ответы.
Вот основной цикл, уже после всех инициализаций и т.п.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    
        ofstream out("file.txt");
    while(1)
    {
        FT_Read(fthandle, RxBuffer, 1,  &BytesReseived);
        out<<RxBuffer[i];
        i++;
        if (i == 250)
        {
            cout<<"Выключить передачу? Y/N"<<endl;
            cin>>waitforenter;
            if (waitforenter == 'Y')
            {
                goto EXIT;
            }
            i = 0;
        }
    }
EXIT:
    out.close();
    FT_Close(fthandle);
    cout<<"Порт закрыт"<<endl;
    cin>>waitforenter;
    return 0;
Ну, как видно, сейчас я сделал абсолютно не пригодную вещь - после каждого 250 бита опрос пользователя..
С учетом того, что все это дело должно крутиться хотя бы пару часов..
А win32api к проекту под win32 нельзя подключить, да? Или это именно с консолью связано? Нужен графический интерфейс?
В принципе, я могу переехать на проект под CLR, например, если это поможет =\

p.s да "cin<<" это я.. дурак)
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
20.08.2012, 20:05     Опрос\динамическое ожидание при работе с консолью #6
нельзя изначально спросить у пользователя, сколько информации ему потребуется?
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
20.08.2012, 20:11     Опрос\динамическое ожидание при работе с консолью #7
Для создания потоков можно использовать std::thread, а для таймеров std::chrono. Они работают в консоли
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
20.08.2012, 20:29     Опрос\динамическое ожидание при работе с консолью #8
zitxbit, А можно узнать на кой нужен WinAPI в данном конкретном случае, если есть std::thread + boost?
ZaMaZaN4iK
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
20.08.2012, 23:55     Опрос\динамическое ожидание при работе с консолью #9
спррос времени у пользователя через определенное время можно организовать и с помощью функции time().Задаем переменную -счётчик1 и счётчик2, в начале программы загоняем в счётчик1 время, потом после каждого ввода информации загоняем в счётик2 значение time() - счётчик1;сравниваем с определенной величиной: если больше - спрашиваем у пользователя, меньше - ничего не делаем.

Потом значения счётчиков меняем.

Вроде должно работать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2012, 19:17     Опрос\динамическое ожидание при работе с консолью
Еще ссылки по теме:

Убрать ожидание нажатия клавиши Enter при выводе C++
Работа с консолью C++
C++ нарушение прав доступа при исполнении при работе с C# DLL C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
AraxniD
0 / 0 / 0
Регистрация: 08.01.2010
Сообщений: 7
21.08.2012, 19:17  [ТС]     Опрос\динамическое ожидание при работе с консолью #10
Цитата Сообщение от I.M. Посмотреть сообщение
Для создания потоков можно использовать std::thread, а для таймеров std::chrono. Они работают в консоли
Спасибо за наводку на std::thread, очень интересно и то, что нужно!
Правда интересно, а механизмов сканирования того, что уже написано в консоли, нет?
Ну там например, ввел бы пользователь в консоль какое-нибудь слово, а программа просто периодически сканировала бы..хм..уже написанное в консоли?
Yandex
Объявления
21.08.2012, 19:17     Опрос\динамическое ожидание при работе с консолью
Ответ Создать тему
Опции темы

Текущее время: 04:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru