一、 简 介:
---- 随 着Win 操 作 系 统 的 普 及, 计 算 机 之 间 的 通 信 已 经 成 为 大 多 数 应 用 程 序 开 发 的 要 求, 这 其 中 的 主 要 原 因 是Win95 不 仅 仅 能 够 支 持 大 多 数 硬 件, 而 且 为 硬 件 的 操 作 提 供 了 方 便 的 编 程 接 口(API),Win 的 应 用 程 序 接 口(API) 提 供 的 通 信 手 段 大 致 分 为 以 下 几 类: 1 基 于TCP/IP 协 议 的Winsock API, 可 实 现 局 域 网 上 或 互 联 网 上 的 微 机 通 信; 2 基 于 进 程 之 间 的 通 信 技 术: 动 态 数 据 交 换( D D E); 3 基 于 直 接 电 缆 连 接 的 通 信 技 术, 可 直 接 操 作 串 行 口、 并 行 口 以 及 远 红 外 线 接 口; 4 基 于 电 话 线 路 的 通 信 应 用 程 序 接 口( T A P I/Telephony API), 可 方 便 地 控 制调 制 解 调 器; 从 目 前 的 发 展 状 况 看 来, 调 制 解 调 器 已 经 成 为 远 距 离 通 信 的 一 种 重 要 工 具, 为 此Microsoft 及Intel 公 司 联 合 开 发 了TAPI 这 样 一 个 编 程 接 口, 而 且, 使 用API 函 数 编 制 的 程 序 段 既 适 用 于Borland C++ 编 译 器, 同 时 也 能 插 入Visual C++ 程 序 中 编 译 运 行, 作 为Win95 的 应 用 程 序 编 制 人 员, 学 会 使 用TAPI 编 程 操 作
调 制 解 调 器 通 过 电 话 线 路 进 行 通 信 这 一 技 术 是 很 有 必 要 的。
下 面 就TAPI 编 程 进 行 讨 论:
二、 通 信 过 程 描 述
---- 1 初 始 化 线 路( 通 信 双 方 都 应 该 初 始 化 线 路)
---- 通 过 使 用lineInitialize 函 数 初 始 化TAPI.DLL 得 到TAPI 使 用 句 柄 的 指 针hTapi, 请 注 意 参 数 中 回 调 函 数 的 定 义( 所 有 提 及 函 数 的 用 法 均 可 从BC++5.0 及Visual C++5.0 的 帮 助 中 获 得); 通 过 调 用lineOpen 函 数( 用 到 参 数hTapi) 获 得 线 路 句 柄hLine; 再 利 用lineGetID( 用 到 参 数hLine) 获 取 调 制 解 调 器 句 柄hModem
---- 2 配 置 线 路( 可 选)
----
---- 调 用SetCommConfig( 用 到hModem) 改 变 调 制 解 调 器 的 设 置
---- 3 拨 号( 由 呼 叫 方 执 行)
---- 使 用lineMakeCall 函 数( 用 到hLine) 进 行 拨 号, 完 成 后 获 得 呼 叫 句 柄hCall( 呼 叫 方 的 呼 叫 句 柄)
---- 4 应 答 链 接( 由 被 呼 叫 方 执 行)
---- 被 呼 叫 的 一 方 的 回 调 函 数 得 到LINECALLSTATE_OFFERING 消 息 时, 调 用lineAnswer 函 数 实 现 自 动 应 答( 呼 叫 句 柄hCall 由 回 调 函 数 的 参 数 给 出)
---- 5 数 据 通 信( 双 方)
---- 当 回 调 函 数 收 到LINECALLSTATE_CONNECTED 消 息 后, 请 先 清 除 接 收 缓 冲 区, 可 以 使 用 函 数 为WriteFile 及ReadFile 函 数 进 行 数 据 交 换 , 注 意 参 数hFile 为 调 制 解 调 器 句 柄hModem
---- 6 挂 机( 某 一 方)
---- 通 信 完 毕 任 何 一 方 都 可 以 调 用 函 数lineDrop(hCall,NULL,0) 来 停 止 呼 叫, 该 函 数 还 发 送LINECALLSTATE_IDLE 消 息 给 回 调 函 数
---- 7 关 闭 线 路( 双 方)
---- 通 信 双 方 的 回 调 函 数 在 收 到LINECALLSTATE_IDLE 消 息 时 都 应 该 调 用 函 数lineDeallocateCall(hCall) 释 放 相 应 呼 叫 占 用 的 资 源; 当 回 调 函 数 收 到LINECALLSTATE_DISCONNECTED 消 息 时 请 使 用lineClose(hLine) 释 放 由lineOpe