2012-05-18 2 views
2

내 프로그램에 도움이 필요합니다. 그래서 나는 com 포트 연결 (gps 장치)을 가지고 있고 프로그램이 시작될 때 gps eventhandler가 triggerd가 될 때까지 Form2를 보여줄 수 있기를 원합니다. 그리고 장치가 내게 데이터를 보내기 시작하면, 장치가 데이터를 제공하지 못할 때가 있습니다. Form2를 다시 보여줘야한다는 것을 어떻게 알 수 있습니까?이벤트를 기다리는 동안 하나의 양식 화면을 표시하는 방법

설명이 약간 복잡합니다.

여기까지 제가 한 것입니다. Form1이로드 될 때 Form2 화면을 보여 주므로 기본적으로 신호가 표시 될 때까지 기다리는 중입니다. 이제 어떻게하면 일종의 루프 또는 이와 유사한 이벤트 처리기가 항상 트리거되는지 확인할 수있는 방법을 넣을 수 있습니다.이 경우 form2를 표시합니다.

자세한 설명이 필요하면 알려주세요.

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 
} 
+1

이벤트 처리기가 트리거 할 때 양식을 닫지 않는 이유는 무엇입니까? 그것이 그들의 전체 목적입니다. 뭔가가 발생하면 코드가 실행됩니다. 상태 변경을 기다리는 무한 루프가있는 것은 나쁜 생각입니다. – Doomsknight

+0

@Doomsknight 및 트리거하지 않을 때 다시 표시하는 방법. 예를 들어 차가 터널 신호로 들어갔다가 손실되었지만 신호가 없다고 말하는 form2를 활성화해야합니다. –

+0

@Doomsknight 어쩌면 이벤트가 몇 초 동안 트리거되지 않았는지 확인할 수 있습니까? –

답변

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) 
} 
+0

신호가 나타날 때 좋습니다. 그러나 그것이 언제 사라지는가? –

+0

신호가 손실되었다는 것을 지정하는 텍스트 구성 요소를 양식 1에 추가 할 수 있습니까? 5 초마다 GPS 좌표를 얻으려고하는 코드가 있다고 가정합니까? 그것의 분실 된 경우에, 다만 스크린에 메시지를 추가하고, 얻은 경우에, 메시지를 숨기십시오. – Doomsknight

+0

나는 쇼가되기 위해 특정한 형태가 필요합니다. 나는 네가 옳다고 생각하는 것을 의미한다. 그러나 이것이 필요한 것입니다. 네, 매 5 초마다 신호를받습니다. 그러나 신호가 그 상태를 검사하는 방법을 얻지 못하기 때문에 문제가 발생합니까? 이벤트 상태를 확인할 수 있습니까? –

관련 문제