2013-07-16 62 views
1

試圖開發利用GsmComm圖書館小的應用程序。 此刻一個有一些問題,如果電話連接或沒有檢測。GSMComm phoneConnected/phoneDisconnected處理程序

它的檢測時,電話被切斷,但不希望當再次連接檢測手機...

任何想法,爲什麼?

我的代碼:

 GsmCommMain gsm = new GsmCommMain(4, 115200, 200); 



private void Form1_Load(object sender, EventArgs e) 
     { 
      gsm.PhoneConnected += new EventHandler(gsmPhoneConnected); 
       gsm.PhoneDisconnected += new EventHandler(gsmPhoneDisconnected); 
       gsm.Open(); 
     } 

private delegate void ConnctedHandler(bool connected); 

    private void onPhoneConnectedChange(bool connected) 
    { 
     try 
     { 
      if (connected) 
      { 

       phoneStatus.Text = "OK"; 
      } 
      else 
      { 
       phoneStatus.Text = "NG"; 
      } 
     } 
     catch (Exception exce) 
     { 
      logBox.Text += "\n\r" + exce.ToString(); 
     } 
    } 

    public void gsmPhoneConnected(object sender, EventArgs e) 
    { 
     this.Invoke(new ConnctedHandler(onPhoneConnectedChange), new object[] { true }); 
    } 

    private void gsmPhoneDisconnected(object sender, EventArgs e) 
    { 
     this.Invoke(new ConnctedHandler(onPhoneConnectedChange), new object[] { false }); 
    } 

回答

0

對不起,遲到的回答。剛剛注意到你的問題。 沒有必要使用事件處理程序進行連接。如果你想調用一些功能手機/ GSM調制解調器連接後,你應該打電話給他們,你打開的端口後(!)檢查連接是否使用IsConnected()在GsmCommMain成員函數建立。

var gsm = new GsmCommMain(4, 115200, 200); 

private void Form1_Load(object sender, EventArgs e) 
{ 
    //gsm.PhoneConnected += new EventHandler(gsmPhoneConnected); // not needed.. 
    gsm.PhoneDisconnected += new EventHandler(gsmPhoneDisconnected); 
    gsm.Open(); 
    if(gsm.IsConnected()){ 
     this.onPhoneConnectedChange(true); 
    } 
} 

private delegate void ConnctedHandler(bool connected); 
private void onPhoneConnectedChange(bool connected) 
{ 
    try 
    { 
     if (connected) 
     { 

      phoneStatus.Text = "OK"; 
     } 
     else 
     { 
      phoneStatus.Text = "NG"; 
     } 
    } 
    catch (Exception exce) 
    { 
     logBox.Text += "\n\r" + exce.ToString(); 
    } 
} 

/*public void gsmPhoneConnected(object sender, EventArgs e) 
{ 
    this.Invoke(new ConnctedHandler(onPhoneConnectedChange), new object[] { true }); 
}*/ 

private void gsmPhoneDisconnected(object sender, EventArgs e) 
{ 
    this.Invoke(new ConnctedHandler(onPhoneConnectedChange), new object[] { false }); 
}