项目大体情况是这样的,用一来电设备(最初本打算用支持来电的MODEM,但后来考虑到速度会比较慢,所以购买专门设备)与电脑连接,来电后,自动提示来电号码及其他信息,重要的是号码与单位现在正在用的系统相连接,来显示一些其他有用信息。
  但是在给总机测试时,发现总机用的是华为的话务台卡,型号为c803ctx,连上设备无法检测到来电号码。询问通讯公司,给的答复是话务台卡传送的是数字信号,该设备无法检测到。项目因为搁浅,多方咨询后,一直没有解决这个问题
  现在非常着急,所以来向各位高手求助,不知道大家谁有这方面的开发经验或者相关信息帮助一下小弟,不胜感激。问题解决后,愿把所有分奉上。
  先谢了。

解决方案 »

  1.   

    那是不是需要交换机的一些指令,就象是用MODEM一样的AT指令???
      

  2.   

    没有指令,但是有一定的数据格式,你要自己进行拆分。它是交换机自动形成的数据流直接写入串口。可以用一个控件SPCOMM读取串口数据。
      

  3.   

    非常感谢 陈SIR :)
    今天晚上测试,明天结贴送分。
      

  4.   

    推荐一个来电显示的开发控件,控件完全免费,网址为:http://www.kosen.com.cn/news/showatc.asp?id=92
      

  5.   

    使用方法: 
    (1) 下载控件包Component.zip
    (2) 先编译 CPortLib6.dpk ,已安装了CPortLib 控件组的可省略这一步骤 
    (3) 然后编译 TelePort.dpk ,并安装 
    (4) 安装完成后,在 kosenTools 控件页增加了一个控件:TeleComport procedure TForm1.Button2Click(Sender: TObject); 
    begin 
      if TeleComport1.SetupPort then 
        Memo1.Lines.Add('Port='+TeleComport1.Port);   
      //设置来电管理器的连接端口,USB端口的设置为Port:="USB" 
    end; procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      TeleComport1.Open; 
    end; procedure TForm1.Button3Click(Sender: TObject); 
    begin 
      TeleComport1.Close; 
    end; procedure TForm1.TeleComport1Open(Sender: TObject); 
    begin 
      if TeleComport1.JDConnected then 
      begin 
        Memo1.Lines.Add('Connected'); 
        //打开端口时读取来电管理器内缓存的号码 
        TeleComport1.ReadAllWhenOpen;   
      end; 
    end; procedure TForm1.TeleComport1Close(Sender: TObject); 
    begin 
      if not TeleComport1.JDConnected then 
        Memo1.Lines.Add('not Connected'); 
    end; //有来电时触发此事件 
    //s为来电号码,t为来电时间 
    procedure TForm1.TeleComport1Read(Sender: TObject; s: String; 
      t: TDateTime); 
    begin 
      Memo1.Lines.Add(s+FormatDateTime(' yyyy-mm-dd hh:nn:ss', t)); 
    end;