vb MSCOMM控件用法

合集下载

VB通讯控件说明

VB通讯控件说明

一.引用串行通讯组件(MSComm 控件)包含在专业版及企业版中.MSComm 组件并不是主动出现在工具箱的,当我们需要用到它时,做如下步骤:1.在工具箱上右键单击,在弹出的对话框中选择"部件..."选项2.在"控件"标签中,找到"Microsoft Comm Control 6.0"选项,并勾选它,然后按"确定"3.这时,工具箱中会出现一个"电话机"的图标.已经OK啦.(我用的是简体中文版的.)二.属性常用属性:说明CommPort:设置通讯端口号(1-16).例:mPort=1 '指定使用COM1作通讯传输.Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位.格式为"BBBB,P,D,S".默认值为"9600,N,8,1"BBBB为联机速度,P为同位检查方式,None无(默认值),Even偶数,Mark记号,Odd奇数,Space空白.D为数据位数,4-8.S为停止位,1,1.5,3."9600,N,8,1"的意思是"所使用的通讯端口是以每秒9600 Bit的速度作传输,不作同位的检查,每个元是8个Bit,而停止位是1个Bit"注:四项的顺序是不可前后对调的,其中的字母N可以是大写,也可以是小写.HandShaking:设置通讯双方的交握协议,即流量控制.0-comNone:(默认值)没有交握协议.1-comXOnXOff:(Xon/Xoff)交握协议.2-comRTS:RTS/CTS(Request To Send/CLear To Send)交握协议.3-comRTSXonXoff:Request To Send和Xon/Xoff交握协议.Output: 将一个字符串写入传输缓冲区.例:MSComm1.Output="ABCDE",此即将ABCDE 5个字符通过RS232传送出去.Input: 从对方所传至输入缓冲区的字符读进程序中,并清除缓冲区中已被读取的字符.这是一种FIFO(first in first out)的机制.例:Buffer$=MSComm1.Input.将输入缓冲区的字符读入Buffer字符串变量中.InputLen: 指定由串行端口读入的字符串长度.(每次读取input时,读取多少字节)MSComm1.InputLen=10 '当程序执行Input指令时,只会读取10个字符.假设在输入缓冲区中有55个字节,则每次Input指令会读取10个字节进来,因此要全部读完所有的数据需要执行6次Input指令.RThreshold: 接受的字符数.RTHreshold=1----表示当有一个字节到达接收缓冲区时,响应OnComm事件。

VB中MSComm控件的设置与应用

VB中MSComm控件的设置与应用
修改稿收到日期: <!!A?!@?<<
+ )* 中 ,-.&// 控 件 的 常 用 属 性
( +) .&//0&12 。 设 置 或 返 回 通 讯 端 口 号 。 格 式 为 : [ 4 0&1256/781 ]。在 设 计 时 , ,-.&//3.&//0&12 0&1256/781 可 以 设 置 成 从 + 到 +9 的 任 何 数 ( 缺 省 值 为 + )。 但 是 如 果 用 0&12:;8$ 属 性 打 开 一 个 并 不 存 在 的 端 口 时 , 就 会 产 生 错 误 , 还 需 注 意 的 是 必 须 在 打 开 端 口 之 前 设 置 .&//0&12 属 性 。例 如 : 即 设 置 当 前 端 口 为 .:, ,-.&//3.&//0&12 4 < ,
< 口。
( <) 以字符串形式设置或返回波特率、 奇偶校 -822#$=( 。 验、数据位和停止位。格式为: ,-.&//3-822#$=([ 40>1>-? 第一部分是 21#$= ]。0>1>-21#$= 是 一 个 包 含 四 部 分 的 字 符 串 : 波 特 率 设 置 , 其 可 选 值 为 ++! , @!! , 9!! , +<!! , <A!! , AB!! , 一 般 选 定 C9!! ; 第二部分是奇偶 C9!! , +AA!! , +C<!! , <BB!! , 校验设置, 5 表示不校验, D 表示偶校验, : 表示奇校验, 表示空格检验, 一 般 设 定 为 5; 第三部分 , 表示符号校验, 是数据位位数设置, 其 可 选 值 为 A, 一 般 选 定 B; 第 E, 9, F, B, 四部分是停止位位数设置, 其 可 选 值 为 +, 一般选定 +3E , <,

