2

C#を使用してGSMモデムから電話をかけたい。私は次のコードを書きました。しかし、私は電話をかけることができません。間違いを教えてください。また、「接続中」や「接続できません」などのメッセージを表示できるように、モデムからのコードで応答を処理する方法を教えてください。

private void button1_Click(object sender, EventArgs e)  
{  
    SerialPort po = new SerialPort();  
    po.PortName = "COM3";  
    po.BaudRate = int.Parse( "9600");  
    po.DataBits = Convert.ToInt32("8");  
    po.Parity = Parity.None;  
    po.StopBits = StopBits.One;  
    po.ReadTimeout = int.Parse("300");  
    po.WriteTimeout = int.Parse("300");  
    po.Encoding = Encoding.GetEncoding("iso-8859-1");  
    po.Open();  
    po.DtrEnable = true;  
    po.RtsEnable = true;  
    po.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);  
    po.Write("ATD9030665834;");  
}  
public void port_DataReceived(object sender, SerialDataReceivedEventArgs e)  
{  
    if (e.EventType == SerialData.Chars)  
    {  
            //what to write here to display the response??    
    }  
}  
4

3 に答える 3

2

port.WriteLine( "ATD" + phno + ";");を使用します。

これは間違いなくあなたの問題を解決します。

また、応答を処理するには、port.ReadExisting()を使用して、要件と比較します。それと同じくらい簡単です:)

幸運を..

于 2012-07-17T09:37:18.377 に答える
1
  1. poハイパーターミナルで動作しているので、ハイパーターミナルと同じように構成しているかどうかを確認してください。ハイパーターミナルの設定は通常、次のようになります。 COMポート設定

フロー制御がNONEの場合、必要はありません。

po.DtrEnable = true;         
  po.RtsEnable = true;  

設定エンコーディングの使用が見つかりません。

あなたが忘れている最も重要なことは、AnyATコマンドの最後に「\r」を追加することです!ATコマンドリストを読んでいないようです!

于 2012-07-12T06:14:15.400 に答える
0
private void button1_Click(object sender, EventArgs e)
        {
            SerialPort po = new SerialPort();
            po.PortName = "COM10";
            po.BaudRate = int.Parse("9600");
            po.DataBits = Convert.ToInt32("8");
            po.Parity = Parity.None;
            po.StopBits = StopBits.One;
            po.ReadTimeout = int.Parse("300");
            po.WriteTimeout = int.Parse("300");
            po.Encoding = Encoding.GetEncoding("iso-8859-1");
            po.Open();
            po.DtrEnable = true;
            po.RtsEnable = true;
            //po.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
           // po.Write("ATD01814201013;");
            po.WriteLine("ATD01"+textBoxPhoneNumber.Text+";"+Environment.NewLine);
        }
于 2014-03-02T07:52:42.413 に答える