2011-07-06 15 views
1

私はlightWave型のusb gsmモデムを持っています。私はこのモデムからSMSメッセージを受信し、送信し、削除して読むことができるこのコードをC#で見つけましたが、新しいメッセージがモデムに着信すると、新しいメッセージが受信されたときに発生するイベントは発生しません。私は問題が何であるか分からない。しかし、私は後に受け取ったSIMからこのメッセージを読むことができますが、私はメッセージは、コードのこの部分を到着したときに受信したメッセージのイベントが発生します:C#でGSMモデムをプログラミング

private void Form1_Load(object sender, EventArgs e) 
{ 
    int port = GsmCommMain.DefaultPortNumber; 
    int baudRate = 9600; // We Set 9600 as our Default Baud Rate 
    int timeout = GsmCommMain.DefaultTimeout; 

    dlg = new frmConnection(); 

    dlg.StartPosition = FormStartPosition.CenterScreen; 
    dlg.SetData(port, baudRate, timeout); 
    if (dlg.ShowDialog(this) == DialogResult.OK) 
    { 
     dlg.GetData(out port, out baudRate, out timeout); 
     CommSetting.Comm_Port = port; 
     CommSetting.Comm_BaudRate = baudRate; 
     CommSetting.Comm_TimeOut = timeout; 
    } 
    else 
    { 
     Close(); 
     return; 
    } 
    Cursor.Current = Cursors.WaitCursor; 
    CommSetting.comm = new GsmCommMain(port, baudRate, timeout); 
    Cursor.Current = Cursors.Default; 
    CommSetting.comm.PhoneConnected += new EventHandler(comm_PhoneConnected); 
    CommSetting.comm.MessageReceived += new MessageReceivedEventHandler(comm_MessageReceived); 
    //.... 
} 

ときにメッセージ

CommSetting.comm.MessageReceived += new MessageReceivedEventHandler(comm_MessageReceived); 
このイベントが発生しません。

このコードはC#で私はcodeproject.comに設立されました。

+0

あなたが設定されていない場合Handshakeプロパティを使用すると、ハードウェアハンドシェイク信号を自分で設定する必要があります。 RtsEnableプロパティとDtrEnableプロパティをtrueに設定します。 –

+0

GSMcommを使用する代わりに、独自のハンドラを配置してデータを受信し、それに応じて決定する必要があります。 –

答えて

0

+ CMTI

A GSM/GPRSモデムや携帯電話用途+ CMTI新しいSMSメッセージが受信されたコンピュータ/ PC、それが格納されているメモリ位置を通知します。

if(indata.Contains("+CMTI"))//Alert for message recived read message from the loacation 

がloactionを取得し、そのspecficシムの場所からのメッセージを読んで、DataReceivedHandlerを扱うイベントでスレッドを実行し続けます。

REF http://www.developershome.com/sms/resultCodes3.asp

REF http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.datareceived.aspx

0

あなたのポート、ボーレート、タイムアウトが有効であることを確認する必要があり、すべての最初の。そして、チェック通信が正しく初期化されています。ハンドラは、次のコードだけ......

comm.MessageReceived += comm_MessageReceived; 

を書いて、次のコードでCOMMを初期化する追加する

.......

comm = new GsmCommMain(port, baudRate, timeout); 
関連する問題