0

thisによると、プログラム内からsystem() ( QProcess ) 関数を使用して gpio プログラムを呼び出しています。

できます。しかし、アプリを 2 回実行する必要があることに気付きました。実際には、2 回目でしか機能しません。ここで指摘されているように、gpio の呼び出しは別のプロセスで行う必要があるようです。

QProcess::setupChildProcess()でこの問題にアプローチする必要がありますか?

setupChildProcess を上書きする QProcess を拡張し、アプリのコンストラクターで SandboxProcess をインスタンス化しました。残念ながら、これはうまくいきませんでした。

class SandboxProcess : public QProcess
{
 protected:
     void setupChildProcess();
};
void SandboxProcess::setupChildProcess()
{
    QString program = "/usr/local/bin/gpio";
    QStringList arguments;
    arguments << "export" << QString::number(4) << "out";
    start(program, arguments);
}
4

1 に答える 1

0

QProcess::setupChildProcess()メインアプリのプロセスの後に独自のプロセスが開始されるため、役に立たないと思います。そのため、エクスポート コマンドが実行されなかったように、メイン アプリは引き続き失敗します。

この時点で、次の 2 つのオプションが表示されます。

  1. を作成するにはManagerApp、 which 呼び出し(エクスポートを実行するため) を呼び出し、エクスポートされたデバイスに実際にアクセスするgpio(別の) 呼び出しを行います。MyApp
  2. gpioアプリを直接使用し、 を使用してstdout経由で聞く。signal/slotQProcess
于 2015-11-24T19:08:51.067 に答える