硬件接口开发之Modem来电显示
本文介绍下如何实现Modem的来电显示的功能。Modem的来电显示是在我最早的送水管理软件中实现的,大概是05年完成的,由于Modem的成本比较低(普通的在100元之内),而来电显示功能在送水管理软件中比较需要,因此是一项性价比比较好的功能。
随着时间的推移,Modem的生产越来越少,而支持来电显示模块的Modem就更少一些了,取而代之是功能比较专一的来电显示盒横行天下,一般USB来电显示盒都可以支持2路、4路、8路等等,但是USB来电显示盒较贵,Modem由于性价比比较好,市场上依然还继续出现。本篇主要介绍如何实现Modem的来电显示,下篇将继续介绍基于USB的来电显示盒的接口开发。目前在我的送水软件中,为了兼顾两者的好处,一般是集成了两个硬件的功能,随便选一个硬件都可以使用来电显示功能。
看看Modem来电显示的应用场景,在送水软件中,链接一台电话(Modem只能连接一台电话),当有客户的电话接入的时候,软件会提示用户的信息,并进入下订单的界面,如下所示。
这样非常方便业务员的信息输入,同时还可以调出更多客户的相关信息,如客户的账号信息,购买记录作为默认这次订单的操作等,达到优质服务的目的。如下这个改进版的送水软件的来电显示功能就提供了客户财务信息,默认上次的购买记录等信息。
Modem的来电显示功能需要下面所需的前提条件。
一、 实现来电显示的系统最小需求。
1. 你的固定电话已经向电信局申请开通了来电显示功能,若没有申请,即使MODEM支持也是不行的。
2. 安装了MODEM的专用驱动软件(
注意不要使用Windows如XP自带的驱动程序
)。
3. MODEM支持来电显示。不管是内置MODEM,外置MODEM,只要它支持来电显示即可。
Code
Code
Code
随着时间的推移,Modem的生产越来越少,而支持来电显示模块的Modem就更少一些了,取而代之是功能比较专一的来电显示盒横行天下,一般USB来电显示盒都可以支持2路、4路、8路等等,但是USB来电显示盒较贵,Modem由于性价比比较好,市场上依然还继续出现。本篇主要介绍如何实现Modem的来电显示,下篇将继续介绍基于USB的来电显示盒的接口开发。目前在我的送水软件中,为了兼顾两者的好处,一般是集成了两个硬件的功能,随便选一个硬件都可以使用来电显示功能。
看看Modem来电显示的应用场景,在送水软件中,链接一台电话(Modem只能连接一台电话),当有客户的电话接入的时候,软件会提示用户的信息,并进入下订单的界面,如下所示。
这样非常方便业务员的信息输入,同时还可以调出更多客户的相关信息,如客户的账号信息,购买记录作为默认这次订单的操作等,达到优质服务的目的。如下这个改进版的送水软件的来电显示功能就提供了客户财务信息,默认上次的购买记录等信息。
Modem的来电显示功能需要下面所需的前提条件。
一、 实现来电显示的系统最小需求。
1. 你的固定电话已经向电信局申请开通了来电显示功能,若没有申请,即使MODEM支持也是不行的。
2. 安装了MODEM的专用驱动软件(
注意不要使用Windows如XP自带的驱动程序
)。
3. MODEM支持来电显示。不管是内置MODEM,外置MODEM,只要它支持来电显示即可。
二、怎么判断MODEM是不是支持来电显示?
1. 打开超级终端,随便输入一个连接名称,比如TEST。
2. 按确定后,下个窗口中,看到你的MODEM,不要输入电话号码。再下一步。
3. 在这个窗口中按取消。
4. 这样一个可以输入的空白窗口就有了。
输入:AT回车
如果出现OK,说明MODEM支持AT指令,不然,其他也不用试了。
然后输入下面的命令(每条前面加上AT),只要一条反应有OK,就说明MODEM本身芯片支持来电显示。
#CID=1
%CCID=1
+VCID=1
#CC1
*ID1
三、Modem 驱动安装的问题
如果您的操作系统是Windows 2K/XP,当安装MODEM驱动程序的时候,会自动安装操作系统自带的MODEM驱动,而此驱动程序只能支持数据传送(即只能用来拨号上网,而没有传真和语音功能)。所以您必须升级MODEM的驱动程序,并且在升级的时候手工指定到跟随MODEM的光盘中的驱动程序(而不让系统自己搜索)。并且在升级完之后重新启动系统。
下面介绍如何在C#中实现来电显示模块的功能。
Modem的来电显示需要一个和串口打交道的控件Apax Control,它是一个ActiveX的控件,原则上可以应用在任何语言中,本文只介绍在C#中的应用。
首先需要注册ActiveX控件,然后在开发IDE中引用控件,把控件拖动到界面上,如下所示。
然后生成目录会多出几个文件,如下所示。
在代码中,我们可以再Form_Load方法中初始化控件的一些属性。如下代码所示。
Code
然后我们就只需要关注axApax1_OnRing和axApax1_OnTapiCallerID处理函数了,如下代码所示
Code
最后关闭程序的时候要释放资源,否则会出现COM错误的,代码如下所示。
Code