vb串口通信控件-mscomm

vb串口通信控件-mscomm

vb串口通信控件-mscommMSComm控件提供了两种处理通信的方式:一种为事件驱动方式,该方式相当于一般程序设计中的中断方式。

当串口发生事件或错误时,MSComm控件会产生OnComm事件,用户程序可以捕获该事件进行相应处理。

本文的两个例子均采用该方式。

另一种为查询方式,在用户程序中设计定时或不定时查询 MSComm控件的某些属性是否发生变化,从而确定相应处理。

在程序空闲时间较多时可以采用该方式。

常用属性和方法利用MSComm控件实现计算机通信的关键是理解并正确设置MSComm控件众多属性和方法。

以下是MSComm控件的常用属性和方法:●Commport:设置或返回串口号。

●Settings:以字符串的形式设置或返回串口通信参数。

●Portopen:设置或返回串口状态。

●InputMode:设置或返回接收数据的类型。

●Inputlen:设置或返回一次从接收缓冲区中读取字节数。

●InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。

●InBufferCount:设置或返回接收缓冲区中等待计算机接收的字符数。

●Input:从接收缓冲区中读取数据并清空该缓冲区,该属性设计时无效,运行时只读。

●OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。

●OutBufferCount:设置或返回发送缓冲区中等待计算机发送的字符数。

●Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。

●Rthreshold:该属性为一阀值。

当接收缓冲区中字符数达到该值时,MSComm控件设置Commevent属性为ComEvReceive,并产生OnComm事件。

用户可在OnComm事件处理程序中进行相应处理。

若Rthreshold属性设置为0,则不产生OnComm事件。

例如用户希望接收缓冲区中达到一个字符就接收一个字符,可将Rthreshold设置为1。

这样接收缓冲区中接收到一个字符,就产生一次OnComm事件。

MSCOMM控件在VB中发送十六进制数据的方法转

MSCOMM控件在VB中发送十六进制数据的方法转

MSCOMM控件在VB中发送十六进制数据的方法<转>一、初始化配置Private Sub Form_Load()'-------------------------------------------------------------------------------------With MSComm1If .PortOpen = True Then.PortOpen = FalseEnd If.CommPort = 4 '使用COM1.Settings = BaudRate & ",n,8,1 " '设置通信口参数.InBufferSize = 1024 '设置MSComm1接收缓冲区为1024字节.OutBufferSize = 1024 '设置MSComm1发送缓冲区为1024字节.InputMode = comInputModeBinary '设置接收数据模式为二进制形式'----------------------------------------------------------------------------------------------------- .InputLen = 0 '设置Input 一次从接收缓冲读取全部字节数.SThreshold = 0 '设置发送完所有产生OnComm事件.InBufferCount = 0 '清除接收缓冲区.OutBufferCount = 0 '清除发送缓冲区.RThreshold = 1 '设置接收一个字节产生OnComm事件' .RTSEnable = True'----------------------------------------------------------------------------------------------------- If Not .PortOpen Then '判断通信口是否打开On Error Resume Next.PortOpen = True '打开通信口If Err Then '错误处理MsgBox "串口被占用或此串口不存在!通信无效!", 16, "错误提示"Exit SubEnd IfEnd IfEnd WithEnd Sub注意:数据收发模式为 .InputMode = comInputModeBinary '设置接收数据模式为二进制形式二、发送一个字节的16进制数据Dim aa(0) As Byteaa(0) = &HAAMSComm1.Output = aa三、接收数据(事件方式)Private Sub MSComm1_OnComm()On Error Resume NextDim inData As String '串口接收的数据Dim InByte() As Byte '定义一个二进制指针放接收到的数据Dim inByte1() As ByteSelect Case mEvent '选择事件Case comEvReceive '接收到字符TimeNum = 4 '-----------------赋值计时常量InByte = MSComm1.Input '数据转移到指针' Serial_Rece_Fg = TrueDim j As LongFor j = 0 To UBound(InByte) '循环到指针上标If InByte(j) = 13 TheninData = inData & vbCr 'LfElseinData = inData & Chr(InByte(j)) '------ascii码显示处理End IfNext jTxt_Rcv.SelText = inData '将刚收到的字符串显示出来inData = ""Txt_Rcv.SelStart = Len(Txt_Rcv.Text) '光标置后Case comEventRxOver '--------------------接收缓冲区满的处理MSComm1.InBufferCount = 0MsgBox "接收缓冲区满了!" '----------发出警告End SelectEnd Sub。

