1

送信メッセージ間の遅延を使用して、シリアルポートにデータを書き込むにはどうすればよいですか? これは私のコードです:

void MainWindow::on_pushButton_Done_clicked()
{
    if(sport->isOpen()){
        sport->clear();
        QString cmd = Phase+Mode;

        //Write Stop
        sport->write("stop!", 5);

        //Write Mode
        sport->write(cmd.toStdString().c_str(), cmd.toStdString().length());

        //Write Speed
        sport->write(Speed.toStdString().c_str(), Speed.toStdString().length());

        //Write Direction
        sport->write(Direction.toStdString().c_str(), Direction.toStdString().length());

        //Run
        sport->write("start!", 6);

    }
}

この関数を呼び出すと、デバイスにエラー メッセージが表示されます。

ありがとうございました。

4

2 に答える 2

0

ステップモーターコントローラーなどをプログラムしようとしているようです。通常、このようなコントローラーでは、コントローラーの応答を待って、コマンドが適切に処理されたことを確認する必要があります。

コードの設計が非常に悪いようです。このコントローラーに関連するすべてのものを、次のような一連のスロットを持つ別のクラスに移動しますstarRotateLeftWithSpeed(double)waitForBytesWritten別の回答で提案されているような方法を使用することにした場合、コードはよりきれいになり、スレッドを使いやすくなります。

間違いなく、コントローラーのマニュアルをもっと注意深く読む必要があります。

于 2013-11-29T15:13:21.243 に答える