cmd mit QProcess öffnen Anfänger
Verfasst: 10. April 2014 10:54
Hallo Leute,
ich bi leider Anfängerin Sachen QT Programmierung und habe ein Problem bei dem ich nicht weis wie ich es lösen soll.
Wenn ichauf einen Button drücke soll sich die cmd.exe öffnen, und dann der Pfad geändert werden (später soll auch ein Rückgabewert gelesen werden).
Also Button programmiert mit folgendem Code:
Wenn ich das Programm starte passiert nichts, wenn ich auf debuggen gehe dann kommt im QT nur die Sanduhr nachdem ich auf den Butto gedrückt habe.
Wenn ich aber startdetached schreibe, dann geht die Konsole auf nur kann ich dann mit dem Befehl write nichts in die Konsole schreiben.
Könnt ihr einem Anfänger ein wenig helfen?
Di Dokumentation von QProcess hilft mir leider auch nicht weiter.
EDIT::::
So hab schonmal einiges hinbekommen, auch die Ausgabe in einem PlainTextEdit Feld
Jetzt hab ich nur noch ein Problem:
Das Programm wird aufgerufen aber er meldet das er die Datei nucleo.hex nicht findet:
Configuration:
BoardName=ST-LINK ST-LINK_ID=0 Device=STM32F401xE Port=USB ProgMode=SWD
>>> Filling PROGRAM MEMORY image in computer with Blank Value
<<< Filling PROGRAM MEMORY image in computer succeeds
>>> Loading file nucleo.hex in PROGRAM MEMORY image in computer
(API) ERROR : No such file or Directory
Wenn ich aber die Konsole manuell öffne, i das Verzeichnis wechsle und das Programm mit den gleichen Parametern aufrufe funktioniert alles (Die Datei liegt im gleichen Verzeichnis)
Hat jemand eine Ahnung was das sein könnte?
Grüße Chris
ich bi leider Anfängerin Sachen QT Programmierung und habe ein Problem bei dem ich nicht weis wie ich es lösen soll.
Wenn ichauf einen Button drücke soll sich die cmd.exe öffnen, und dann der Pfad geändert werden (später soll auch ein Rückgabewert gelesen werden).
Also Button programmiert mit folgendem Code:
Code: Alles auswählen
void MainWindow::openCMD()
{
QObject *parent;
ui->spinBox->setValue(54);
QString program = "cmd.exe";
QStringList arguments = QStringList();
arguments<<"cmd.exe -boardname=ST-LINK -Port=USB -Device=STM32F401xE -ProgMode=SWD -FilePorg=Nucleo.hex";
QProcess *p = new QProcess(this);
p->start(program);
// p->waitForFinished(3000);
p->write("p");
p->close();
}
Wenn ich aber startdetached schreibe, dann geht die Konsole auf nur kann ich dann mit dem Befehl write nichts in die Konsole schreiben.
Könnt ihr einem Anfänger ein wenig helfen?
Di Dokumentation von QProcess hilft mir leider auch nicht weiter.
EDIT::::
So hab schonmal einiges hinbekommen, auch die Ausgabe in einem PlainTextEdit Feld
Code: Alles auswählen
QProcess *p = new QProcess(this);
p->setProcessChannelMode(QProcess::MergedChannels);
p->start(program, QIODevice::ReadWrite);
// p->readAllStandardOutput();
while(p->waitForReadyRead())
output.append(p->readAll());
ui->plainTextEdit->insertPlainText(output.data());
Das Programm wird aufgerufen aber er meldet das er die Datei nucleo.hex nicht findet:
Configuration:
BoardName=ST-LINK ST-LINK_ID=0 Device=STM32F401xE Port=USB ProgMode=SWD
>>> Filling PROGRAM MEMORY image in computer with Blank Value
<<< Filling PROGRAM MEMORY image in computer succeeds
>>> Loading file nucleo.hex in PROGRAM MEMORY image in computer
(API) ERROR : No such file or Directory
Wenn ich aber die Konsole manuell öffne, i das Verzeichnis wechsle und das Programm mit den gleichen Parametern aufrufe funktioniert alles (Die Datei liegt im gleichen Verzeichnis)
Hat jemand eine Ahnung was das sein könnte?
Grüße Chris