自己用VB编制的上位机(MSComm控件)

自己用VB编制的上位机(MSComm控件)

自己用VB编制的上位机(MSComm控件)本人初学者,许多地方显得粗糙笨拙,但总算是成功了,不过自我感受VB真的很简单,我大致学了两三个星期就可以了。

本文只同向我一样的初学者分享一下经验,毕竟咱不是专业的。

下面开始。

上位机可方便地实现与单片机之间进行信息传递交互,能够更加容易对机械手臂进行控制,实现操作可视化,更加直观,保存重要数据等功能。

我们利用Visual Basic 6.0(以下简称VB)来编制上位机,VB 是一种功能强大、简单易学的程序设计语言。

它不但保留了原先Basic 语言的全部功能,而且还增加了面向对象程序设计功能。

它不仅可以方便快捷地编制适用于数据处理、多媒体等方面的程序,而且利用ActiveX控件MSComm还能十分方便地开发出使用计算机串口的计算机通信程序。

本实验涉及控制六路舵机,所以需要编制上位机实现一次向下位机传输含有六个数据的数组,同时接受来自下位机的数组,并显示。

整个过程可分为如下几个过程:一:VB是面向对象的语言,首先需要绘制程序界面该上位机大致分为左边的功能部分与右边的可视化调节部分。

功能部分有端口选择,用以选择合适的端口进行串口通信,波特率选择,打开与关闭端口,动作设置等。

为了便于布局,应用frame控件建立区域,再将控件拖到frame 区域中,对于功能相同的控件来说,建立控件组的方式会使编程避免重复繁琐,例如HScrollbar控件,先向frame区域内拖入一个HScrollbar控件,再复制,粘贴到frame区域内部,则提示是否建立控件组,点击确定即可。

这样便为后续编程带来很大的方便。

调节部分运用Hscrollbar控件来粗略调节度数,设定按钮与文本框配合来精确调节输出度数。

用右列文本框实时读取舵机当前角度。

用optionbutton控件来选择hscrollbar的步进精度,这里分为0.1度与1度两个不同的选项。

由于一组optionbutton中在程序运行中只能有一个处于选中状态,根据本程序要求,每一横列的两个optionbutton为一组,这样就需要frame控件,在同一个frame区域里的optionbutton默认为一组。

VB6.0环境下利用Mscomm控件实现串行通信

VB6.0环境下利用Mscomm控件实现串行通信

VB6.0环境下利用Mscomm控件实现串行通信Use Mscomm Control Component to Implement Serial Communication under Visual Basic摘要: 本文简要介绍了VB6.0中Mscomm通信控件的属性和使用方法,并结合具体实例给出了基本的通信程序。

主题词:串行通信Visual Basic Mscomm .vbx控件Abstract: This paper briefly introduces the principle and method of Mscomm object of Visual basic 6.0, and with a real example basic program codes are given.Key Words:Serial Communication; Visual Basic; Mscomm .vbx control component随着计算机技术的飞速发展及其广泛应用,远程控制以及数据采集系统多采用上位机和下位机的主从工作方式,由于串行通信具有高效可靠、价格便宜,遵循统一的标准等特点,因而成为主要的通信手段。

微机的分析处理能力较强,有很好的人机界面和大容量的多种存储方式,所以上位机一般采用微机。

而单片机具有价格低,功能强,抗干扰能力好,温限宽和面向控制等特点,所以下位机采用单片机来构成主从式多机工作模式。

在需要对采集的数据进行分析处理或在远程需要对控制对象的控制过程进行统计或有条件控制时,采用数据库访问技术能有效地解决这类问题。

