/// <summary>
  /// 发送GPRS Message
  /// </summary>
  /// <param name="MobileNumber">手机号码</param>
  /// <param name="MobileMessage">发送的信息</param>
  /// <returns>返回的结果:小于或等于“0”表示发送失败</returns>
  public bool SendGSMMsg(string MobileNumbers,string MobileMessage)
  {
    //GSM MODEL API的发送接口
    PDUdecoding pduDec = new PDUdecoding();
    string strSendMsg = pduDec.smsDecodedsms(strServiceCenter, MobileNumbers, MobileMessage);
    string a;
    try
    {
      this.boolListen = false;
      clsMsCom.Write("AT+CMGF=0\r\n");//PDU mode to send a Short Message
      clsMsCom.ReadTo("OK\r\n");
      clsMsCom.Write("AT+CMGS=" + (Convert.ToInt32(pduDec.nLength) + 5) + "\r\n");
      clsMsCom.ReadTo(">");
     // byte[] end = { 0x1a };//{ 0x1a x01a };
      byte[] end = Encoding.ASCII.GetBytes(string.Format("{0}\x01A", strSendMsg));
      clsMsCom.Write(end, 0, end.Length);     // clsMsCom.Write(strSendMsg + System.Text.UnicodeEncoding.Unicode.GetString(end));
      //clsMsCom.Write("\0x1a");      a = clsMsCom.ReadTo("OK");
      clsMsCom.Write("AT+CMGF=1\r\n");//Text mode to Receive a Short Message
      clsMsCom.ReadTo("OK\r\n");
      return true;
    }
    catch (Exception)
    {
      return false;
    }
    finally
    {
      boolListen = true;
    }
  }
PDU:就是发不过去!
PDU的长度:29
PDU:0891683108705505F011000D91683115608449F50008000E5C31662F53D14E0D8FC753BB0021高手们帮忙啊~~~~

解决方案 »

  1.   

    唉,自己搞定了,都是粗心啊!
    clsMsCom.Write("AT+CMGS=" + (Convert.ToInt32(pduDec.nLength) + 5) + "\r\n");错就错在这里,有没有人发现什么错误,发现错误的给分了!!!
      

  2.   

    clsMsCom.Write("AT+CMGS=0" + (Convert.ToInt32(pduDec.nLength) + 5) + "\r\n");
    应该是这样的吧.
      

  3.   

    也可能是这样
    clsMsCom.Write("AT+CMGS=" + (Convert.ToInt32(pduDec.nLength) + 15) + "\r\n");
    不大记得了