2

何年もスクリプトを書いていなかったので、プログラミング言語を学ぶことに決め、C# に行きました。私はかなりうまくやっていますが、Google では解決できなかった問題に初めて直面したようです。

学習課題としてシミュレートされた航空機システムを作成しており、ドロップダウン コンボボックスからオプションが選択されたときにループを呼び出したいと考えています。

スターター スイッチをシミュレートする 3 つのオプションを含むコンボボックス/リストがあります。値は (0)Off、(1)On、(2)Ignition Only です。実際の飛行機では、「オン」を選択すると、スイッチが 10 秒間ロックされてから離されます。だから私が達成しようとしているのは:

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
   if (starterRight.SelectedIndex == 0)
   {
      //Starter is off
      eng2Start.Value = 0;
   }

   if (starterRight.SelectedIndex == 1)
   {
      //starter is on 
      //Start Timer
      eng2Start.Value = 1;

      if (eng2Tourqe >= 6000)
      {
         //open fuel valve
         // set Hot Start counter to 0
      }
      else 
      {
         //ensure fuel valve stays closed
         // set Hot Start counter to x+1
      }

      // End of Timer

      // set selected index back to 0
      (starterRight.SelectedIndex == 0)

   }
}

私はググってググりましたが、読めば読むほど、これで迷子になります。まだ完全に解読できない大量のコードを含む回答を見つけました。

私がやりたいことをすることは可能ですか?

お時間をいただきありがとうございます。

4

6 に答える 6

0

これはうまくいくはずだと思います。私はそれをコンパイルしませんでしたが、これでスイッチをロックし、タイマーをチェックして、10秒に達したらスイッチを再度有効にします。

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
   if (starterRight.SelectedIndex == 0)
   {
      //Starter is off
      eng2Start.Value = 0;
   }

   if (starterRight.SelectedIndex == 1)
   {
      //starter is on 

      starterRight.enable = false;

      StopWatch sw = new StopWatch();      

      sw.Start();
      eng2Start.Value = 1;


      if (eng2Tourqe >= 6000)
      {
         //open fuel valve
         // set Hot Start counter to 0
      }
      else 
      {
         //ensure fuel valve stays closed
         // set Hot Start counter to x+1
      }

      if (sw.ElapsedMilliseconds <= 10000)
      {
         do
         {
             //Dummy Loop
         }
         while (sw.ElapsedMilliseconds > 10000)
         sw.Stop(); 
      }
      else
      {
          // set selected index back to 0
          sw.Stop();
          starterRight.Enabled = true;
          (starterRight.SelectedIndex == 0)
      }

   }
}
于 2013-11-14T10:35:06.887 に答える
0

TimerTickイベントを使用できます。スイッチを無効にし、タイマーのティックがオンになったら有効にします。

Timer timerSwitchOn;

public SomeConstructor()
{
    timerSwitchOn = new Timer(){Interval = 10*1000}; // 10 seconds
    timerSwitchOn.Tick += new EventHandler(timerSwitchOn_Tick);
}

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{    
   if (starterRight.SelectedIndex == 1)
   {
      //starter is on 
      starterRight.Enabled = false;
      timerSwitchOn.Start();
   }
}

void timerSwitchOn_Tick(object sender, EventArgs e)
{
    timerSwitchOn.Stop();
    starterRight.Enabled = true;

    // set selected index back to 0
    starterRight.SelectedIndex = 0;
}
于 2013-11-14T10:35:13.200 に答える
0

最初の質問で、ループを呼び出したいと言ったのですが、タイマーを意味していましたが、皆さんはそれを理解したようです。

迅速な回答をありがとうございます。今週末、それらに行き詰まり、問題を解決できるかどうかを確認します。

于 2013-11-14T15:14:51.163 に答える