我用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");
}
}
有人可以帮助我吗?
我的其他参考资料: developershome, Sayeda Anila Nusrat
答案 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
。