用VC6.0开发来电显示软件 电话是企业与用户联系的主要方式, 怎样快速的得到用户的信息并与企业自身的管理系统结合起来.目前常用的有 两种方式:一是采用 电话语音卡,二是采用 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: VC程序代码 #include <windows.h> #include <windowsx.h> #include <winbase.h> #include <commdlg.h> #include <commctrl.h> #include <string.h> #include <stdio.h> #include <mmsystem.h> #include "dial.h" #include "d.h" #include "resource.h" #include "swind.h" extern HWND hGWnd; extern HINSTANCE dsms; extern int flag,flag1; extern int LineCount,LineStatus[8]; char num[2]; BOOL WINAPI yzInitSystem() { char buf[16]; int i; SW_Init(); SW_SetType(1); //设置类型 LineCount=SW_GetCount(); strcpy(buf,"共"); itoa(LineCount,num,10); strcat(buf,num); strcat(buf,"线"); SetWindowText(GetDlgItem(hGWnd,IDC_LINE),buf); for (i=0;i<LineCount;i++) { LineStatus[i]=0; //线路状态 } SetTimer(hGWnd,ID_TIME,20,TimerProc); return TRUE; } void WINAPI yzDoWork() { char s1[128]; char buf[128]; int i; LineCount=SW_GetCount(); for (int line=0;line<LineCount;line++) { //收到CID处理 i=SW_ReceiveCID(line,buf); if (i==-1) { strcpy(s1, "检查4路主叫号码接收盒是否安装!"); SetWindowText(GetDlgItem(hGWnd,IDC_CID),s1); return; } else if (i!=0) { strcpy(s1,"线"); itoa(LineCount,num,10); strcat(s1,num); strcat(s1,":"); strcat(s1,buf); SetWindowText(GetDlgItem(hGWnd,IDC_CID),s1); } } // end for } void WINAPI yzDial() { } void WINAPI yzOffHook() { } void WINAPI yzHangUp() { }
用VC6.0开发来电显示软件
最新推荐文章于 2021-01-29 09:13:56 发布
介绍如何使用VC6.0开发来电显示软件,利用USB来电显示盒获取来电信息,并详细展示了来电号码的处理过程及DTMF和FSK两种主叫号码传送方式。

768

被折叠的 条评论
为什么被折叠?



