AT命令发送的短信已作为Flash短信接收(0级短信)

时间:2018-07-23 18:50:09

标签: wpf sms at-command

我用this link在WPF中通过AT命令发送SMS。 但是,当我使用CMGS命令发送SMS时,接收者将SMS当作Flash SMS而不是通常的SMS接收。我的代码如下:

 //Check if modem allows you to send and receive SMS messages using AT commands, without the need to decode the binairy PDU field of the SMS first
        rval = sp.SendCommand("AT+CMGF=1");

        //set Text mode parameters 
        rval = sp.SendCommand("AT+CSMP=17,167,0,16");

         string phonenumber = "xxxxxxxxxxx";      
        string Message = "test";

        rval = sp.SendCommand("AT+CMGS=\"" + phonenumber + "\"");

        if (rval.Equals("\r\n> "))
        {
            rval = sp.SendCommand(Message + char.ConvertFromUtf32(26) );

        }

我的SendCommand如下

  public string SendCommand(String commandText)
    {

        if (!serialPort.IsOpen)
        {
            try
            {
                serialPort.Open();
            }
            catch (Exception ex)
            {
                LogEvents.InLogFile(ex.Message);
                throw new Exception("COM port is busy");
            }
        }

        try
        {
            serialPort.DiscardOutBuffer();
            serialPort.DiscardInBuffer();
            buff = "";
            serialPort.Write(commandText + "\r");
            Thread.Sleep(serialPort.ReadTimeout);
            return buff;

        }
        catch (Exception)
        {
            throw new Exception("Error connection");
        }
    }

有人可以帮助我吗?

我的其他参考资料: developershomeSayeda Anila Nusrat

3 个答案:

答案 0 :(得分:0)

AT+CSMP中的第四个参数设置了编码方案,我不记得在哪个文档中找到了该字节的编码,但是位7设置了在显示消息后是否应丢弃消息{{1 }}或存储

您应该将此位设置为1以使其可存储,因此请更改

class 0

rval = sp.SendCommand("AT+CSMP=17,167,0,16");

应该做的工作

答案 1 :(得分:0)

AT + CSMP命令的第四个参数的位0(即最低有效位)是一个标志,用于标识SMS是闪烁(0时)还是保存(1时)。

简而言之:第4个参数的偶数将不保存消息,而奇数将保存消息。

答案 2 :(得分:-2)

AT+CSMP=17,167,0,16更改为AT+CSMP=17,167,0,0