2013-08-24 106 views
0

我已經成功發送一個多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()); 
     } 

回答

0

難道調制解調器真正迴歸+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);