发送多部分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);