通过AT命令使用C#.net拨打电话

我想制作一个通过usb线连接到我的手机的ac#程序来拨打电话。 我发现如何通过SerialPort进行连接以及如何通过AT命令进行调用,但是当我运行程序并单击进行调用时,没有任何反应。 这是我的代码,请帮帮我:

SerialPort SP = new SerialPort("COM3"); SP.BaudRate = 9600; SP.Parity = Parity.None; SP.DataBits = 8; SP.StopBits = StopBits.One; SP.RtsEnable = true; SP.DtrEnable = true; SP.Encoding = System.Text.Encoding.Unicode; SP.ReceivedBytesThreshold = 1; SP.NewLine = Environment.NewLine; SP.Open(); SP.Write("ATDT 0999182542"+ Environment.NewLine); SP.Close(); 

首先,要查看您的调制解调器是否已连接,请向该端口发送AT命令。 如果您得到OK响应,则表示您的调制解调器已连接。

要进行调用,语法是:

ATDYourphnumber; //不要忘了“;”

示例: ATD9012345645;

所以你应该以同样的方式写入端口。

句法:

SP.WriteLine("ATD"+phonenumber+";");

您可以使用WriteLine,因为它也可以用于\r\n

更新:如何查看调制解调器的响应:

SP.Open()之后 ;

 string cmd = "AT"; SP.WriteLine(cmd + "\r"); SP.Write(cmd + "\r"); Thread.Sleep(500); string ss= SP.ReadExisting(); if(ss.EndsWith("\r\nOK\r\n")) { MessageBox.Show("Modem is connected"); } 

@Cdeez你的答案是最好的! 它工作得很好XD我试过但我的错误不包括“\ r \ n”按下“输入”,你需要按回车键才能采取行动。 顺便说一句,这是我打电话的方法,再次感谢@Cdeez!:

 private void Call() { SerialPort celu = new SerialPort(); celu.PortName = "COM13"; // You have check what port your phone is using here, and replace it celu.Open(); string cmd = "ATD"; // Here you put your AT command string phoneNumber = "784261259"; // Here you put the phone number, for me it worked just with the phone number, not adding any other area code or something like that celu.WriteLine(cmd + phoneNumber + ";\r"); Thread.Sleep(500); string ss = celu.ReadExisting(); if (ss.EndsWith("\r\nOK\r\n")) { MessageBox.Show("Modem is connected \r Calling : " + phoneNumber); } celu.Close(); } 

COM端口日志工具怎么样? 你用它吗? 你的命令发送到COM端口了吗?

据我所知,拨号命令是ATD [Number]; 所以尝试重写您的代码如下:

  SP.Write("ATD0999182542;"+ Environment.NewLine); 

尝试使用此库: GSM通信库