0
私はプレソンにSMSを送信する必要があるプロジェクトに取り組んでいます。もし人がSMSを受け取らなければ、彼をもう一度送る必要があります。だから、私は成功したSMS配信レポートが必要です。 SMSの配信状況やレポートを取得して読む方法私はSIMCOM 800デバイスを使用しており、プロジェクト言語はC#.net(コンソールアプリケーション)です。SMS配信レポートのATコマンド
ここスニペットコード...
Program.csの
public void SendSMS(string sim, string message)
{
//.............................................. Send SMS ....................................................
try
{
if (objclsSMS.sendMsg(this.port, sim, message))
{
//MessageBox.Show("Message has sent successfully");
Console.WriteLine("Message has sent successfully");
}
else
{
//MessageBox.Show("Failed to send message");
Console.WriteLine("Failed to send message");
}
//Console.ReadLine();
}
catch (Exception ex)
{
ErrorLog(ex.Message);
}
}
clcSMS.cs
#region Send SMS
static AutoResetEvent readNow = new AutoResetEvent(false);
public bool sendMsg(SerialPort port, string PhoneNo, string Message)
{
bool isSend = false;
try
{
string recievedData = ExecCommand(port, conncetioncmd, 300, "No phone connected");
recievedData = ExecCommand(port, msgformatcmd, 300, "Failed to set message format.");
//recievedData = ExecCommand(port, "AT+CSMP=49,167,0,242", 300, "Failed to accept phoneNo");
//recievedData = ExecCommand(port, "AT+CNMI=1.0.0.1.0", 300, "Failed to accept phoneNo");
//recievedData = ExecCommand(port, "AT+CNMI=1,1,0,0,0", 300, "Failed to accept phoneNo");
//recievedData = ExecCommand(port, "AT+CNMI=1,0,0,1,0", 300, "Failed to accept phoneNo");
//recievedData = ExecCommand(port, "AT+CNMI=2,2,0,0,0", 300, "Failed to accept phoneNo");
//recievedData = ExecCommand(port, "AT+CNMI=2", 300, "Failed to accept phoneNo");
//recievedData = ExecCommand(port, "AT+CSMP=49,167,0,0", 300, "Failed to accept phoneNo");
//recievedData = ExecCommand(port, "AT+CNMI=2,2,0,1,0", 300, "Failed to accept phoneNo");
//recievedData = ExecCommand(port, "AT+CSAS", 300, "Failed to accept phoneNo");
String command = msgcmd + PhoneNo + "\"";
recievedData = ExecCommand(port,command, 300, "Failed to accept phoneNo");
command = Message + char.ConvertFromUtf32(26) + "\r";
recievedData = ExecCommand(port,command, 3000, "Failed to send message"); //3 seconds
if (recievedData.EndsWith("\r\nOK\r\n"))
{
isSend = true;
}
else if (recievedData.Contains("ERROR"))
{
isSend = false;
}
return isSend;
}
catch (Exception ex)
{
throw ex;
}
}
static void DataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
if (e.EventType == SerialData.Chars)
readNow.Set();
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
public string ExecCommand(SerialPort port,string command, int responseTimeout, string errorMessage)
{
try
{
port.DiscardOutBuffer();
port.DiscardInBuffer();
receiveNow.Reset();
port.Write(command + "\r");
string input = ReadResponse(port, responseTimeout);
if ((input.Length == 0) || ((!input.EndsWith("\r\n> ")) && (!input.EndsWith("\r\nOK\r\n"))))
throw new ApplicationException("No success message was received.");
return input;
}
catch (Exception ex)
{
throw ex;
}
}
誰もが正しい方向に私を指すことができますか?
ありがとうございます。
あなたが知っている場合は迷惑リンクを確認してください。https://www.twilio.com/docs/guides/sms/how-to-confirm-delivery-in-csharp#how-it-works –
https://mobiforge.com /設計・開発/ハンドリング-SMS-配信-レシート –
https://www.sinch.com/tutorials/send-sms-c/ –