2

プログラムについて助けが必要です。だから私はcomポート接続( gps device )を持っていて、プログラムが起動すると、 gps eventhandler がトリガーされるまで Form2 を表示できるようにしたいと考えています。また、デバイスがデータを送信し始めたときも同じですが、デバイスがデータを提供できない場合があります。Form2 を再度表示する必要があることを、その時点でどのように知ることができますか?

これは説明が少し複雑です。

これが私がこれまでに行ったことです。したがって、Form1 が読み込まれると、基本的に信号が表示されるのを待っていることを示す Form2 画面が表示されます。これをある種のループまたはそのようなものに入れ、イベントハンドラーがトリガーされることを常にチェックし、その間にこのフォーム2を表示するにはどうすればよいですか。

さらに説明が必要な場合はお知らせください。

コードは次のとおりです。

private void Form1_Load(object sender, EventArgs e)
{
  //open the com port when loading form
  comport.Open();

  Form2 my_form2 = new Form2();
  my_form2.ShowDialog();
}

これは、GPS 信号のイベント ハンドラーです。

GPS.PositionReceived += new NmeaInterpreter.PositionReceivedEventHandler(GPS_PositionReceived);

これが GPS 機能です。

private void GPS_PositionReceived(string Lat, string Lon)
{
arrLon = Lon.Split(new char[] { '°', '"' }, StringSplitOptions.RemoveEmptyEntries);
dblLon = double.Parse(arrLon[0]) + double.Parse(arrLon[1], new System.Globalization.NumberFormatInfo()) / 60;
deciLon = arrLon[2] == "E" ? dblLon : -dblLon;

//some more code 
}
4

1 に答える 1

1

では、イベント ハンドラーがトリガーされたときにフォームを閉じないのはなぜでしょうか? それが彼らの目的です。

何かがトリガーされたときにコードを実行します。

状態の変化を待つ不定ループを持つことは、悪い考えです。

private void GPS_PositionReceived(string Lat, string Lon)
{
    arrLon = Lon.Split(new char[] { '°', '"' }, StringSplitOptions.RemoveEmptyEntries);
    dblLon = double.Parse(arrLon[0]) + double.Parse(arrLon[1], new System.Globalization.NumberFormatInfo()) / 60;
    deciLon = arrLon[2] == "E" ? dblLon : -dblLon;

    //some more code 

    // LOAD FORM 1
    // CLOSE THIS FORM (FORM 2)
}
于 2012-05-18T14:33:38.533 に答える