VB_MSCOMM控件简介_第1页
VB_MSCOMM控件简介_第2页
VB_MSCOMM控件简介_第3页
VB_MSCOMM控件简介_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VB 通 信 控 件Mscomm Mscomm 控 件 提 供 了 功 能 完 善 的 串 口 数 据 的 发 送 和 接 收 功 能,Mscomm 控 件 具 有 两 种 处 理 方 式: 1 事 件 驱 动 方 式: 由Mscomm 控 件 的OnComm 事 件 捕 获 并 处 理 通 信 错 误 及 事 件;2 查 询 方 式: 通 过 检 查CommEvent 属 性 的 值 来 判 断 事 件 和 错 误。 Mscomm 控 件 的 通 信 功 能 实 现, 实 际 上 是 调 用 了API 函 数, 而API 函 数 是 由Comm.drv 解 释 并 传 给 设 备 驱 动 程 序 执 行 的, 对 于VB 程 序 开 发 者 只 需 知 道Mscomm 控 件 的 属 性 和 事 件 的 用 法 即 可 以 实 现 串 口 的 操 作。 以 下 是Mscomm 控 件 的 主 要 属 性 和 方 法: 1)CommPort: 设 置 或 返 回 串 行 端 口 号, 其 取 值 范 围 为1 99, 缺 省 为1。 2) Setting 设 置 或 返 回 串 行 端 口 的 波 特 率、 奇 偶 校 验 位、 数 据 位 数、 停 止 位。 如:Mscomm.Setting=“9600,N,8,1”。 3)PortOpen: 打 开 或 关 闭 串 行 端 口, 格 式 为:Mscomm.PortOpen=TRUE|FALSE。 4) InBufferSize: 设 置 或 返 回 接 收 缓 冲 区 的 大 小, 缺 省 为1024 字 节。 5) InBufferCount: 返 回 接 收 缓 冲 区 内 的 等 待 读 取 的 字 节 个 数, 可 通 过 设 置 该 属 性 为0 来 清 除 接 收 缓 冲 区。 6) RThreshold: 该 属 性 为 一 阀 值, 它 确 定 当 接 收 缓 冲 区 内 字 节 个 数 达 到 或 超 过 该 值 后 就 产 生 代 码 为MSCOMM_EV_RECEIVE 的OnComm 事 件。 7) InputLen: 设 置 或 返 回 接 收 缓 冲 区 内 用Input 读 入 的 个 数。 若 取0, 则INPUT 读 取 整 个 缓 冲 区 的 内 容。 8) Input: 该 属 性 表 示 从 接 收 缓 冲 区 移 走 一 串 字 符。 9) OutBufferSize: 设 置 或 返 回 发 送 缓 冲 区, 缺 省 为512 字 节。 10) OutBufferCounter: 返 回 发 送 缓 冲 区 内 等 待 发 送 的 字 符 数, 可 用 来 清 空 缓 冲 区。 11) Output: 向 发 送 缓 冲 区 传 送 一 字 符 串。 12) EOFEnable: 若 置TRUE, 则 当 输 入 中 出 现EOF, 就 停 止 输 入 并 产 生OnComm 事 件。 如 果 在 通 信 过 程 中 发 生 错 误 或 事 件, 就 会 引 发OnComm 事 件 并 且 改 变 属 性 值, 由CommEvent 属 性 代 码 反 映 错 误 类 型, 在 通 信 程 序 的 设 计 中 可 根 据 该 属 性 值 来 执 行 不 同 的 操 作, 以 下 是 部 分 属 性 常 数 值 及 其 含 义: 1)ComEvSend: 其 值 为1, 发 送 缓 冲 区 的 内 容 少 于SThreshold 指 定 的 值。 2) ComEvReceive: 其 值 为2, 接 收 缓 冲 区 内 字 符 数 达 到 RThreshold 值, 该 事 件 在 缓 冲 区 中 数 据 被 移 走 前 将 持 续 产 生。 3) ComEventFrame: 其 值 为1004, 硬 件 检 测 到 帧 错 误。 4) ComEventRxOver: 其 值 为1008, 接 收 缓 冲 区 溢 出。 5) ComEventTxFull: 其 值 为1010, 发 送 缓 冲 区 溢 出。 6) ComEventRxParity: 其 值 为1009, 奇 偶 校 验。 7) ComEvEOF: 其 值 为7, 接 收 数 据 中 出 现 文 件 结 束(ASCII 码 为 26) 字 符。 程 序 样 例 采 用Mscomm 控 件 实 现 串 口 通 信 时, 首 先 添 加 一Mscomm 控 件 到 窗 体 中, 该 控 件 一 般 不 在 通 用 工 具 窗 口 中, 而 是 需 通 过 菜 单 项“ 工 程(P) 部 件(O)” 进 入 选 择 窗 口, 在 控 件tab 页 中 选 取Microsoft Comm Control 5.0 , 此 时 工 具 窗 口 中 出 现Mscomm 图 标, 即 可 被 使 用。 以 下 是 事 件 驱 动 方 式 的 接 收 程 序 的 主 要 部 分: Private Sub getdatafromserial_Click() CommonDialog1.InitDir = “c:temp CommonDialog1.ShowSave mainfrm.MSComm1.CommPort=1 hfile = FreeFile 打 开 存 储 接 收 数 据 的 文 件 Open CommonDialog1.filename For Output As hfile 设 接 收 缓 冲 区 的 大 小, 可 按 量 确 定 mainfrm.MSComm1.InBufferSize = 4096 If Not mainfrm.MSComm1.PortOpen Then 打 开 串 口 - mainfrm.MSComm1.PortOpen = True End If If Err Then MsgBox “Communcation port cannot be opened! 清 接 收 缓 冲 区 mainfrm.MSComm1.InBufferCount = 0 设 一 次 读 入 的 长 度, 可 根 据 数 据 格 式 设 置 mainfrm.MSComm1.InputLen = 77 设 置 接 收 事 件 触 发 的 阀 值 mainfrm.MSComm1.RThreshold = 77 counter = Timer 10 Do If Timer counter Then mainfrm.Label1.Caption = “ 正 在 通 信. mainfrm.Label1.Refresh counter = Timer 10 End If DoEvents Loop End Sub 以 下 为 事 件 处 理 子 程 序,flag 为 一 静 态 变 量 记 录 读 取 次 数, 以 便 改 变 接 收 数 据 的 长 度, 读 者 可 根 据 实 际 需 要 添 加 其 它 处 理 内 容: Private Sub MSComm1_OnComm()Select Case MSComm1.CommEventCase comEvReceiveIf flag 246 ThenMSComm1.InputLen = 0: MSComm1.RThreshold = 32End Ifbuffer = MSComm1.Inputtemp = bufferPrint hfile, tempcounter = Timer 10Do While Timer counterDo EventsLoopflag = flag 1Case comEvEOFEVMsg = “ 检 测 到 文 件 结 尾!Case comFrameERMsg = “ 帧 出 错!Case comRxParityERMsg = “ 奇 偶 错!End SelectIf Len(EVMsg ) ThenText1.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论