发送多部分PDU短信通过AT命令
问题描述:
我已经成功发送一个多PDU短信,
发送多部分PDU短信通过AT命令
问题是,当我尝试这条短信发送到多个不同的网络上它给了我下面的错误:
+CMGS ERROR:500
请任何人告诉我该怎么办。
atCommandStr = "AT+CMGF=0\r";
comPort.WriteLine(atCommandStr + (char)13);
Console.WriteLine(comPort.ReadExisting());
Thread.Sleep(2000);
for (int i = 0; i < number_of_parts; i++)
{
int oct = (messagesParts[i].ToCharArray().Count()/2) -1;
atCommandStr = "AT+CMGS=" + oct + "\r";
comPort.WriteLine(atCommandStr + (char)13);
Console.WriteLine(comPort.ReadExisting());
Thread.Sleep(2000);
string path;
path = messagesParts[i] + Char.ConvertFromUtf32(26);
comPort.WriteLine(path + (char)13);
for (int a = 0; a < 100; a++)
{
Thread.Sleep(2000);
string t = comPort.ReadExisting();
Console.WriteLine(t);
if (t != "" && t.Contains("CMGS") || t.Contains("ERROR"))
{
break;
}
}
//Console.WriteLine(comPort.ReadExisting());
}
答
难道调制解调器真正回归+CMGS ERROR:500
,而不是+CMS ERROR: 500
?因为在这种情况下,您的调制解调器不符合指定if sending fails: +CMS ERROR: <err>
的27.005标准。
错误代码500意味着unknown error
,所以这并没有什么帮助。但我猜想你的长度计算是错误的。从标准:
<length> must indicate the number of octets coded in the TP layer data unit
to be given (i.e. SMSC address octets are excluded).
除以2后减1是否正确?尝试解码在TP层上发送的内容。尝试增加/减少长度,看看它是否有任何区别。
而且,由于atCommandStr已经包含\r
你不应该包括在+ (char)13
comPort.WriteLine(atCommandStr + (char)13);