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

📄 ba21.htm

📁 VB教程
💻 HTM
📖 第 1 页 / 共 3 页
字号:
                    1.在 主 窗 口 上 设 一 个 多 行 显 示 的 文 本 框, 用 来 显示 接 收 到 的 所 有 文 本 
                    类 型 信 息。 <br>
                    2.建 立&lt; 收 件 箱 &gt; 。 实 际 上 是 一 个 数 据 库 中 的 一 个表. 包 含 收 件 
                    日 期, 文 件 名, 文 件 长 度, 序 号 等<br>
                    字 段。 <br>
                    3.利 用 事 件 触 发 机 制 来 执 行 接 收 数 据 的 过 程。 即编 写 mscomm1 控 件 的OnCOMM 
                    事 件 的 处 理 程 序。 <br>
                    4.按 以 下 方 法 来 改 变 输 入 模 式 属 性(InputMode) 的值: 通 常 使InputMode 
                    属 性 为 文 本 模 式。 当 发 现 接<br>
                    收 到 的 字 符 串 中 有 &quot;FILESTAR&quot; + Chr(5) + Chr(13) +Chr(10), 
                    按 本 软 件 规 定 表 示 传 送 的 文 件 内 容 将 开 始, 则 将InputMode 属 性 改 为 
                    二 进 制 模 式。 当 文 件内 容 接 收 完( 由 接 收 的 字 节 数 判 断) 再 将 InputMode 
                    属 性 改 为 文 本 模 式。 <br>
                    5.利 用 本 软 件 设 计 的 标 志 字 符 串( 见 七) 来 控 制进 程, 在 发 送 及 接 收 程 
                    序 中 均 使 用。 <br>
                    <br>
                       ( 二) MSCOMM1 控 件 的 OnCOMM 事 件 的 的 处 理 程 序 <br>
                    <br>
                    <br>
                    Private Static Sub MSComm1_OnComm() <br>
                    Select Case MSComm1.CommEvent<br>
                    Case comEvReceive <br>
                    '接收缓冲区收到Rthreshold个字符时触发<br>
                    Dim VARC As Variant<br>
                    Dim N As Long<br>
                    Dim SJARR() As Byte<br>
                    '<br>
                    N = MSComm1.InBufferCount '接收缓冲区字符总数<br>
                    If MSComm1.InputMode = 0 Then<br>
                    '当输入模式为文本模式时,将收到的数据放到字符串变量。<br>
                    MSComm1.InputLen = 0<br>
                    VARC = Space(N)<br>
                    VARC = MSComm1.Input <br>
                    Else<br>
                    '当输入模式为二进制模式时,将收到的数据放到字节数组。<br>
                    ReDim SJARR(1 To N)<br>
                    VARC = ARR<br>
                    MSComm1.InputLen = N<br>
                    VARC = MSComm1.Input<br>
                    End If<br>
                    ShowDATA TextTerm, N, VARC <br>
                    '调接收数据处理过程Showdata<br>
                    End Select<br>
                    End Sub<br>
                    <br>
                    (三)接收数据处理过程 ShowData<br>
                    <br>
                    Public Static Sub ShowData(Term As Control, _<br>
                    N As Long, DATA As Variant)<br>
                    '参数:Term (主窗体上的文本框,用于显示接受数据)<br>
                    ' N 为本次接收到的字节数<br>
                    ' DATA (接收到的数据.Variant型 )<br>
                    (变量定义部分:略)<br>
                    '(一)非文件传输情形(接收的是字符串)<br>
                    If not mscomm1.InputMode= 0 Then<br>
                    GoTo L2<br>
                    End If<br>
                    '(1)把新接收的字符数据放到文本框TERM末尾<br>
                    Term.SelStart = Len(Term.Text)<br>
                    Term.SelLength = 0<br>
                    Term.SelText = DATA <br>
                    '(2)未找到文件传输开始标志就结束此过程  <br>
                    W_FILESTAR = InStr(1, Term.Text, S_FILESTAR, 0)<br>
                    If W_FILESTAR = 0 Then<br>
                    Exit Sub<br>
                    End If<br>
                    '(3)以下为找到文件传输开始标志的情况<br>
                    '(3-1)找文件名及文件长度<br>
                    W_FILENAME = InStr(1, Term.Text, S_FILENAME, 0)<br>
                    W_FILELEN = InStr(1, Term.Text, S_FILELEN, 0)<br>
                    FN = Mid(Term.Text, W_FILENAME + 11, (W_FILELEN <br>
                    - W_FILENAME - 13))<br>
                    ' (3-2)打开接收文件<br>
                    hJS = FreeFile<br>
                    JSFN = Pathc + &quot;\SJFILE\S&quot; + Trim(Str(NO)) + &quot;_&quot; 
                    + FN<br>
                    Open JSFN For Binary Access Write As hJS<br>
                    '(3-3)收件箱增加新记录 <br>
                    W_FILENAME = InStr(1, Term.Text, S_FILENAME, 0)<br>
                    W_FILELEN = InStr(1, Term.Text, S_FILELEN, 0)<br>
                    FN = Mid(Term.Text, W_FILENAME + 11, (W_FILELEN - 1) -<br>
                    (W_FILENAME + 11))<br>
                    FL = Mid(Term.Text, W_FILELEN + 11, W_FILESTAR <br>
                    - (W_FILELEN + 10))<br>
                    SENDLEN = Val(FL)<br>
                    '应收总字节数SENDLEN<br>
                    '以下SJRS是已打开的收件箱对应的记录集型变量<br>
                    SJRS.AddNew '增加一新记录<br>
                    SJRS!SJRQ = Now '写入收件日期<br>
                    SJRS!SJFILE = FN '写入收件的文件名<br>
                    SJRS!SJLEN = Val(FL) '写入收件的长度<br>
                    SJRS!FILENO = NO '写入收件的序号<br>
                    '(3-4)显示文件接收窗口<br>
                    JSLEN = 0<br>
                    TXINPUT.Show<br>
                    '(3-5)改变输入模式属性 InputMode为二进制模式<br>
                    TXRJ.MSComm1.InputMode = comInputModeBinary<br>
                    '(7)等待几秒,显示 8 7 6 5 4 3 2 1 0<br>
                    Exit Sub<br>
                    '(二)文件传输状态处理      <br>
                    L2:<br>
                    ReDim JSARR(0 To N - 1)<br>
                    JSARR = DATA '将字节流放入字节型数组<br>
                    '将字节型数组中的数据写入已打开的接收文件<br>
                    Put hJS, , JSARR<br>
                    JSLEN=JSLEN+N '本次已累计收到的字节数<br>
                    '已收字节数与文件总长相比较<br>
                    If JSLEN &lt; SENDLEN Then<br>
                    Exit Sub<br>
                    End If<br>
                    '转此为文件传输已结束  --<br>
                    '关闭接收文件<br>
                    Close hJS<br>
                    '提交收件箱表的新增记录<br>
                    SJRS.Update<br>
                    '修改文本显示<br>
                    W_FILENAME = InStr(1, Term.Text, S_FILENAME, 0)<br>
                    Term.SelStart = W_FILENAME - 1<br>
                    Term.SelLength = Len(Term.Text)<br>
                    Term.SelText = &quot;&quot;<br>
                    FL = &quot;文件&quot; + FN + &quot;接收结束&quot; + Chr(13) + Chr(10)<br>
                    Term.Text = Term.Text &amp; FL<br>
                    '关闭收件窗口<br>
                    Unload TXINPUT<br>
                    '改变 InputMode属性为文本模式<br>
                    TXRJ.MSComm1.InputMode = 0 <br>
                    Exit Sub<br>
                    End Sub<br>
                    ~~~~~~~~~~~~<br>
                    <br>
                       以 上 以 发 送 和 接 收 文 件 为 例 介 绍 了 我 们 是 如 何使 用VB5.0 及MSCOMM 
                    控 件 来 开 发 自 己 的 的 通 信 软 件 的。掌 握 了 以 上 基 本 技 术, 就 可 以 稍 加 改 
                    变 来 开 发 自 己的 各 种 专 用 通 信 软 件。 例 如 发 送 数 据 库 的 一 条 记 录, 并 使 
                    接 收 方 把 接 收 到 的 数 据 也 放 在 数 据 库 中。也 可 以 进 行 数 据 加 密/ 解 密 传 
                    输 等。 总 之, 学 习 怎 样使 用VB5.0 及MSCOMM 控 件 来 开 发 自 己 的 的 通 信 软 
                    件 是 十分 有 用 的。 <br>
                    <br>
                       附 注: 本 软 件 运 行 环 境 <br>
                    <br>
                       1、 硬 件 环 境:CPU 为486 以 上,16MB 以 上 内 存。 <br>
                       2、 软 件 环 境:WIN95 或WIN98 或WINDOWS ─ ─NT。 <br>
                       VISUAL BASIC 5.0</font></p>
                  <p class="sfont"> 转载自中国程序员网站</font> 
                  </div>
              </td>
            </tr>
          </center>
          <tr> 
            <td width="100%" class="unnamed1"> 
              <p align=right><a href="ba20.htm">(上一页)</a>---<a href="ba22.htm">(下一页)</a></p>
            </td>
          </tr>
          <tr> 
            <td width="100%" class="unnamed1"> 
               
    </div>
      </td>
  </tr>
  <!--msnavigation--></tbody>
</table>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>

⌨️ 快捷键说明

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