各位: 
        在下目前在做“通过GSM   MODEM发送中文短信”的项目,现在的进展是:了解PDU编码,可以在超级终端里成功发送中、英文短消息,可以通过程序发送英文短消息,现在的问题是:程序发送不了中文的短消息。我使用的是SPCOMM控件(串口通讯),使用其默认属性,但在代码中写: 
        s   :=   'at+cmgs=18 '+chr($0d)+chr($0a);//PDU编码长度为18,后跟回车换行符 
        smsport.WriteCommData(pchar(s),Length(s)); 
        s   :=   '0011000B813107020277F1000810046B228FCE '+chr($1A);//发送中文“欢迎”,编码为“46B228FCE”,后跟CTRL+Z 
        smsport.WriteCommData(pchar(s),Length(s));         代码执行完后,却返回“ERROR”。好象与最后的结束符CTRL_Z有关!         但是如果在超级终端中输入如下命令则可以收到“欢迎”: 
        at+cmgf=0 
        at+cmgs=18 
        at+cmgs=0011000B812107020277F1000810046B228FCE(后跟一个CTRL_Z)         请问我的代码有何问题?是不是SPCOMM的属性不应使用默认值?注意:我的程序是同步的,串口有返回才继续发送的,所以不存在“每一条AT命令之间必须在上一条命令有回应后才能执行下一条命令”的问题。

解决方案 »

  1.   

    你用comport控件试试看,我以前是用它做的,没任何问题。
      

  2.   

    回楼上,程序已经很多使用spcomm了,不能再改了。
      

  3.   

    不是spcomm的问题,是你的配置问题,仔细看一下。
      

  4.   

    s := '0011000B813107020277F1000810046B228FCE '+chr($1A);
    _______________________________________________________________你去掉最后的ctrl+z 试试看。
      

  5.   

    s := '0011000B813107020277F1000810046B228FCE '+chr($1A);//
    e后面多加了一个空格
    你看看Length(s)对不对就知道了
      

  6.   

    回楼上,我后面加了空格,长度还是原样,发送还是回应error。
    拜托各位了,急呀!
      

  7.   

    对于spcomm的配置,难道默认的设置值,有不对吗?
      

  8.   

    嗯,有的短信猫要求4800的速率,有的是9600的速率,有的可能更高。变换一下试试,COM口一定要选对哦..