这两天在研究短信锚,用PDU方式发送,发现一条短信最多能发送42个字,不知道是哪里出问题了,一旦超过42个字,则发送一直卡在那里,既不返回OK又不返回ERROR,请问有人遇到这样的情况么?

解决方案 »

  1.   

    不会吧,我用文本与PDU都发送过,都可以超 42啊,应该是72个汉字吧.
      

  2.   

    void smsObj_OnSendSmsMessage(string szSender, string szSmsSender, string szRecvMobiles, string szMsg, string szCookie)
            {
                char[] charSeparators = new char[] { ';' };            string RevSmsConcent;
                string RespondMsg;
                string[] RevMobiles = szRecvMobiles.Split(charSeparators); //如果客户端群发给多个手机,把每个手机拆分出来            foreach (string aMobile in RevMobiles)   //
                {                RevSmsConcent = "发送者:"+szSender+"\r\n" +"发送者:"+ szSmsSender +"\r\n"+"手机号:"+ aMobile +"\r\n"+"信息:"+ szMsg +"\r\n"+"cookie"+ szCookie;
                    txtRtxToMoContent.BeginInvoke(myDelegate, RevSmsConcent);                RespondMsg = "<Result><Item Mobile=" + "\"" + aMobile + "\"" + " Result=" + "\"\"" + @"/></Result>";                smsObj.ReSendSmsMessage(szSender, szCookie, RespondMsg);
                }
            }
      

  3.   

    我也觉得奇怪呢,我发现短信部分是42个字,合计84个字节,加上前面部分15个字节,总共写进串口的就最多99个字节,再多就发布出去了。贴出部分设置代码,谁帮我看下是不是这些地方有问题?
    先是串口设置:
                      comPort.PortName = "COM1"
                    comPort.BaudRate = 9600;
                    comPort.Parity = Parity.None;
                    comPort.StopBits = StopBits.One;
                    comPort.DataBits = 8;
                    comPort.ReadBufferSize = 10000;
                    comPort.ReadTimeout = 1000;
                    comPort.WriteBufferSize = 10000;
                    comPort.WriteTimeout = 10000;
                    comPort.RtsEnable = true;
    发送的时候写进串口:
                comPort.Write(" AT+CMGS="+长度+ "\r" +编码部分+"\x01A");
    判断发送成功与否部分:
                  ERROR = false; OK = false;
                for (int i = 0; i < 100; i++)
                {
                    if (OK == true)
                        break;
                    if (ERROR == true)
                    {
                        MessageBox.Show("ERROR");
                        return "ERROR";
                    }
                    System.Threading.Thread.Sleep(15); 
                    if (i == 99) ERROR = true;
                }
    谁帮我分析下错误在哪呢?