0

さまざまな学生コードのテスト シミュレーターをセットアップしています。学生コードの実行中に断続的にロボットの動作コードをシミュレートする必要があります。そのため、学生のコードで何が起こっているかに関係なく、おそらく 50 ミリ秒ごとにセンサー関数と移動関数 (後で最適化する時間) が実行されます。適切なスレッドなどを作成するコードをたくさん書きましたが、1 つのコードが常に他のコードを待機することになります。次に、基本的な部分まで単純化しましたが、どのような設定を使用しても、コードは順次実行され続けます。私のコードと出力は、私が入れることができる最も簡単な方法で以下にあります.

タイマー クラス:

Timer::Timer(int delayLength){
    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()),this, SLOT(MySlot()));
    qDebug() << "Timer Initialized";
    isTimerRunning = true;
    timer->start(delayLength);
}

void Timer::StopMovement(){
    stoppingMutex.lock();
    isTimerRunning = false;
    stoppingMutex.unlock();
}

void Timer::MySlot(){
    stoppingMutex.lock();
    if(isTimerRunning){
        qDebug() << "Timer Executed";
    }

    else{
        timer->stop();
    }
    stoppingMutex.unlock();
}

メインクラス:

int main(int argc, char *argv[]){
    QApplication app(argc, argv);
    Timer mTimer(100);
    for(int i = 0; i<5;i++){
         QThread::sleep(1);
         qDebug()<< "Slept";
    }
    qDebug() << "Finished";
    return app.exec();
 }

このコードで、代わりに「slept」というメッセージの断続的なインスタンスを含む「Timer Executed」を大量に出力したいと思います。

Timer Initialized
Slept
Slept
Slept
Slept
Slept
Finished
Timer Executed
Timer Executed
Timer Executed
Timer Executed
(...)
4

0 に答える 0