問題: シリアル ポート経由で接続されたデバイスに一連のコマンドを送信し、応答を待つ方法タイムアウトとエラー条件を処理して応答を待ちます。
利点:
実装:
ステートマシンの作成:
アクション ジェネレーターの定義:
信号と遷移の接続:
プログラマ オブジェクトを作成します:
デバイス動作のエミュレート (オプション):
メイン関数内:
例コード:
// Programmer object using Qt's State Machine Framework class Programmer : public StatefulObject { Q_OBJECT AppPipe m_port; QStateMachine m_mach; State s_boot, s_send; public: Programmer() : StatefulObject() { connectSignals(); m_mach.setInitialState(&s_boot); send(&s_boot, &m_port, "boot\n"); expect(&s_boot, &m_port, "boot successful", &s_send, 1000, &s_failed); ... // Define other states and actions } void start() { m_mach.start(); } }; // main function int main() { QApplication app; Programmer prog; Device dev; dev.pipe().addOther(&prog.pipe()); prog.pipe().addHasOutgoing([](const QByteArray &data){ qDebug() << "> " << data; }); prog.pipe().addHasIncoming([](const QByteArray &data){ qDebug() << "< " << data; }); prog.start(); return app.exec(); }
利点:
以上がQt のステート マシンで一連のシリアル コマンドを送信し、応答を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。