NOKIA的都要安装数据套件;SEMENS和MOTOLA的不需要。

解决方案 »

  1.   

    怎么写? Liujc(阿聪) 你说啊。
      

  2.   

    outer2000(天外流星) 你说错了,nokia也可以不需要,我已经下载了这样的程序。
      

  3.   

    对试试以下AT指令就明白了
    AT+CNMI=2,2,3,2,1
    AT+CSDH=1
    AT+CMGF=1
    AT+CPMS="SM"
    AT+CSCS="PCCP437"
    AT+CSMP=,,,0
    AT+CMGS="+86手机号码"
    输入信息回车以下只有发送字符而不能发送汉字
      

  4.   

    Liujc(阿聪) 你说的我知道,无非是at命令,我现在是问,如果我不装驱动程序(MODEM),那你AT命令肯定就用不上了。你该怎么写? 而且你的at命令是text模式,只能发E文。
      

  5.   

    不对,modem没装就不支持at命令了。
      

  6.   

    无须装MODEM只须直接对串口进行操作即可
      

  7.   

    对头,对头
    其实你把手机连在com口,和把modem连在上面一样
    你只要把手机当成一个modem,用终端或者编程发送AT命令就行了
    手机厂家网址上应该有AT命令列表的
    我的是西门子的3568i,就在www.my-siemens.com找到了一个
    这个AT指令里有GSM手机通用的命令,也有特定厂家专门为手机定义的命令
    你去找一下就行了。和手机通信关键是设定通讯的参数,
    比如速率和一些信号设置,比如STR之类的,
    如果设置不正确,会不能通信,或者会有别的问题,
    在我的手机上,好像如果设置DTR就会引起手机黑屏,不过好像没什么影响。
      

  8.   

    无须装MODEM只须直接对串口进行操作即可 我不这样认为,不装MODEM,那at命令手机怎么识别?我做了测试,开始安装MODEM,然后at命令就有效。后来删除了modem的驱动程序,输入at什么反应都没有。
      

  9.   

    to jarjarbink:
    1。请问怎样将手机与串口相连?
    2。我的是3518i,命令是否跟3568i一样,能否发一份AT命令列表给我?
      

  10.   

    似乎曾经看过一篇有关发短讯的技术文章,里面谈到可以通过MODEM与某些可以提供短讯服务的SERVER端通过问答式委托SERVER发送短讯.
      具体不记得了,要重新找回那篇文章,不过它没有象上面所提到的方法那样,具有
    点局限性!
     
      
      

  11.   

    S35Expl有汉化版下载:
    http://cn.geocities.com/znhaicn/works-s35expl.html
    这里有一篇文章:
    http://tech.sina.com.cn/s/2001-11-23/2167.html
    请问哪里搞得到线?(我在上海)
      

  12.   

    这里有SIEMENS的一些东东
    http://www.fmsvc.com/
      

  13.   

    smscom.ocx
    我没试过听说不错
    http:\\go.163.com\smsinterfaceEmail:[email protected]
    13662480201
      

  14.   

    问题的关键是这样的ocx怎么写?
      

  15.   

    我知你的意思是想写一个组件,这个组件不用支持直接输入短信然后接在COM上的手机就能发,你是想往这个组件传AT然后让手机当作无线的MODEM来执行这些劳什子AT命令,是么?
      

  16.   

    {===============================================================} 
    { 函数  : RESULTSTRING = HexToBin(HEXSTRING) 
    { 目的   : 把十六进制字符串转换为二进制字符串   

    {===============================================================} 
    { 函数  : RESULTINTEGER = HexCharToInt(HEXCHAR) 
    { 目的   : 转换一个十六进制字符为整数
    {===============================================================} 
    { 函数  : RESULTSTRING = HexCharToBin(HEXCHAR) 
    { 目的   : 转换一个十六进制字符为二进制字符串
    {===============================================================} 
    { 函数  : RESULTINTEGER = Pow(BASE,POWER) 
    { 目的   : 指数函数
    {===============================================================} 
    { 函数  : RESULTINTEGER = BinStrToInt(BINSTRING) 
    { 目的   : 把二进制字符串转换为整数
    {===============================================================} 
    { 函数  : RESULTSTRING = DecodeSMS7Bit (PDUSTRING) 
    { 目的   : 解码一个7-bit SMS (GSM 03.38) 为ASCII码 
    {===============================================================}
    { 函数  :  RESULTSTRING = ReverseStr (SOURCESTRING)
    { 目的   : 反转一个字符串
    {===============================================================}
    {===============================================================}
    { 函数  :  RESULTSTRING = UniCode2Gb (SOURCESTRING)
    { 目的   : 将UniCode字符串转换为GB
    {===============================================================}
    {===============================================================}
    { 函数  :  RESULTSTRING = GB2UniCode (SOURCESTRING)
    { 目的   : 将GB字符串转换为UniCode
    {===============================================================}unit BinHexTools;
    interface function HexToBin(HexNr : String): String; 
    function HexCharToInt(HexToken : char): Integer; 
    function HexCharToBin(HexToken : char): String; 
    function pow(base, power: integer): integer; 
    function BinStrToInt(BinStr : String) : Integer; 
    function DecodeSMS7Bit(PDU : String): String; 
    function ReverseStr(SourceStr : String) : String; 
    function GB2UniCode(GB:string): String;
    function UniCode2GB(S : String): String;implementation uses sysutils, dialogs; 
    function HexCharToInt(HexToken : char):Integer; 
    begin 
      //if HexToken>#97 then HexToken:=Chr(Ord(HexToken)-32); 
      { 将小写字母转换成大写 }   Result:=0;   if (HexToken>#47) and (HexToken<#58) then       { chars 0....9 } 
         Result:=Ord(HexToken)-48 
      else if (HexToken>#64) and (HexToken<#71) then  { chars A....F } 
         Result:=Ord(HexToken)-65 + 10; 
    end; 
    function HexCharToBin(HexToken : char): string; 
    var DivLeft : integer; 
    begin 
        DivLeft:=HexCharToInt(HexToken);   { first HexChar->Int } 
        Result:=''; 
                                           { Use reverse dividing } 
        repeat                             { Trick; divide by 2 } 
          if Odd(DivLeft) then             { result = odd ? then bit = 1 } 
            Result:='1'+Result             { result = even ? then bit = 0 } 
          else 
            Result:='0'+Result;       DivLeft:=DivLeft div 2;       { keep dividing till 0 left and length = 4 } 
        until (DivLeft=0) and (length(Result)=4);      { 1 token = nibble = 4 bits } 
    end; 
    function HexToBin(HexNr : string): string; 
    { only stringsize is limit of binnr } 
    var Counter : integer; 
    begin 
      Result:='';   for Counter:=1 to length(HexNr) do 
        Result:=Result+HexCharToBin(HexNr[Counter]); 
    end; 
    function pow(base, power: integer): integer; //指数base^power
    var counter : integer; 
    begin 
      Result:=1;   for counter:=1 to power do 
        Result:=Result*base; 
    end; 
    function BinStrToInt(BinStr : string) : integer; 
    var counter : integer; 
    begin 
      if length(BinStr)>16 then 
        raise ERangeError.Create(#13+BinStr+#13+ 
                '不是一个有效的16Bit二进制单元'+#13);   Result:=0;   for counter:=1 to length(BinStr) do 
          if BinStr[Counter]='1' then 
            Result:=Result+pow(2,length(BinStr)-counter); 
    end; 
    function DecodeSMS7Bit(PDU : string):string; 
    var OctetStr : string; 
        OctetBin : string; 
        Charbin  : string; 
        PrevOctet: string; 
        Counter  : integer; 
        Counter2 : integer; 
    begin 
      PrevOctet:=''; 
      Result:='';   for Counter:=1 to length(PDU) do 
        begin 
          if length(PrevOctet)>=7 then     { if 7 Bit overflow on previous } 
            begin 
              if BinStrToInt(PrevOctet)<>0 then 
                Result:=Result+Chr(BinStrToInt(PrevOctet)) 
              else Result:=Result+' ';           PrevOctet:=''; 
            end;       if Odd(Counter) then            { only take two nibbles at a time } 
            begin 
              OctetStr:=Copy(PDU,Counter,2); 
              OctetBin:=HexToBin(OctetStr);           Charbin:=''; 
              for Counter2:=1 to length(PrevOctet) do 
                Charbin:=Charbin+PrevOctet[Counter2];           for Counter2:=1 to 7-length(PrevOctet) do 
                Charbin:=OctetBin[8-Counter2+1]+Charbin;           if BinStrToInt(Charbin)<>0 then Result:=Result+Chr(BinStrToInt(CharBin)) 
                else Result:=Result+' ';           PrevOctet:=Copy(OctetBin,1,length(PrevOctet)+1); 
            end; 
        end; 
    end; 
    function ReverseStr(SourceStr : string) : string; 
    var Counter : integer; 
    begin 
      Result:='';   for Counter:=1 to length(SourceStr) do 
        Result:=SourceStr[Counter]+Result; 
    end; 
    function GB2UniCode(GB:string):string;
    var
      s: string;
      i, j, k: integer;
      a: array [1..160] of char;
    begin
      s:='';
      StringToWideChar(GB, @(a[1]), 500);
      i:=1;
      while ((a[i]<>#0) or (a[i+1]<>#0)) do begin
        j:=Integer(a[i]);
        k:=Integer(a[i+1]);
        s:=s+Copy(Format('%X ',[k*$100+j+$10000]) ,2,4);
        //S := S + Char(k)+Char(j);
        i:=i+2;
      end;
      Result:=s;
    end;
    function UniCode2GB(S : String):String;
    Var I: Integer;
    begin
       I :=  Length(S);
       while I >=4  do begin
         try
           Result :=WideChar(StrToInt('$'+S[I-3]+S[I-2]+S[I-1]+S[I]))+ Result;
         except end;
         I := I - 4;
       end;
    end;
    end.
      

  17.   

    超级,有什么不懂的发信  [email protected] COMMAND_v8.6,
    GSM_v0705,
    SMS PDU-mode是编程所需要的技术文件,在网上找找吧