cmd mit QProcess öffnen Anfänger

Alles rund um die Programmierung mit Qt
Antworten
chris0086
Beiträge: 1
Registriert: 10. April 2014 10:26

cmd mit QProcess öffnen Anfänger

Beitrag von chris0086 »

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:

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 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

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());
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
MichaelS
Beiträge: 240
Registriert: 27. Dezember 2005 12:49

Re: cmd mit QProcess öffnen Anfänger

Beitrag von MichaelS »

Hallo,

was spricht dagegen, den vollen Pfad der Datei zu übergeben?

Gruß Michael
Scary Hallo

Re: cmd mit QProcess öffnen Anfänger

Beitrag von Scary Hallo »

Hallo,

ich würde die Argumentenliste nicht so übergeben. Eher in folgender Form:

Code: Alles auswählen

 arguments << "cmd.exe" << "-boardname=ST-LINK" << "-Port=USB" << "-Device=STM32F401xE" << "-ProgMode=SWD" << "-FilePorg=Nucleo.hex";
Mit workingDirectory () kannst du prüfen, wo dein Prozess arbeitet und eventuell mit setWorkingDirectory() setzen.
Antworten