基于电话线路的数据通信程序的设计与实现毕业设计(编辑修改稿)内容摘要:

第 3 页 共 17页 息。 循环退出后,程序即结束。 MODEM 的控制 目前模拟电话线路被广泛用于数据传输。 调制解调器 (MODEM)被用来实现数字信号到模拟信号和模拟信号到数字信号的相互转换。 MODEM 通过 PSTN (public switched telephone work,公用交换式电话网)来传输数据。 目前计算机控制调制解调器有两种方法:一种方法是向 MODEM 发送 AT 指令,另一种方法是使用 TAPI (telephony application programming)即电话应用程序接口。 AT 指令集是由 Hays 公司首先推出的用于控制自己开发的 smart modem 系列产品的命令集合, AT 命令集推出后得到广泛的应用,很快其它生产调制解调器的公司也都使用与 Hays 公司 AT 指令集兼容的 AT 指令集。 开发者利用串行通信 API 再加上基本的 Hays 兼容的 AT 命令,就可以实现对 MODEM 的控制。 但这种方法在 windows 中用起来很不方便。 原因如下:许多 MODEM 制造商已向标准的 AT 指令集中添加了许多变种,这就使应用程序与市售的所有 MODEM 保持完全兼容很困难。 而 Windows 维护了一个数据库,其中包含了商用调制解调器以及每个 MODEM 支持 的 AT 命令集变种,使用 TAPI 则可以访问该数据库,所以使用标准 TAPI函数生成呼叫和控制 MODEM 的应用程序不需要知道 AT命令集的详细内容。 TAPI 通信编程 TAPI的含义 计算机电话集成( Computer Telephony Integration,缩写 CTI)是计算机技术和电信技术相结合的产物。 电子通信行业配备了各种各样的硬件系统,仅仅收集这些系统的标准、文档和接口规范就是很复杂的任务,要设计一个考虑所有情况的任务就更加困难。 为了减轻开发者的负担, Microsoft 公司和 Intel公司联 合起来创建了 Windows Telephony API(TAPI)给应用程序编程者提供一个接口,并且允许应用程序无需改变就可以适应多种多样的电信系统。 TAPI 是 Microsoft 公司的 Windows 开放式服务结构中的一部分,它包括两个接口:开发人员使用的应用程序接口和用于连接某种电话网络的接口。 TAPI为通信应用程序提供控制通信的功能,包括数据、传真、语音,以及处理计算机与电话网之间的信号灯。 TAPI 服务为通信应用程序提供了一种与设备无关的方法,避免了使用 AT指令直接访问硬件可能造成的冲突,并且 让应用程序可以与包括数字综合服务网( Intergrated Services Digital Network)在内的各种通信网络通信;同时还提供了访问通信端口和设备的通用机制。 这样,多个应用程序就可以共享这些设备, TAPI 管理对各个设备的访问,让通用程序协调使用这些设备。 TAPI 第 4 页 共 17页 的设计本身是可以扩展的,从而可以满足未来通信网络多方面的需求。 TAPI的体系结构 图 1 是 TAPI 体系结构示意图。 作为中间层的 TAPI DLL,提供对服务提供者的管理,并在服务提供者与应用程序之间进行信息传递。 TAPI 可以保证多个服务者和应用程序能够同时存在,并且不会发生相互冲突。 图 1 TAPI的体系结构 在底层将 TAPI 和实际的电话硬件连接是 TAPI 服务提供者( TAPI Service Provider 缩写为 TSP) .TSP 一般都由硬件生产厂商提供。 TAPI 的基本概念 (1) 设备 ID 设备 ID 是从零开始按顺序分配给每个设备的 ID;也就是说,如果安装了 4个线路设备,这些线路没备的设备 ID 相应为 0、 3。 (2) 长度变化的数据结构 TAPI 使用的大多数的复杂数据结构是变长的数据结构。 这些结构的组织如图二所示。 最前面 l 的 3 个域分别是 dwTotalsize ,dwNeededsize 和dwUsedSize。 在这三个域后面是固定长度的域,对每个给定的结构类型固定长度的域都具有同样的长度。 一般而言,长度范围从 0 到 300 个字节或者更长字节的结构。 存储在结构中的可变部分的信息总是通过相对于结构定长部分的一个偏移量来引用,以字节为单位的偏移量指出变长数据的起点的位置。 信息量大小就是变长数据所占用的字节数。 其大小包括字符串末尾的空字符。 这些结构的内存总是由应用程序分配。 但是数据结构需要多大的内存空间,应用程序并 不总是知道,这就是设置前三个域的原因。 将结构传送给 TAPI 之前,应用程序可使用缓冲区的大小填充 dwTotalsize 域。 TAPI 首先证实该结构有足够大空间容纳其定长部分,然后填充定长域,接着填入变长项。 TAPI 填入变长项直到没有空间为止。 最后 TAPI 用为获得所有数据所需的空间量来填充 dwNeededsize 域,而 dwUsedsize 域用 TAPI 实际使用的空间量来填充。 当应 第 5 页 共 17页 用程序得到该结构时,它首先应该检查 dwNeededsize 助和 dwUsedSize 域。 如果两者相等, TAPI 就能够找出用于所有变长数据的控件。 如果 dwusedsize 小于 dwNeededsize ,应用程序可以检查相应的偏移量和域大小看是否有需要的变长数据,如果这些数据域都被设置为零,那么应用程序必须分配一个更大的缓冲区并且重试上述过程。 图 2 TAPI所用到的数据结构 (3) 逻辑线路设备 线路( Line)指的是物理电话线路。 线的终端位置一般称为站( station)。 线路设备( Line device)是任何连接计算机到电话线或者线路的物理设备,如调制解调器或 ISDN 卡等。 线路设备不必位于应用程序运 行的计算机上。 逻辑线路设备( logical line device)代表一根电话线。 逻辑线路设备的性能取决于它所代表的实际电话线的性能。 典型的电话线路称为 POTS ( Plain old Telephone service 普通老式电话服务)。 在 Windows 中, POTS 线通过单一逻辑线路设备表示。 一些数字电话线(例如 ISDN )包含了多个“信道”或者信息通路,可用来同时传送不同类型的数据,这些多信道数字线路通常由多逻辑线路设备表示,一个逻辑线路设备代表一个信道。 逻辑电话( Logical phone)表示电话。 一部典型的电话包括叉簧和转换器组成。 叉簧是可以将电话与线路连接或挂断的开关,转换器是一种由扬声器和话筒组成的设备,话筒可以将声能转换为电能,或将电能转换为声能。 (4) 地址 第 6 页 共 17页 地址 (Address) 是字母、数字和控制字符组成的字符串,它们定义到电话、调制解调器或计算机的路径。 线路、电话和地址是静态的,他们有一定程度的持久性,线路或与计算机连接的电话不经常改变,线路的电话号码也一样。 (5) 呼叫 呼叫 (call) 是当两个线路设备由电话网络连接在一起时存在的一种交互状态。 呼叫方 (calling party)是发起呼叫的一方,而被呼叫方 (called party)则是应答呼叫的一方。 对呼叫可以进行连接、置于保持状态以及传送、召开会议、暂停、恢复等操作。 每个呼叫在期生存期都会经历许多状态。 在呼叫改变状态时, Windows 会通知控制应用程序。 呼叫状态包括 DAILTONE、 RINGING 和 CONNECTED 等。 在这几个状态中, CONNECTED 状态尤为重要,因为一旦呼叫转换到这种状态,数据就可以通过线路发 送出去,到达信宿方。 已经拆接的呼叫和还没有开始的呼叫所处的状态都是 IDLE。 3 程序设计思想与流程 使用 TAPI 开发的基本思路 使用 TAPI 能够比较方便地发出一个呼叫和应答一个呼叫,它对呼叫的操作简单方便,给开发者带来了很大的方便。 总的来说使用 TAPI 开发 MODEM 呼叫控制通信程序流程如下所示: (1) 初始化 TAPI :通过调用 linelnitialize ( )函数来完成。 TAPI 通过调用这两个函数来加载 Tapi32 .dll 和有关的电话设备驱动程序,并且指定检测线路设备的状态和事 件的回调函数。 (2) 协商 TAPI 版本: IineNegotiateAPIVersion ( )函数将找出对应于用户的应用程序及线路设备服务者通用的 TAPI 的最高版本。 (3) 获取线路。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。