开发CDMA无线Modem发短信的程序,按照anyData提供的步骤
设置了smmg=1,smsp=0x85,fset=0x204,监测到smss=3(接收状态),
按照扩充短信格式编写了短信格式,编成Byte放到Pchar里,
用Spcomm发出,可是发完以后再监测smss,一直都是3.在发完短信后发送#26(Ctrl+z),
Smss还是3.又在发完短信后发送#13#10(回车换行),Smss还是3,到底怎样才能正确发送,
请高手指点!

解决方案 »

  1.   

    说的扩展格式是扩展的数据帧还是AT*SKT...
    如果你用的是AT*SKT来发短信的话,这种指令是无法完成非可见字符的。
      

  2.   

    最好用扩展的短信帧格式,然后用AT+SMSG来发送。的确,这样是烦了点,可我认为这种方式最为可行。
      

  3.   

    用的是扩展格式,fset=0x204就是扩展格式的意思
    现在倒是能发出了,不用加#26(Ctrl+z),也不用加#13#10(回车换行),
    由于anyData资料中要求每发10个字节要停20毫秒,所以我就在每10个字节处停了
    10毫秒,为了保险,又在每字节发完后停1毫秒,正是由于停了这1毫秒导致发不出去。
    但是现在我发出后,用Smss监测返回总是2(失败),什么原因导致失败?信号不好
    还是其他原因。
      

  4.   

    10个字节要停20毫秒?即使是发140BYTE的短信我也不停的,没有发现什么问题啊?我是这么发的:
    procedure TfrmMain.WriteComm (s : string);
    var
      sLen : integer;
    begin
      s := s + #$d + #$a;
      sLen := Length (s);
      comm.WriteCommData(@s[1],sLen);
    end;
      

  5.   

    一般来说,PC向模块的发送速度过快,由于MODEM 内部缓冲有限,处理速度不够
    快,容易丢失部分数据,造成的后果是数据不完整或发送错误数据,特别是在发
    送比较大的SMS 时很容易发生。简单的解决方法是在往串口输送数据时每发送若
    干字节后停顿一小会。建议每发送10 个字节后停顿20ms.
    现在怎么发送都是失败(返回2),手机号码绝对没有问题,倒是发成功过,就成
    功过1条,手机收到信息什么内容都没有。
      

  6.   

    最好是设置一下每两条短信的间隔时间,不要过于频繁的发送。
    成功率会很底的。交换机那边不一定忙得过来。up.
    attention