crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> связь между терминалом и gui программой
ht1515
  опции профиля:
сообщение 31.1.2014, 18:00
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 29
Регистрация: 14.4.2012
Пользователь №: 3324

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет!
Есть консольная программа - терминал. Там вводятся команды, выполняются и результат сразу же печатается в программе( н-р командная строка в винде ).
Я хочу ее связать с gui программой написанной на куте. Никакой сессии, общей памяти консольная программа не дает. Она подразумевает наличие оператора ПК, который тыкать будет команды.
Можно ли каким-нибудь хитрым способом передавать консольной проге команды, чтобы она их выполняла и потом получать ответ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
ht1515
  опции профиля:
сообщение 31.1.2014, 20:46
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 29
Регистрация: 14.4.2012
Пользователь №: 3324

Спасибо сказали: 0 раз(а)




Репутация:   0  



ммм... спасибо. Посмотрю.

Я прокомментирую ,вы поправьте если что.

Цитата
QStringList args;
args << "split";
args << "-w";
args << "-O" << "always";
args << "-n" << "%04d";
args << "-t" << mFilePrefix +"%n";
args << "-d" << mWorkDir;
args << disk()->audioFileName();
//qDebug() << args;


формирование входных параметров консольной программы. Необходимы при запуске программы.


Цитата
QString shntool = settings->value(Settings::Prog_Shntool).toString();

Видимо путь до программы.

Цитата
mProcess = new QProcess();
mProcess->setReadChannel(QProcess::StandardError);

создание объекта процесса и установка ??? канала на чтение ошибок?

Цитата
mProcess->start(shntool, args);
mProcess->waitForStarted();


Запуск процесса( консольной программы) и ожидание ее готовности к работе.

Цитата
sendCueData();

Отправка каких-то данных. Пока не углубляюсь куда и каких данных.
В этой функции mProcess->write(" INDEX 01 00:00:00\n"); --- Видимо что-то пишется в консоль программы(cin, stdin)

Цитата
mProcess->closeWriteChannel();

закрыли процесс записи в консольку. Это имитация нажатия кнопки enter?

Цитата
parseOut();

Производим чтение результата выполнения команды. По сути чтение с консоли и парсинг.

Цитата
mProcess->waitForFinished(-1);

блокировка потока пока процесс консольной программы не будет завершет.

Цитата
QProcess *proc = mProcess;
mProcess = 0;
delete proc;

garbage collector

Цитата
if (OutFormat::currentFormat()->createCue())
{
CueCreator cue(disk());
cue.setHasPregapFile(mPreGapExists);
if (!cue.write())
error(disk()->track(0), cue.errorString());
}

Какая-то работа с файлом.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2024, 15:08