AT命令挂断

时间:2016-05-28 12:17:28

标签: c# .net at-command

我有以下代码片段,我用它来模拟使用AT命令在PC上作为拨号器的呼叫。

我遇到的问题是,有时,对于拨打的随机数,即使用户点击"挂断"在Windows窗体上的按钮,呼叫仍然继续在后台拨号。

实际的拨号电话是这段代码:

SerialPort po = new SerialPort();
po.PortName = ConfigurationManager.AppSettings.Get("modemPort");
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.WriteLine("ATD" + phoneNumber + ";\r");

然后单击“挂断”按钮时,我有以下代码:

po.DiscardInBuffer();
po.DiscardOutBuffer();
po.Close();

这有时会使呼叫在后台拨号。

我甚至添加了以下内容来测试它,但结果仍然相同。

po.WriteLine("ATH" + "\r");
po.WriteLine("ATH0;\r");
po.WriteLine("ATH+CHUP;\r");

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

请注意,AT命令集正式称为Hayes命令集。 Wiki页面上的信息提供帮助。各种原因可能导致挂断(ATH0)无法工作。首先,我不确定分号的使用,不应该使用分号。其次,调制解调器可能处于数据模式,因此在编写hangup命令之前,您需要先将其切换到有人模式(使用' +++')。另一种选择是将调制解调器配置为在丢弃DTR信号时丢弃连接(然后将DTR丢弃为挂起)。有关此here的更多信息。