2016-06-21 10 views
0

認識された送信メッセージに失敗しましたか?私はすでにメッセージの送信を処理し、私はそのようなことを処理する方法を知らない。だから誰もメッセージの送信を処理する方法を知っているロードまたは信号GSMモデムがない場合は?私のコードは次のとおりです。gsmモデムにロードまたはシグナルがない場合、メッセージの送信を認識できない方法C#+シリアルポートおよびATコマンドの使用

using System.IO.Ports; 
public partial class Form1 : Form 
{ 
    SerialPort sp = New SerialPort(); 

    //Get the serial port data  
    private void Form1_Load(object sender, EventArgs e) 
    { 
    sp.PortName = "COM15"; 
     sp.BaudRate = 9600; 
     sp.Parity = Parity.None; 
     sp.StopBits = StopBits.One; 
     sp.DataBits = 8; 
     sp.Handshake = Handshake.RequestToSend; 
     sp.DtrEnable = True; 
     sp.RtsEnable = True; 
     sp.NewLine = Environment.NewLine; 
    } 

    //Send Message 
    //MsgBox is a customized message box 
    private void Button1_Click(object sender, EventArgs e) 
    { 
    string message = ""; 
    message = textbox1.Text; 

     sp.Open(); 
     if (sp.IsOpen()) 
     { 
      //Already handle the sent message with this code. 
     sp.Write("AT" + Environment.NewLine); 
      sp.Write("AT+CMGF=1" + Environment.NewLine); 
      sp.Write("AT+CMGS=" + (char)(34) + TextBox1.Text + (char)(34) + Environment.NewLine); 
      sp.Write(message + (char)(26)); 
      MsgBox("Sent"); 
     } 
     else 
     { 
     MsgBox("Port not available"); 
     } 
    } 
} 

答えて

0

データ受信時に発生するシリアルポートにイベントハンドラを接続する必要があります。

// On initializing the serial port add: 
sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived); 

// additionally add this eventhandler method 
private void sp_DataReceived(object sender, SerialDataReceivedEventArgs e) 
{ 
    // contains the reply of your GSM Modem (Maybe with the echoed input you've send) 
    string received = ((SerialPort)sender).ReadExisting(); 
} 

希望これは私が家に:)得たとき、私はこれをしようとします

トーマス

+0

に役立ちます。ありがとうトーマス。 –

+0

私はトーマスは動作しませんが、とにかく感謝します。それは私がメッセージや負荷を持っていなくてもメッセージを送信することを促します。ありがとう:) –

+0

あなたが使用しているgsmに応じて、コマンドをサポートするかどうかを意識してください。特に古いモバイルを使用している場合は、しばしば扱いにくく、実装/制限が厳しくなっています。 –

関連する問題