用C++Builder开发来电显示软件

 

C++Builder开发来电显示软件

 

电话是企业与用户联系的主要方式, 怎样快速的得到用户的信息并与企业自身的管理系统结合起来.目前常用的有 两种方式:一是采用 电话语音卡,二是采用 USB接口的来电显示接收盒. 由于语音卡本身价格比较贵,使用也不方便,本文 采用USB来电显示盒来实现.

USB来电显示盒采用北京海风公司的 CID1, 支持14路的电话来电显示.特点是采用符合USB 1.1标准, 与电话 线路并联,直接读取电话线上送来的来电号码。

 

1:  具体的产品驱动程序可以从 http://www.51record.com 下载

2:  来电号码的格式:

对于模拟电话线上的主叫识别信息传送及显示(Calling Identity Delivery,简称CID),目前电信局提供两种方式,即DTMFFSK。这两种主叫号码都在被叫方未摘机时传送,即在通话建立之前传送。其中DTMF格式主叫号码在第一声振铃之前传送,FSK格式在第一声振铃和第二声振铃之间传送。DTMF方式是在第一次振铃前用DTMF音频传递,特点是发送速度慢、无校验;FSK方式是在第一次和第二次振铃之间传递,特点是发送速度快、有校验。对于FSK方式,若在第一次振铃后马上摘机,就会收不到主叫号码。在某些城市,由于部分电话局未传递主叫号码,造成本地的某些来话收不到主叫。这种情况请咨询你所在的电话局。

对于DTMF方式,一般电话局仅发送主叫号码;而FSK方式,一般发送日期、时间

和主叫号码。

3: BCB程序代码

 

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

 

#include <MPlayer.hpp>

#include "exam1.h"

#include "swind.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormExam *FormExam;

int LineCount;

int LineStatus[8];

//---------------------------------------------------------------------------

__fastcall TFormExam::TFormExam(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TFormExam::FormShow(TObject *Sender)

{

  SW_Init();

  SW_SetType(1); //设置设备类型

  LineCount=SW_GetCount();

  Label6->Caption=""+IntToStr(LineCount)+"线";

  Timer1->Enabled=true;

  for (int i=0;i<LineCount;i++)

  {

      LineStatus[i]=0;  //线路状态

  }

}

//---------------------------------------------------------------------------

 

void __fastcall TFormExam::FormClose(TObject *Sender, TCloseAction &Action)

{

SW_Free();

}

//---------------------------------------------------------------------------

 

 

void __fastcall TFormExam::Timer1Timer(TObject *Sender)

{

 AnsiString s1;

 char buf[16];

 int i;

 

 LineCount=SW_GetCount();

 for (int line=0;line<LineCount;line++)

 {

    //收到CID处理

    i=SW_ReceiveCID(line,buf);

    if (i==-1)

    {

        Edit1->Text = "4路电话语音盒是否安装!";

        return;

    }

    else

    if (i!=0)

    {

        s1=buf;

        Edit1->Text = "线"+IntToStr(line)+":"+s1.Trim();

    }

 } // end for

 

}

//---------------------------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值