用C++Builder开发来电显示软件
电话是企业与用户联系的主要方式, 怎样快速的得到用户的信息并与企业自身的管理系统结合起来.目前常用的有 两种方式:一是采用 电话语音卡,二是采用 USB接口的来电显示接收盒. 由于语音卡本身价格比较贵,使用也不方便,本文 采用USB来电显示盒来实现.
USB来电显示盒采用北京海风公司的 CID1, 支持1到4路的电话来电显示.特点是采用符合USB 1.1标准, 与电话 线路并联,直接读取电话线上送来的来电号码。
1: 具体的产品驱动程序可以从 http://www.51record.com 下载
2: 来电号码的格式:
对于模拟电话线上的主叫识别信息传送及显示(Calling Identity Delivery,简称CID),目前电信局提供两种方式,即DTMF和FSK。这两种主叫号码都在被叫方未摘机时传送,即在通话建立之前传送。其中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
}
//---------------------------------------------------------------------------