• vb串口数据数据流处理 > MSComm控件在串口编程中的使用
  • MSComm控件在串口编程中的使用

    免费下载 下载该文档 文档格式:PDF   更新时间:2008-01-03   下载次数:0   点击次数:2
    文档基本属性
    文档语言:
    文档格式:pdf
    文档作者:Amy Groth
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    北京科技大学
    通信工程系
    MSComm 控件在串口编程中的使用
    MSComm 控 件 通 过 串 行 端 口 传 输 和 接 收 数 据 , 为 应 用 程 序 提 供 串 行 通 讯 功 能 . MSComm 控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的 API 函数, 而且在 VC,VB,Delphi 等语言中均可使用. Microsoft Communications Control(以下简称 MSComm)是 Microsoft 公司提供的简化 Windows 下串行通信编程的 ActiveX 控件,它为应 用程序提供了 通过串行接口收发数据的简便方法.具体的来说,它提供了两种处理通信问 题的方法:一是事件驱动(Event-driven)方法,一是查询法. 1. MSComm 控件两种处理通讯的方式 MSComm 控件提供下列两种处理通讯的方式:事件驱动方式和查询方式. 1.1 事件驱动方式 事件驱动通讯是处理串行端口交互作用的一种非常有效的方法. 在许多情况下, 在事件 发 生 时 需 要 得 到 通 知 , 例 如 , 在 串 口 接 收 缓 冲 区 中 有 字 符 , 或 者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时.在这 些情况下, 可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件. OnComm 事 件还可以检查和处理通 讯错误.所有通讯事件和通讯错误的列表,参阅 CommEvent 属性. 在编程过程中,就可以在 OnComm 事件处理函数中加入自己的处理代码.这种方法的优点 是程序响应及时,可靠性高.每个 MSComm 控件对应着一个串行端口.如果应用程序需要 访问多个串行端口,必须使 用多个 MSComm 控件. 1.2 查询方式 查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷.在程序的每 个关键功能之后, 可以通过检查 CommEvent 属性的值来查询事件和错误, 只要 MSComm 属 性值发送了变化,就表明一个通信事件或一个错误发生.如果应用程序较小 ,并且是自保 持的,这种方法可能是更可取的.例如,如果写一个简单的电话拨号程序,则没有必要对每 接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的"确定"响应. 2. MSComm 控件的常用属性 MSComm 控件有很多重要的属性,但首先必须熟悉几个属性:CommPort ——设置并 返回通讯端口号.Settings ——以字符串的形式设置并返回波特率,奇偶校验,数据位,停 止位.PortOpen—— 设置并返回通讯端口的状态.也可以打开和关闭端口.Input ——从接 收缓冲区返回和删除字符.Output—— 向传输缓冲区写一个字符串. 下面分别描述 MSComm 控件的属性: (1) CommPort 属性 void SetCommPort(short nNewValue); short GetCommPort(); (value ——整型值,说明端口号.) 该属性用于设置并返回连接的串行端口号, Windows 将会利用该串口和外界通信. 在设 计时,value 可以设置成从 1 到 16 的任何数(缺省值为 1) .但是如果用 PortOpen 属性打开 一个并不存在的端口时,MSComm 控件会产生错误 68(设备无效) . 注意:必须在打开端口之前设置 CommPort 属性. (2) Settings 属性 void SetSettings(LPCTSTR lpszNewValue); String GetSettings(); 设置并返回波特率,奇偶校验,数据位,停止位参数.当端口打开时,如果 value 非法, 则 MSComm 控件产生错误 380(非法属性值) .其中 lpszNewValue 用字符串表示, 由四个 设置值组成,有如下的组成格式:
    北京科技大学
    通信工程系
    "BBBB,P,D,S" 这里的 BBBB 为波特率,P 为奇偶校验,D 为数据位数,S 为停止位数.value 的缺省 值是:"9600,N,8,1" ,标识传输速率为 9600bit/s,无奇偶校验,8bit 数据比特,1bit 停止比 特. (3) Handshaking 属性 这一属性用于设置或者返回硬件握手协议,也就是 PC 和通信设备之间为了控制流速而 设定的内部协议. Handshake 常数值描述 : comNone 0 无握手. comXonXoff 1 XOn/Xoff 握手. comRTS 2 Request-to-send/clear-to-send 握手. comRTSXOnXOff 3 Request-to-send 和 clear-to-send 握手皆可. (4) RThreshold 属性 void SetRThreshold(short nNewValue); short GetRThreshold(); (nNewValue 整型表达式,说明在产生 OnComm 事件之前要接收的字符数. ) 在 MSComm 控件设置 CommEvent 属性为 comEvReceive 并产生 OnComm 之前,设置 并返回的要接收的字符数. 当接收字符后,若 Rthreshold 属性设置为 0(缺省值)则不产生 OnComm 事件.否则, 该属性为一阈值,党接收缓冲区内字节个数达到或超过该值之后就产生 OnComm 事件.例 如, 设置 Rthreshold 为 1, 接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事 件. (5) CTSHolding 属性 void SetCTSHolding (BOLL bNewValue); BOOL GetCTSHolding (); 确定是否可通过查询 Clear To Send (CTS) 线的状态发送数据. Clear To Send 是调制解调 器发送到相联计算机的信号,指示传输可以进行.该属性在设计时无效,在运行时为只读. Mscomm 控 件 的 CTSHolding 属 性 设 置 值 : True Clear To Send 线 为 高 电 平 . False Clear To Send 线为低电平. 如果 Clear To Send 线为低电平 (CTSHolding = False) 并且超时时,MSComm 控件设 置 CommEvent 属 性 为 comEventCTSTO (Clear To Send Timeout) 并 产 生 OnComm 事 件 . Clear To Send 线 用 于 RTS/CTS (Request To Send/Clear To Send) 硬 件 握 手 . 如 果 需 要 确 定 Clear To Send 线的状态,CTSHolding 属性给出一种手工查询的方法. 详细信息 有关握手协议,请参阅 Handshaking 属性. (6) SThreshold 属性 void SetSThreshold(short nNewValue); short GetSThreshold(); MSComm 控件设置 CommEvent 属性为 comEvSend 并产生 OnComm 事件之前, 设置并 返回传输缓冲区中允许的最小字符数. 这里的 nNewValue 为整形表达式, 代表在 OnComm 事 件产生之前在传输缓冲区中的最小字符数. 若设置 Sthreshold 属性为 0(缺省值) ,数据传输事件不会产生 OnComm 事件.若设 置 Sthreshold 属性为 1,当传输缓冲区完全空时,MSComm 控件产生 OnComm 事件. 如果 在 传 输 缓 冲 区 中 的 字 符 数 小 于 value , CommEvent 属 性 设 置 为 comEvSend , 并 产 生 OnComm 事件.comEvSend 事件仅当字符数与 Sthreshold 交叉时被激活一次.例如,如 果 Sthreshold 等于 5,仅当在输出队列中字符数从 5 降到 4 时,comEvSend 才发生.如果在 输出队列中从没有比 Sthreshold 多的字符,comEvSend 事件将绝不会发生. (7) InputMode 属性

    下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PDF格式下载
  • 您可能感兴趣的
  • vb串口接收数据并显示  vb串口接收数据  vb串口发送数据类型  vb串口通讯视频教程  vb6.0串口通信源码  vb串口发送多字节  vb串口通信教程  vb串口通信程序实例  vb串口