Visual Basic 6.0以其强大的功能、使用简单、能在短时间内开发出高效的通信程序而成为Windows系统开发的主要编程语言。

首先表现在VB可直接使用户自定义控件VBX或OCX文件;其次表现在VB可通过调用动态链接库(DLL,dynamic link library)来加快应用程序关键部分的执行速度。

VB控件MSComm串口通讯实例教程

VB控件MSComm串口通讯实例教程

现有电子秤一台,使用串口与计算机进行通讯。

编写VB程序来访问串口,达到读取电子秤上显示的数据。

该电子秤为BE01型仪表,输出为RS-232C标准接口,波特率为300-9600、偶校验、7个数据位、2个停止位。

所有字符现有电子秤一台,使用串口与计算机进行通讯。

编写VB程序来访问串口,达到读取电子秤上显示的数据。

该电子秤为BE01型仪表,输出为RS-232C标准接口,波特率为300-9600、偶校验、7个数据位、2个停止位。

所有字符均发送11位ASCII码,一个起始位。

在VB中与串口通讯需要引入控件MSComm串口通讯控件(在Microsoft Comm Control 6.0中)。

具体程序如下:控件简称:MSCDim Out(12) As Byte '接收var中的值Dim var As Variant '接收MSC.input中的数值Dim nRece As Integer '计算MSC.inputbuffer的个数Dim i As Integer, j As Integer '随即变量,计算循环************************************************************************** **Private Sub Form_Load()ClearTextWith MSC.CommPort = 1 '设置Com1为通信端口.Settings = "9600,E,7,2" '设置通信端口参数 9600赫兹、偶校验、7个数据位、2个停止位.(这里需要进一步说明的是:.Setting=”BBBB,P,D,S”。

含义是:B:Baud Rate(波特率);P:Parity(奇偶);D:Data Bit;S:Stop Bit).InBufferSize = 40 '设置缓冲区接收数据为40字节.InputLen = 1 '设置Input一次从接收缓冲读取字节数为1.RThreshold = 1 '设置接收一个字节就产生OnComm事件End WithEnd Sub************************************************************************** **Private Sub ClearText()Text3.Text = ""Text2.Text = "5"Text1.Text = ""End SubPrivate Sub Command1_Click()ClearText' nRece = 0 '计数器清零With MSC.InputMode = comInputModeBinary '设置数据接收模式为二进制形式.InBufferCount = 0 '清除接收缓冲区If Not .PortOpen Then.PortOpen = True '打开通信端口End IfEnd WithEnd SubPrivate Sub MSC_OnComm()DelayTime ‘用来延续时间ClearTextWith MSCSelect Case .CommEvent '判断通信事件Case comEvReceive: '收到Rthreshold个字节产生的接收事件SwichVar 1If Out(1) = 2 Then '判断是否为数据的开始标志.RThreshold = 0 '关闭OnComm事件接收End IfDoDoEventsLoop Until .InBufferCount >= 3 '循环等待接收缓冲区>=3个字节' nRece = nRece + 1For i = 2 To 12SwichVar iText1.Text = Text1.Text & Chr(Out(i))NextText1.Text = LTrim(Text1.Text)Text2.Text = Text2.Text & CStr(nRece).RThreshold = 1 '打开MSComm事件接收Case Else' .PortOpen = FalseEnd SelectEnd WithEnd Sub************************************************************************** **Private Sub DelayTime()Dim bDT As BooleanDim sPrevious As Single, sLast As SinglebDT = TruesPrevious = Timer (Timer可以计算从子夜到现在所经过的秒数,在Microsoft Windows中,Timer函数可以返回一秒的小数部分)Do While bDTIf Timer - sPrevious >= 0.3 Then bDT = FalseLoopbDT = True(通信传输速率为9600bps,则最快速度1.04ms发送一个字节,仪表每秒发送50帧数据,每帧数据有4个字节,即每秒发送200个字节,平均5.0ms 发送一个字节,连续读取串口数据时要在程序中添加循环等待程序)Private Sub SwichVar(ByVal nNum As Integer)DelayTimevar = Nullvar = MSC.InputOut(nNum) = var(0)End Sub(设置接收数据模式采用二进制形式,即 InputMode=comInputModeBinary,但用Input 属性读取数据时,不能直接赋值给 Byte 类型变量,只能通过先赋值给一个 Variant 类型变量,返回一个二进制数据的数组,再转换保存到Byte类型数变量中。

VB中关于MSComm控件使用详解

VB中关于MSComm控件使用详解

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 属性的值来查询事件和错误。

如果应用程序较小,并且是自保持的,这种方法可能是更可取的。

例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Visual Basic5.0( 以下简称VB) 以其简单易学、32 位面向对象的程序设计等特点,倍受广大计算机开发者的青睐,已广泛地应用于各个领域;在实时监测系统中串行端口通信是一项基础功能,因此我们使用VB5 编写了实时水库水文自动监测系统的后台机软件。

本文就Windows 95 环境中采用VB5 设计串行端口通信程序进行讨论并给出实例。

一般用VB 开发串行通信程序有两种方法: 一是利用Windows 的通信API 函数; 另一种是采用VB 标准控件Mscomm 来实现。

Windows 95 的通信API
Windows 95 中的串口通信API 函数不同于Windows3.x 中的OpenComm、CloseComm、ReadComm、WriteComm,而是采用硬件与文件通用的函数CreateFile、ReadFile、WriteFile、CloseHandle,该类函数更具有一般性,并且可以用EscapeCommFunction 函数实现底层硬件操作,比如:SETXOFF、CLRDTR 等。

利用API 编写串口通信程序较为复杂,需要掌握大量通信知识,其优点是可实现的功能更丰富、应用面更广泛,更适合于编写较为复杂的低层次通信程序。

采用这种方法编写串行端口通信程序一般可分为以下几个过程:
1. 初始化串行端口
首先用CreateFile 函数打开指定串口,置参数中访问类型为GENERIC_READ |GENERIC_WRITE、共享模式为0、创建标志为OPEN_EXISTING、模板句柄为NULL。

2. 配置串口
Windows 95 的串口配置比Windows 3.x 较为复杂,但其功能更强大,对一般程序可使用CommConfigDialog 函数以对话框方式设置波特率、数据位、奇偶校验、停止位和流控制方式,并且可以恢复缺省值。

3. 超时控制
为了防止意外情况使串口读写无休止地等待,Windows 95 提供了超时设置,这是由COMMTIMEOUTS 结构定义的,通过调用GetCcommTimeOuts 函数获得当前的设置,用SetCommTimeOuts 函数来完成设置。

4. 数据传输
读写串行端口与读写文件采用的函数相同,即ReadFile、WriteFile,读写操
作可分四种方式: 查询方式、同步I/O、异步( 后台)I/O 和事件驱动I/O。

5. 关闭串口
程序的终止可以自动关闭串口,也可用函数CloseHandle(),以便释放所独占资源。

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
mPort=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
bel1.Caption = “ 正在通信......"
bel1.Refresh
counter = Timer +10
End If
DoEvents
Loop
End Sub
以下为事件处理子程序,flag 为一静态变量记录读取次数,以便改变接收数据的长度,读者可根据实际需要添加其它处理内容:
Private Sub MSComm1_OnComm()
Select Case mEvent
Case comEvReceive
If flag > 246 Then
MSComm1.InputLen = 0: MSComm1.RThreshold = 32
End If
buffer = MSComm1.Input
temp = buffer
Print #hfile,temp
counter = Timer +10
Do While Timer > counter
Do Events
Loop
flag = flag +1
Case comEvEOF
EVMsg $= “ 检测到文件结尾!!!"
Case comFrame
ERMsg $= “ 帧出错!!!"
Case comRxParity
ERMsg $= “ 奇偶错!!!"
End Select
If Len(EVMsg $) Then
Text1.Text = “Status: " &EVMsg $
ElseIf Len(ERMsg $) Then
Text1.Text = “Status: " &ERMsg $
Beep
Ret = MsgBox(ERMsg $,1,“Click Cancel to quit,OK to ignore.")
MSComm1.PortOpen = False
End If
End Sub。

相关文档
最新文档