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

下载本文档

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

文档简介

1、.VB 通 信 控 件 MscommMscomm 控 件 提 供 了 功 能 完 善 的 串 口 数 据 的 发 送 和 接 收功 能, Mscomm 控 件 具 有 两 种 处 理 方 式 : 1 事 件 驱 动 方 式: 由Mscomm 控 件 的 OnComm 事 件 捕 获 并 处 理 通 信 错 误 及 事 件; 2 查 询 方 式 : 通 过 检 查 CommEvent 属 性 的 值 来 判 断 事 件 和 错 误。Mscomm 控 件 的 通 信 功 能 实 现, 实 际 上 是 调 用 了 API 函 数,而 API 函 数 是 由 Comm.drv 解 释 并 传 给 设

2、备 驱 动 程 序 执 行 的,对 于 VB 程 序 开 发 者 只 需 知 道 Mscomm 控 件 的 属 性 和 事 件 的用法即可以实现串口的操作。以 下 是 Mscomm控 件 的 主 要 属 性 和 方 法 :1)CommPort: 设 置 或 返 回 串 行 端 口 号, 其 取 值 范 围 为 1 99,缺省为1。2) Setting 设 置 或 返 回 串 行 端 口 的 波 特 率、 奇 偶 校 验 位、 数据 位 数、 停 止 位。 如 :Mscomm.Setting= “9600,N ,8, 1”。3)PortOpen: 打 开 或 关 闭 串 行 端 口, 格 式为

3、:Mscomm.PortOpen=TRUE|FALSE 。4) InBufferSize: 设 置 或 返 回 接 收 缓 冲 区 的 大 小, 缺 省 为 1024 字 节。5) InBufferCount: 返 回 接 收 缓 冲 区 内 的 等 待 读 取 的 字 节 个数,可通过设置该属性为0来清除接收缓冲区。6) RThreshold: 该 属 性 为 一 阀 值, 它 确 定 当 接 收 缓 冲 区 内 字节个数达到或超过该值后就产生代码为MSCOMM_EV_RECEIVE的 OnComm事 件。7) InputLen:设 置 或 返 回 接 收 缓 冲 区 内 用 Input 读

4、 入 的 个 数。若取0,则INPUT读取整个缓冲区的内容。8) Input: 该 属 性 表 示 从 接 收 缓 冲 区 移 走 一 串 字 符。9) OutBufferSize: 设 置 或 返 回 发 送 缓 冲 区, 缺 省 为 512 字 节。10) OutBufferCounter: 返 回 发 送 缓 冲 区 内 等 待 发 送 的 字 符 数,可用来清空缓冲区。11) Output: 向 发 送 缓 冲 区 传 送 一 字 符 串。12) EOFEnable:若 置 TRUE ,则 当 输 入 中 出 现 EOF ,就 停 止 输 入并 产 生 OnComm事 件。如 果 在

5、通 信 过 程 中 发 生 错 误 或 事 件,就 会 引 发 OnComm事件 并 且 改 变 属 性 值, 由 CommEvent属 性 代 码 反 映 错 误 类 型,在通信程序的设计中可根据该属性值来执行不同的操作,以下是部分属性常数值及其含义:.1)ComEvSend: 其 值 为 1, 发 送 缓 冲 区 的 内 容 少 于 SThreshold 指定的值。2) ComEvReceive: 其 值 为 2, 接 收 缓 冲 区 内 字 符 数 达 到RThreshold值,该 事 件 在 缓 冲 区 中 数 据 被 移 走 前 将 持 续 产生。3)ComEventFrame:其值

6、为1004,硬件检测到帧错误。4)ComEventRxOver:其值为1008,接收缓冲区溢出。5)ComEventTxFull:其值为1010,发送缓冲区溢出。6) ComEventRxParity: 其 值 为 1009 , 奇 偶 校 验。7) ComEvEOF: 其 值 为 7, 接 收 数 据 中 出 现 文 件 结 束( ASCII 码为26)字符。程序样例采 用 Mscomm 控 件 实 现 串 口 通 信 时, 首 先 添 加 一 Mscomm 控件到窗体中,该控件一般不在通用工具窗口中,而是需通过 菜 单 项 “工 程( P) 部 件 (O) ”进 入 选 择 窗 口, 在

7、控 件 tab 页 中选 取 Microsoft Comm Control 5.0 , 此 时 工 具 窗 口 中 出 现 Mscomm 图标,即可被使用。以下是事件驱动方式的接收程序的主要部分:Private Sub getdatafromserial_Click()CommonDialog1.InitDir =“temp"c:CommonDialog1.ShowSavemainfrm.MSComm1.CommPort=1hfile = FreeFile打开存储接收数据的文件Open CommonDialog1.filename For Output As hfile 设接收缓冲区

8、的大小,可按量确定 mainfrm.MSComm1.InBufferSize = 4096If Not mainfrm.MSComm1.PortOpen Then打 开 串 口- mainfrm.MSComm1.PortOpen = True End IfIf Err ThenMsgBox “ Communcation port cannot be opened!"清接收缓冲区mainfrm.MSComm1.InBufferCount = 0设一次读入的长度,可根据数据格式设置mainfrm.MSComm1.InputLen = 77.设置接收事件触发的阀值mainfrm.MSCom

9、m1.RThreshold = 77counter = Timer 10DoIf Timer > counter Thenmainfrm.Label1.Caption =正“ 在 通 信."mainfrm.Label1.Refreshcounter = Timer 10End IfDoEventsLoopEnd Sub以 下 为 事 件 处 理 子 程 序, flag 为 一 静 态 变 量 记 录 读 取 次数,以便改变接收数据的长度,读者可根据实际需要添加其它处理内容:Private Sub MSComm1_OnComm()Select Case MSComm1.CommE

10、ventCase comEvReceiveIf flag > 246 ThenMSComm1.InputLen = 0: MSComm1.RThreshold = 32End Ifbuffer = MSComm1.Inputtemp = bufferPrinthfile , tempcounter = Timer 10Do While Timer > counterDo EventsLoopflag = flag 1Case comEvEOFEVMsg = “检 测 到 文 件 结 尾 !"Case comFrameERMsg = “帧 出 错!"Case comRxParityERMsg = “奇 偶 错!"End Select.If Len(EVMsg) ThenText1.Text =“ Status:" EVMsgEl

温馨提示

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

评论

0/150

提交评论