我一直在研究了超過兩天,試圖讓一個應用程序無法正常工作使用AT命令發送短信,我實現了在網上提供一些教程和項目。不幸的是,他們都沒有工作。AT命令發送短信在Windows 8.1
[https://docs.google.com/document/d/1VfBbMcKZsutP8Cwg2iu7Rqiyccks1J6N2ZEbkbxnCTU/preview]這段代碼給了我執行命令,但不發送消息。
然後我嘗試了另一個項目(我使用的是C#和Visual Studio 2013),它具有以下文件,執行後狀態更改爲消息已發送,但我沒有收到消息。我使用華爲移動連接 - 3G的應用程序接口 GSM調制解調器
Program.cs的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CSharp_SMS
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form_SMS_Sender());
}
}
}
Form1.cs的
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CSharp_SMS
{
public partial class Form_SMS_Sender : Form
{
private SerialPort _serialPort;
public Form_SMS_Sender()
{
InitializeComponent();
}
private void buttonSend_Click(object sender, EventArgs e)
{
string number = textBoxNumber.Text;
string message = textBoxMessage.Text;
_serialPort = new SerialPort("COM17", 19200); //Replace "COM7" with corresponding port name
Thread.Sleep(1000);
_serialPort.Open();
Thread.Sleep(1000);
_serialPort.Write("AT+CMGF=1\r");
Thread.Sleep(1000);
_serialPort.Write("AT+CMGS=\"" + number + "\"\r\n");
Thread.Sleep(1000);
_serialPort.Write(message + "\x1A");
Thread.Sleep(1000);
labelStatus.Text = "Status: Message sent";
_serialPort.Close();
}
}
}
有問題的程序?我錯過了什麼?或者,在Windows 8.1中運行這個問題有問題,因爲我還發現有一個名爲MS HyperTerminal的程序,這部分對我來說不是很清楚。
即_tutorial_應刪除(相關帖子:[1](http://stackoverflow.com/q/28315943/1207195)和[2](http://stackoverflow.com/a/15591673/ 1207195))。什麼不工作?有什麼異常?根本沒有結果?你必須改變一些串口屬性,不要等待使用Thred.Sleep(),**檢查調制解調器響應**(順便說一下,第一次睡眠是無用的)。我還建議將該代碼移到背景工作者(或者您將掛起UI)。狀態變爲「發送消息」,因爲這是你寫的,調制解調器實際告訴你的是未知的(因爲你沒有閱讀它的答案)。 –
您沒有進行身份驗證。你確定你的SIM卡沒有PIN嗎? 超級終端直接發送AT命令(不管你輸入被立即發送。) –
運行此的東西,如SysIntertnals Portmon運行,所以你可以看到從設備是您目前完全忽視了響應(看發出ATV1/AT + CMEE命令以啓用更詳細的響應) –