⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ba21.htm

📁 VB教程
💻 HTM
📖 第 1 页 / 共 3 页
字号:
                    属性 为 TRUE) 时 再 向MODEM 发 送 数 据。 <br>
                    <br>
                       ( 六) 事 件 <br>
                       MSCOMM 控 件 把 实 际 上 是 十 七 个 事 件 归 并 为 一 个事 件 OnComm, 用 属 
                    性 CommEvent 的 十 七 个 值 来 区 分 不 同<br>
                    的 触 发 时 机。 主 要 有 以 下 几 个: <br>
                    <br>
                       (1)CommEvent=1 时: 传 输 缓 冲 区 中 的 字 符 个 数 已少 于 Sthreshold( 
                    可 设 置 的 属 性 值) 个. <br>
                       (2)CommEvent=2 时: 接 收 缓 冲 区 中 收 到 hreshold( 可设 置 的 属 性 
                    值) 个 个 字 符. 利 用 此 事 件 可 编 写 接 收 数据 的 过 程。 <br>
                       (3)CommEvent=3 时: CTS 线 发 生 变 化 . <br>
                       (4)CommEvent=4 时: DSR 线 发 生 变 化 . <br>
                       (5)CommEvent=5 时: CD 线 发 生 变 化 . <br>
                       (6)CommEvent=6 时: 检 测 到 振 铃 信 号 . <br>
                       另 外 十 个 情 况 是 可 能 发 生 的 各 种 通 信 错 误 时 触发。 可 参 看 有 关 资 料. 
                    <br>
                    <br>
                    四 通 信 软 件 参 数 设 置 <br>
                    <br>
                       在 自 己 编 写 的 通 信 软 件 中, 应 包 含 进 行 通 信 参数 设 置 的 功 能。 主 要 
                    就 是 可 以 设 置 端 口 号, 波 特 率, 数 据 位, 停 止 位, 奇 偶 校 验 位 及 设 置 硬 
                    件 握 手协 议。 <br>
                    <br>
                       可 在 一 个 窗 体 上 用 下 拉 列 表 框, 选 择 钮 等 由 用户 来 选 择。《 保 存》 时, 
                    利 用VB5.0 的 Settings 函 数 将 这些 参 数 存 储 在WINDOWS 95 的 系 统 注 册 
                    表 中。 每 次 运 行该 软 件 时, 先 用 GetSettings 函 数 调 出 这 些 参 数, 并 对Commport,Settings,Handshaking 
                    等 属 性 赋 值, 来 进 行 通 信 参数 设 置。 <br>
                    <br>
                    五 打 开 通 信 端 口 <br>
                    <br>
                       在 编 写 的 通 信 软 件 的 主 窗 体 上, 可 以 安 排 一 个打 开/ 关 闭 端 口 的 菜 
                    单 项 或 图 形 按 钮。 在 打 开 端 口 时, 可 向 MODEM 发 出 命 令, 进 行 MODEM 参 
                    数 设 置。 可 以象 下 面 这 样 来 编 程: <br>
                    <br>
                       '(1) 打 开/ 关 闭 端 口 <br>
                    <br>
                    MSComm1.PORTOPEN = Not MSComm1.PORTOPEN<br>
                    '(2)向MODEM发出DTR(已准备好)信号  -<br>
                    OpenFlag = MSComm1.PORTOPEN<br>
                    If OpenFlag Then<br>
                    MSComm1.DTREnable = True<br>
                    Else<br>
                    MSComm1.DTREnable = False<br>
                    End If<br>
                    '(3)打开时向MODEM发出一些命令来设置参数<br>
                    'S0=n(n &gt;=1)自动应答.n为响铃次数<br>
                    'E0/E1关闭/打开命令字符回应<br>
                    'Q0/Q1 modem返回/不返回结果码<br>
                    'M0/M1关闭/打开MODEM扬声器.<br>
                    If OpenFlag Then<br>
                    L1:<br>
                    If MSComm1.CTSHolding Then<br>
                    Outstring = &quot;AT S0=1 E1 Q0 M0 &quot; + Chr(13)<br>
                    MSComm1.Output = Outstring<br>
                    GoTo LL<br>
                    Else<br>
                    GoTo L1<br>
                    End If<br>
                    End If<br>
                    '  -<br>
                    LL: ...<br>
                    <br>
                       也 可 以 安 排 一 些 可 变 换 颜 色 的 指 示 灯 来 代 表 端口 打 开 状 态,CD 线 状 
                    态 等, 这 样 更 形 象 生 动。 <br>
                    <br>
                    六 拨 号 <br>
                    <br>
                       进 行 拨 号 需 向 MODEM 发 出 ATDT 命 令。 可 用 如 下 语句: <br>
                    <br>
                    cc = &quot;ATDT &quot; + Trim(Text1.Text) + Chr(13)<br>
                    MSComm1.Output = cc<br>
                    <br>
                       其 中 TEXT1 是 窗 体 上 让 用 户 输 入 电 话 号 的 文 本 框。 <br>
                    <br>
                       为 了 使 程 序 功 能 更 强 一 些, 可 以 增 加&lt; 电 话 号 码簿 管 理 &gt;, 可 
                    以 增 加, 修 改, 删 除, 查 询 电 话 号 码。 这与 一 般 的 数 据 库 应 用 程 序 是 一 样 
                    的。 <br>
                    <br>
                    七 发 送 文 件 <br>
                    <br>
                       拨 号 以 后, 程 序 要 循 环 等 待 并 随 时 判 定 是 否 接通。 如 果 MODEM 向 PC 
                    的 回 应 字 符 串 中 含 有 &quot;Connect &quot; 或CDHolding 属 性 值 变 
                    为 True ( 检 测 出 载 波), 则 表 示 已 与远 方MODEM 连 机 了。 这 时 就 可 以 发 
                    送 文 件 了。 <br>
                    <br>
                       发 送 文 件 开 始 以 前, 可 打 开 一 个 显 示 发 送 信 息的 窗 口。 可 在 此 窗 口 
                    上 显 示 要 发 送 的 文 件 名, 总 长<br>
                    度, 已 发 送 长 度 等 信 息。 <br>
                    <br>
                       设 置 以 下 全 局 变 量, 存 放 标 志 字 符 串, 在 发 送及 接 收 程 序 中 均 使 用。 
                    <br>
                    <br>
                    S_FILENAME = &quot;FILENAME&quot; + Chr(5) + Chr(13) + Chr(10) 
                    <br>
                    S_FILELEN = &quot;FILELEN &quot; + Chr(5) + Chr(13) + Chr(10) 
                    <br>
                    S_FILESTAR = &quot;FILESTAR&quot; + Chr(5) + Chr(13) + Chr(10) 
                    <br>
                    <br>
                    (1)打开文件:<br>
                    要想把一个文件的全部字节都传送,需以二进制方式打开文件。可用如下语句<br>
                    '得到下一个可用的文件号,放在整型变量 hSend<br>
                    hSend = FreeFile<br>
                    '打开文件<br>
                    Open SENDFN For Binary Access Read As hSend<br>
                    LF&amp; = LOF(hSend) '文件长度为 LF&amp;<br>
                    其中变量 SENDFN中含有由用户选定的要传送的文件名。<br>
                    <br>
                    (2)发送文件名,文件长度,文件开始等信息字符串。<br>
                    例如,我们设计成如下:<br>
                    DIM VARC AS VARIANT<br>
                    VARC = S_FILENAME<br>
                    MSComm1.Output = VARC '发出 &quot;FILENAME&quot;提示字串<br>
                    VARC = SENDFN + Chr(13) + Chr(10)<br>
                    TXRJ.MSComm1.Output = VARC '发出文件名<br>
                    VARC = S_FILELEN<br>
                    MSComm1.Output = VARC '发出 &quot;FILELEN&quot;提示字串<br>
                    VARC = Trim(Str(LF&amp;)) + Chr(13) + Chr(10)<br>
                    MSComm1.Output = VARC '发出文件宽度<br>
                    VARC = S_FILESTAR<br>
                    '发出 &quot;FILESTART&quot;提示字串,表示下面文件开始。<br>
                    MSComm1.Output = VARC<br>
                    然后程序倒计时,在发送信息窗口显示 8,7,6,5,4,3,2,1,0 .<br>
                    <br>
                    (3)发送文件内容<br>
                    <br>
                    用 GET语句从文件读字节,用 OUTPUT属性发送。<br>
                    DIM SENDARR() AS BYTE '定义字节型数组<br>
                    Sum = 0 '记录累计发送的字节数<br>
                    BSIZE = MSComm1.OutBufferSize '每次发送的块大小 <br>
                    ReDim SENDARR(1 To BSIZE)<br>
                    '循环发送<br>
                    Do While Sum &lt; LF&amp; <br>
                    If LF&amp; - Loc(hSend) &lt; BSIZE Then<br>
                    BSIZE = LF&amp; - Loc(hSend) <br>
                    ReDim SENDARR(1 To BSIZE)<br>
                    End If<br>
                    Get hSend, , SENDARR '从文件取字节放入字节数组<br>
                    SENDVAR = SENDARR '转放到 Variant型变量<br>
                    '当CTS线及CD线为高电平时才可发送,否则需等待。<br>
                    T = Timer + 60<br>
                    L:<br>
                    If MSComm1.CTSHolding And MSComm1.CDHolding Then <br>
                    MSComm1.Output = SENDVAR '发送<br>
                    Sum = Sum + BSIZE '累加计数<br>
                    Label6.Caption = Str(Sum) '显示在发送窗口上<br>
                    Else<br>
                    If Timer &lt; T Then<br>
                    GoTo L '循环等待<br>
                    Else<br>
                    GoTo CLOSEFILE '等待时间超过 60秒则退出<br>
                    End If<br>
                    End If<br>
                    '等待系统处理完<br>
                    Do<br>
                    RET = DoEvents()<br>
                    Loop Until MSComm1.OutBufferCount = 0<br>
                    Loop '循环语句结尾<br>
                    <br>
                       文 件 发 送 完 毕 以 后, 关 闭 该 文 件。 并 关 闭 发 送 文件 信 息 窗 口。 <br>
                    <br>
                    八 接 收 MODEM 回 送 的 信 息 及 接 收 文 件 <br>
                    <br>
                       ( 一) 设 计 要 点: 我 们 是 如 下 进 行 设 计 的。 <br>
                    <br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -