在C#中从gsm调制解调器拨打电话

时间:2012-07-12 05:10:30

标签: c# serial-port gsm serial-communication telecommunication

我想使用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??    
    }  
}  

3 个答案:

答案 0 :(得分:2)

使用port.WriteLine(“ATD”+ phno +“;”);

这肯定会解决你的问题..

要处理响应,请使用port.ReadExisting()并与您的需求进行比较。就这么简单:)

祝你好运..

答案 1 :(得分:1)

  1. 确定您是否正在配置与超级终端相同的po,因为它与Hyperterminal一起使用。 超级终端设置通常如下: COM Port Settings
  2. 如果Flow Control为NONE,则不需要:

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

    我没有找到使用设置编码。

    你遗忘的最重要的事情是在任何AT命令结束时添加“\ r \ n”!好像你还没看过AT Command list!

答案 2 :(得分: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);
        }