当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘 要:讲述使用微软TAPI类库实现双机互连通信的方法。通信底层硬件Modem型号多,不同厂家对硬件又有不同定义,开发一种应用程序适用于多种厂家的硬件是一个巨大挑战。在TAPI类库的基础上,开发出了一种通过城际交换机互连通信的软件系统,该软件系统对不同厂家的硬件都具有兼容性。

引 言

计算机电话集成是计算机技术和电信技术相结合的产物。电信行业配备了各种各样的硬件系统,要设计一个考虑兼容所有种类的硬件系统的软件程序非常困难[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]。

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

2 TAPI通信实现

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

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

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

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

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

(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 通信没有打开的情况下,串行通信是不能使用的, 因为没有获得通信句柄。

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

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

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

结 语

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