基于TAPI和PBX实现双机互连互通

2015-07-18 14:42惠国保王志刚
物联网技术 2015年5期
关键词:互联互通调制解调器通信

惠国保++王志刚

摘 要:讲述使用微软TAPI类库实现双机互连通信的方法。通信底层硬件Modem型号多,不同厂家对硬件又有不同定义,开发一种应用程序适用于多种厂家的硬件是一个巨大挑战。在TAPI类库的基础上,开发出了一种通过城际交换机互连通信的软件系统,该软件系统对不同厂家的硬件都具有兼容性。

关键词:TAPI;调制解调器;城际交换机;互联互通;通信

中图分类号:TP302.1 文献标识码:A 文章编号:2095-1302(2015)05-00-02

0 引 言

计算机电话集成是计算机技术和电信技术相结合的产物。电信行业配备了各种各样的硬件系统,要设计一个考虑兼容所有种类的硬件系统的软件程序非常困难[1]。为了减轻开发者的负担,微软与Intel联合创建了Windows Telephony API (TAPI),给应用程序编程者提供一个接口,允许应用程序无需改变就可以适用多种多样的硬件系统。

1 TAPI通信原理

由于计算机与Modem之间的通信方式均通过串口进行,外置Modem是通过串口线与计算机连接,内置Modem通过虚拟串口实现通信[2]。计算机与Modem之间的通信由程序控制串口发送AT命令数据到Modem。TAPI扮演了应用程序与串口之间桥梁的角色,保证了软件开发的一致性。用户只需关注基于TAPI的应用开发,而无需关注不同Modem所对应的不同AT命令集。

TAPI是电话集成的编程工具,已经被集成到Win32 SDK中[3],相关的模块是Tapi32.dll和Tapisrv.exe。图1示意了Windows TAPI的结构。Tapi32.dll运行于用户程序进程空间,TAPI应用程序调用其中的功能函数;Tapi32.dll与运行于TAPI服务进程空间的Tapisrv.exe通信[4];Tapisrv.exe与通信硬件TAPI服务提供者(TAPI Service Provider,TSP)DLL通信;服务提供者DLL直接与服务提供者驱动程序通信,并通过驱动程序操作硬件。

在Windows NT网络中,第一次建立电话环境时,应在进程中执行1个初始化调用来设置TAPI环境,包括加载Tapi32.dll、执行TAPI服务Tapisrv.exe、加载注册库中有关的电话设备驱动程序[5]。

为了开发TAPI应用程序,必须调用Tapi32.dll所提供的一系列函数。微软在Win32 SDK中提供了Tapi32.dll的头文件Tapi.h和输入库文件Tapi.lib。任何调用Tapi32.dll中函数的工程都必须包含此头文件和连接该输入库[6]。

图1 TAPI通信体系

图2 双机互连通信示意图

2 TAPI通信实现

城际交换机连接两个计算机实现双机互连通信,如图2所示,因其线路简单、较容易实现,在现实中有许多应用场景。比如通过PC拨打电话,或者通过稳定可靠的电话线路收发送文件等。

在PC上开发应用程序实现采用电话线路通信,采用基于TAPI类库构建用户类库的方法实现应用程序开发。在用户类库里实现编制电话数据应用程序,流程如图3所示。编制电话数据应用程序大致经过如下过程:

(1)初始化TAPI。通过调用函数lineInitializeEx在应用程序中完成TAPI的初始化。

(2)协调TAPI版本。应用程序使用lineNegotiateAPI Version函数把API使用版本通知给TAPI,返回与TAPI通信所能使用的版本。

图3 TAPI主要功能流程

(3)检查设备。调用lineGetDevCaps函数询问设备的能力,返回LINEDEVCAPS类型的数据结构。设备能力包括TAPI服务提供者、交换机信息、字符串格式、载波方式、数据传输等。

(4)打开线路。调用函数lineOpen打开1条线路设备,lineOpen返回线路设备的句柄,用以完成以后对此设备的各种操作。可以在1个应用程序中打开多条线路。

(5)初始化线路状态。通过调用函数lineSetStatus Messages,初始化线路状态设置。

(6)创建侦听线路信息的线程,同时创建线程事件句柄和线程状态句柄。之所以需要线程状态句柄,是因为这里所实现的TAPI通信软件系统中创建了反馈连接状态的线程,需要建立状态变化事件句柄通知该线程。

侦听线程工作时,获取线程事件,对TAPI事件根据消息ID种类分别应对处理。主要包括三种应对方法:应答、呼叫信息处理、呼叫状态处理。呼叫状态再根据消息参数分别应对处理,处理方法包括:来电响应、空闲、连接、取消连接。线程事件触发处理流程如图4所示。

这里基于TAPI和PBX实现的双机互联互通软件系统运行界面如图5所示。如果安装了数据模式的Modem,打开TAPI通信后会获得TAPI句柄,并据此可以进行串口通信;如果没有安装或安装了有问题的Modem会报出无可使用设备的警示。在TAPI通信没有打开的情况下,串行通信是不能使用的,因为没有获得通信句柄。

图4 线程事件触发处理流程

图5 软件系统运行界面

为了测试互连互通功能,将一个PC作为被连接对象,点击“等候”;将另一个PC作为主动连接对象,输入对端电话号码,并点击“拨号”。连接成功后即可互发数据。发送端输入一串字符点击发送,接收端读取到的数据显示在接受对话框里,收发数据相同,且反向拨号连接和反向数据收发都是可以的,至此实现了基于TAPI和PBX双机互连互通功能。

3 结 语

使用微软TAPI类库,实现了基于PBX双机互连互通,一方面说明基于TAPI的电话线路通信无需关注底层Modem板卡,只需关注应用开发;另一方面说明了采用微软这种电话API通信架构确实有效,给应用开发带来了方便。

参考文献

[1]求是科技,张宏林.精通Visual C++串口通信技术与工程实践[M].北京:人民邮电出版社,2008.

[2]求是科技,谭思亮,邹超群,等.Visual C++串口通信工程开发实例导航[M].北京:人民邮电出版社,2003.

[3]龚建伟,熊光明.Visual C++/Turbo C串口通信编程实践[M].北京:电子工业出版社,2004.

[4]牛滨,王宁,房国志.基于TAPI3.0的计算机电话集成系统的设计[J].哈尔滨理工大学学报,2008,13(1):7-10.

[5]丁云,徐振明.基于TAPI的电话应用系统开发和研究[J].成都信息工程学院学报,2007,22(6):702-709.

[6]朱成键,江冰.TAPI软电话通信系统的模块化设计[J].微处理机,2010(1):33-36.

猜你喜欢
互联互通调制解调器通信
中国与中亚国家交通运输业的合作发展探讨
对数字微波通信技术的研究
安森美半导体推出用于工业通信的高集成度、低能耗HART CMOS调制解调器IC
Atmel采用科胜讯的软调制解调器