谁有有关短信接收pdu转为汉字的资料

解决方案 »

  1.   


    function ConvertPhoneNum(TelNum: string): string;
    var
      i:integer;
      str,t:string;
    begin
      str:=TelNum;
      Result:='';
      i:=1;
      if system.odd(length(str)) then  str := str + 'F';
          while i<Length(str) do
          begin
              t:=copy(str,i+1,1);
              Result:=Result+t;
              t:=copy(str,i,1);
              Result:=Result+t;
              i:=i+2;
          end;
    end;function Encode1(var s:String):String;
    var
      i,j,len:Integer;
      cur:Integer;
      t:String;
      ws:WideString;
    begin
      Result:='';
      ws:=s;
      len:=Length(ws);
      i:=1;j:=0;
      while i<=len do
      begin
          cur:=ord(ws[i]);
          FmtStr(t,'%4.4X',[cur]);
        Result:=Result+t;
        inc(i);
        j:=(j+1) mod 7;
      end;
    end;
    function SendSms(TelNum:string;SmsData:string):string;
    var Sendstring,strtemp:string;
    begin
          sendstring:=Encode1(SmsData);
          strtemp:='0011000D9168'+ConvertPhoneNum(TelNum);
          strtemp:=strtemp+'000801'+Inttohex(Length(sendstring)div 2,2)+sendstring+chr(26);
          sendstring:=strtemp;
          strtemp:='AT+CMGS='+copy(inttostr(1000+Length(sendstring)div 2-1),2,3)+chr(13);
          if not Form1.comm1.WriteCommData(Pchar(strtemp),Length(strtemp)) then
             Result:='发送数据失败!'
          else
          begin
            sleep(1000);
            if not Form1.comm1.WriteCommData(Pchar(sendstring),Length(sendstring))then
               Result:='发送数据失败!'
            else
            begin
              Result:='发送数据成功!';
            end;
          end;
    end;我用SPCOMM控件发送成功。
    用GSM MODEM 和 蓝牙的T39 都可以。
      

  2.   

    我想问的是短信PDU转为汉字的那部分,AT+CMGR后读到的PDU转为汉字的那部分,,帮忙啊。。
      

  3.   

    pdu编码格式08 //短消息中心长度
    91 //短消息中心有国家编码 没有为81
    68 31 08 02 00 05 f0 //短消息中心
    31 //需要状态报告//不需为11
    00 //永远为00 //分割符
    0D //目标号码的长度14位
    91 //有国家编码//没有为81
    68 31 36 32 64 49 F0 //目标号码 +8613632346940
    00 //TP-PID.协议标识,一般为00,其他值大家知道的帮忙补充一下
    08 //是否免提//是为18
    A7 //有效期标志
    04 //正文4字节
    4F 60 59 7D //你好 短消息内容若没有短消息中心,编码为:
    00 //表示默认短消息中心
    31 //需要状态报告//不需为11
    00 //永远为00 //分割符
    0D //目标号码的长度14位
    91 //有国家编码//没有为81
    68 31 36 32 64 49 F0 //目标号码 +8613632346940
    00  //TP-PID.协议标识,一般为00,其他值大家知道的帮忙补充一下
    08 //是否免提//是为18
    A7 //有效期标志
    04 //正文4字节
    4F 60 59 7D //你好 短消息内容