其实就是发个ATDT的AT指令,以前用过VaModem控件, 大部分指令都封装好了

解决方案 »

  1.   

    百度搜索 九品 的 串口通讯控制器,有全部代码,用它发送at指令控制modem就可以了。根据自己的要求,改变成自动的就行了。
      

  2.   

    简单点用spcomm + AT指令可实现
      

  3.   

    N年前的一部分相关代码,有些乱,供参考:procedure Tfrmbaoshui_net.BitBtn1Click(Sender: TObject);
    begin
      self.Comm1.CommName:=self.ComboBox4.Text;
      self.Comm1.BaudRate:=strtoint('9600');
      self.Comm1.ByteSize:=tbytesize(self.ComboBox1.ItemIndex);
      self.Comm1.StopBits:=tstopbits(self.ComboBox2.ItemIndex);
      self.Comm1.Parity:=tparity(self.ComboBox3.ItemIndex);
      try
        self.Comm1.StartComm;
      except
        raise exception.Create('打开串口错误');
      end;
      self.StatusBar1.SimpleText:='  '+self.ComboBox4.text+'已打开';
    end;procedure Tfrmbaoshui_net.BitBtn4Click(Sender: TObject);
    var
      s:string;
      i:integer;
    begin  
      s:='ATDT'+trim(edit2.Text)+chr(13);    // AT指令
      i:=length(s);
      comm1.WriteCommData(pchar(s),i);      //通过串口发送至MODEM
    end;procedure Tfrmbaoshui_net.Comm1ReceiveData(Sender: TObject;
      Buffer: Pointer; BufferLength: Word);
    var
      viewstring:string;
      s:string;
      aqw325:tadoquery;
      sb_mode:string;
    begin
      setlength(viewstring,bufferlength);
      move(buffer^,pchar(viewstring)^,bufferlength);
      sleep(80);
      s:='ATA'+chr(13);
      edit3.Text := viewstring;
      if length(viewstring)>30 then
      begin
        if echo_controls_JZ(hextostring('20080808')+viewstring)=true then
        begin
          save_coffient1();
          save_tax_user_USB();
          showmessage('监控信息回传成功!');
          aqw325:=dm1.create_ado();
          aqw325.SQL.Text:='select * from bsrq';
          aqw325.Open;
          aqw325.Edit;
          aqw325.FieldByName('sb_date1').AsDateTime:=aqw325.FieldByName('sb_date').AsDateTime;
          aqw325.FieldByName('tag01').AsString:='1';
          aqw325.Post;
          aqw325.Close;
        end;
      end;   
    end;procedure Tfrmbaoshui_net.BitBtn5Click(Sender: TObject);
    var
      s:string;
    begin
      s:='+++';
      comm1.WriteCommData(pchar(s),length(s));  
    end;procedure Tfrmbaoshui_net.BitBtn6Click(Sender: TObject);
    var
      s:string;
    begin
      s:='ATH0'+chr(13);
      comm1.WriteCommData(pchar(s),5);
      self.BitBtn1.Enabled:=false;
    end;procedure Tfrmbaoshui_net.BitBtn7Click(Sender: TObject);
    var
      s:string;
    begin
      s:='ATS0=1'+chr(13);
      comm1.WriteCommData(pchar(s),7);
    end;procedure Tfrmbaoshui_net.BitBtn8Click(Sender: TObject);
    var
      s1:string; s2:string;
      adoquery211,aqw324,aqw222,aqw006:tadoquery;
      sb_tag,sb_mode:string;
      canx:integer;
      sdir:string;
      strskkbh,strMachine:string;
    begin
       {aqw324:=dm1.create_ado();
       aqw324.SQL.Text:='select * from bsrq';
       aqw324.Open;
       if aqw324.FieldByName('tag01').AsString='0' then
       showmessage('上次申报尚未完税!');
       aqw324.Close;      }   aqw222:=dm1.create_ado();
       aqw222.SQL.Text:='select * from tax_user_mac';
       aqw222.Open;
       sb_tag:=aqw222.fieldbyname('shenbao_tag').AsString;
       strskkbh:=aqw222.fieldbyname('Taxcard_num').AsString;   
       while length(strskkbh)<10 do
          strskkbh:='0'+strskkbh;
      // canx:=strtoint(sb_tag); //函数参数;
       aqw222.Close;  s1:=dealdata(datetimepicker1.Date );
      s2:=copy(s1,1,4)+copy(s1,6,2)+copy(s1,9,2);
      screen.Cursor :=crhourglass ;  if sb_net(1,s2)=true then
      begin
        {aqw324:=dm1.create_ado();
        aqw324.SQL.Text:='select * from bsrq';
        aqw324.Open;
        if (aqw324.FieldByName('tag01').AsString='1') or (aqw324.FieldByName('tag01').AsString='') then
        begin
         aqw324.Edit;
         aqw324.FieldByName('sb_date').AsDateTime:=self.DateTimePicker1.Date+1;
         aqw324.FieldByName('tag01').AsString:='0';
         aqw324.Post;
         aqw324.Close;
        end; }
        showmessage('网络申报成功!');
      end
      else
         showmessage('网络申报失败!');
       screen.Cursor :=crdefault;
      // close;
    end;procedure Tfrmbaoshui_net.BitBtn2Click(Sender: TObject);
    begin  
      self.Comm1.StopComm;
      self.StatusBar1.SimpleText:='  '+self.ComboBox4.Text+'已关闭'; 
    end;procedure Tfrmbaoshui_net.Edit3Change(Sender: TObject);
    var
      viewstring:string;
    begin
      viewstring:=copy(cutblank_wanjun(edit3.Text),3,7);   //CONNECT 9600/V42BIS     
       if viewstring='CONNECT' then
         self.BitBtn8.Enabled:=true;
    end;procedure Tfrmbaoshui_net.BitBtn9Click(Sender: TObject);
    begin
      self.BitBtn1.Enabled:=false;
      self.Comm1.StopComm;
      Close;
    end;
      

  4.   

    CnPack有详细的源码。值得去看看。
      

  5.   

    好像有个dialup控件的吧,自己去找找
      

  6.   

    拨号有很多种,看你是PSTN的,还是TCP/IP的,TCP/IP的又分为是有线的还是无线的...
      

  7.   

    看modem的帮助文档就可以找到...
      

  8.   

    用SPCOMM配合AT指令應該就可翠了。