VB6.0下MSComm控件实现串口通信
vc 使用mscomm控件实现串口通讯
vc 使用mscomm控件实现串口通讯2009-07-07 08:34mscomm控件是微软发布的串口通讯控件,可以被多种开发工具使用,本章简单介绍vc环境下该控件的使用情况.1、控件的装载。
新建一个mfc工程,选择project-add to project-components and controls打开components and controls gallery对话框,双击 registered actives controls ,做出如下图的选择:点插入按钮后,就可把把该控件安装到controls面板上,同时创建串口类,我们从controls面板上把该控件添加到应用程序对话框就可以使用该控件设计通讯程序了。
2、初始化并打开串口。
m_ctrlComm.SetCommPort(1); //选择串口1if(!m_ctrlComm.GetPortOpen())//如果串口没有打开,则打开串口m_ctrlComm.SetPortOpen(TRUE);m_ctrlComm.SetSettings("38400,n,8,1");//波特率38400,无校验,8个数据位,1个停止位m_ctrlComm.SetInputMode(1);//以二进制方法检取数据m_ctrlComm.SetRThreshold(1);//参数为1表示当串口接收缓冲区有多于或等于1个字符时,将出发一个//接收数据的OnComm事件m_ctrlComm.SetInputLen(0);//设置当前接收缓冲区的数据长度为0m_ctrlComm.GetInput();//先预读缓冲区以清除残留数据3、串口关闭。
m_ctrlComm.SetPortOpen(FALSE);4、数据发送strSendFrame = "10 40 01 41 16 ";CStringToCByteArray(strSendFrame,cbaSendBuf);//转换为字节流cbaLastSendFrameBuf.Copy(cbaSendBuf);ucLastSendCtlCode = cbaSendBuf[1];pView->m_ctrlComm.SetOutput((COleVariant)cbaSendBuf);//串口发送5、数据接收响应mscomm控件的oncomm事件处理接收到的数据。
用VisualBasic实现串口通信的三种方法
comm2. InBufferSize = 512 ′设置接收缓冲区为 512 字节
comm2. SThreshold = 1
′发送缓冲区空触发发送事件
comm2. RThreshold = 0
′禁止接收事件
′打开 COM1 ,COM2
comm1. Portopen = True
comm2. Portopen = True
以上五种属性对串口完成基本的设置和操作 ,下面的三 种属性是描述如何利用 VB 提供的事件驱动机制来实现通 信。
CommEvent :返回通信过程中产生的错误信息及事件 ,了 解通信状况 。
SThreshold :设置并返回不触发 OnComm 事件时发送缓冲 区被允许的最少字符数 。当缓冲区的字符少于设置的值时 , 则触发 OnComm 事件 ,并把 CommEvent 设为 MSCOMMM—EV— SEND。当 SThreshold = 0 则禁止发送触发 OnComm 事件 , 当 SThreshold = 1 则发送缓冲区为空时就触发 OnComm 事件 。利 用这一属性 ,就可完成发送数据后的一系列操作 。如 :对刚发 送的数据进行处理 ,当串口是和 MODEM 通信时 ,发送完数据 后可进行拆除线路联接 、挂机等操作 。
′读取接收缓冲区的所有字符
comm1. OutBufferSize = 512 ′设置发送缓冲区为 512 字节
comm1. InBufferSize = 512 ′设置接收缓冲区为 512 字节
comm1. SThreshold = 0
′禁止发送事件
comm1. RThreshold = 1 ′每一个字符到接收缓冲区都
WINDOWS 的 HELP 文件 WINSDK. HLP 中包含了完整的 WINDOWS API 函数信息 ,可用该文件查看联机函数 、数据结 构及错误信息 。
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)来加快应用程序关键部分的执行速度。
用vb6实现仪器串口通信及检测功能
1 设计用户界面第一新建一个“标准EXE”工程,然后选择“工程/部件”菜单项,在“部件”对话框当选择Microsoft Comm 即可添加MsComm控件;再在窗体中依次布置如下控件并设置其属性。
控件名称name属性Caption属性Form form1空Frame1frame1空Frame2frame2空Frame3frame3空Command1comd1确定Command2comd2退出Command3comd3确定Command4comd4退出Command5comd5做完退出MSComm msc1空Label 1lab1RS-232接口功能检测Label 2lab2请输入被检仪器程控码控制仪器功能Label 3lab3请输入被检仪器程控码读取仪器数据Text1txt1空Text2txt2空完成后的界面如图1所示图1 用户界面2 编写程序代码编写的程序代码如下:PriVate Sub Form_Load()=1 ’ 使用串行口1’波特率9600,偶校验,8个数据位,1个停止位Msc =“9600,E,8,1”’当使用Msc 时,每次从接收缓冲区取一个字节。
=0 ’读取整个接收缓冲区内码或消除=True ’ 打开串行口End SubPrivate Sub Comd1_Click()On Error Resume Next ’简单的错误处理If = "" Thenx = MsgBox("被检仪器程控码不能为空值", 16)Exit SubEnd If= + Chr$(13)’发送程控码For i = 1 ToNextEnd SubPrivate Sub Comd2_Click()= ""End SubPrivate Sub Comd3_Click()Dim instring As stringinstring == + Chr$(13)DoDoEventsLoop Until >= 20instring = ’ 从接收队列中读入字符串= ""= instring ’ 显示读入的字符串End SubPrivate Sub Comd4_Click()= ""End SubPrivate Sub Comd5_Click()= False ’ 关闭串行口EndEnd Sub3 程序简要说明上述程序设置的端口通信协议为:9600波特率,偶校验,8个数据位,1个停止位。
基于VB6.0的串口通信方法
基于VB6.0的串口通信方法串口通信在数据采集中有着广泛的应用,因为串口通信通信线路简单、灵活方便、数据可靠。
作为快速开发,利用VB开发串口通信程序既可以使用MSComm控件也可以调用WindowsAPI函数实现。
这里我们使用VB6.0提供的MSComm控件,因为MSComm控件的功能和API调用一样强,甚至更好且使用起来更加简单,能很方便地实现所需的串口通信功能。
1.MSComm控件简介MSComm控件是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。
具体的来说,它提供了两种处理通信问题的方法:一是事件驱动方法,当串口通信产生错误时,MSComm控件会触发OnComm事件,程序员可以在OnComm事件处理函数中加入自己的处理代码。
另外一种是查询法。
查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。
在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。
2.MSComm控件的常用属性MSComm控件有很多重要的属性,但首先必须熟悉几个关键属性。
CommPort 设置并返回通讯端口号Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位PortOpen 设置并返回通讯端口的状态。
也可以打开和关闭端口Input 从接收缓冲区返回和删除字符Output 向传输缓冲区写一个字符串3.程序代码设计利用MSComm控件编写串口通信程序是十分便利和简单的。
下面我就事件驱动方式以VB6.0为平台编写了PC间串口通信程序的实例。
代码如下:'串口初始化PrivateSubForm_Load()mPort=1 '设置通信端口号为COM1MSComm1.Settings="9600,n,8,1" '设置串口参数MSComm1.InputMode=0 '接收文本型数据MSComm1.RThreshold=1'接收缓冲区每收到一个字符都会使MSComm控件触发OnComm事件MSComm1.PortOpen=True '打开通信端口1EndSub'把字符通过串口发送出去'启动定时器PrivateSubCmdsend_Click()IfTextsend.Text=""Thenpp=MsgBox("发送的数据不能为空!",16)ExitSubEndIfMSComm1.Output=Trim(Textsend.Text)EndSub'MSComm的OnComm事件程序'由CommEvent属性值的不同,将各自的程序代码写入相关的子程序中'只要RThresold中的设定字符数到达时便会使得CommEvent属性值变成comEvReceive'因此接收的子程序便会被执行PrivateSubMSComm1_OnComm()Dimbuf$mEvent'通过取代每一个case表达式来处理每个事件与错误CasecomEvCD'CD线的状态发生变化CasecomEvCTS'CTS线的状态发生变化CasecomEvDSR'DSR线的状态发生变化CasecomEvReceivebuf=Trim(MSComm1.Input)'将缓冲区内的数据读入buf变量中CasecomEvSendEndSelectTextReceive.Text=TextReceive.Text&bufEndSub'停止程序运行PrivateSubCmdquit_Click()UnloadMeEndSub'关闭通信端口,PrivateSubForm_Unload(CancelAsInteger)MSComm1.PortOpen=FalseEndSub4结束语本文通过具体实例介绍了如何利用VB6.0中的MSComm控件来实现串口通信。
VB6.0的MSComm通信控件应用举例
VB6.0的MSComm通信控件应用举例作者:程巍巍来源:《合作经济与科技》2009年第07期提要本文介绍了基于VB6.0的MSComm通信控件相关理论,并以一个实例演示了MSComm控件的主要属性。
关键词:串行通信;VB6.0;MSComm控件中图分类号:F49文献标识码:A在当今这个科技飞速发展的时代,我们经常需要在计算机与其他设备之间进行通信,而串行通信作为一种灵活、方便、可靠的通信方式被广泛采用。
在开发串行通信程序的过程中,利用微软的MSComm通信控件相对比较简单,该控件具有丰富的与串行通信密切相关的属性及事件,提供了对串口的各种操作。
MSComm控件在VB中容易使用,在串口编程时也非常方便,程序员不必花时间去了解较为复杂的API函数。
一、用VB6.0进行串行通信程序的设计方法简介用visual basic6.0进行串行通信程序的设计有两种方式:(1)直接调用Windows API。
(2)使用通信组件。
该方式实际上是通过通信组件间接调用Windows API函数,其过程要比直接调用API要复杂,但在程序上容易实现。
使用MSComm控件时,实际上就是使用了API 函数,API函数将被Comm.drv解释并传送给外围设备驱动程序,使用MSComm的用户只需要关心如何使用MSComm所提供的属性或事件,以驱动API函数的接口完成工作。
二、串行通信程序的执行过程MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。
该控件提供了两种处理通信的方式:1、事件驱动通信。
事件驱动通信是处理串行端口交互作用的一种非常有效的方式。
在使用事件驱动通信时,每当有一个字符到达或端口状态发生改变,或发生错误时,MSComm控件将触发OnComm事件进行捕获,通过检查MSComm控件的CommEvent属性获知所发生的事件或错误,从而采取相应的操作处理这些通信事件。
这种方法的优点是程序响应及时,可靠性高。
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类型数变量中。
串口通讯方法的三种实现
串口基本信息用一台电脑实验串口自发自收,实验前要将串口(以9针为例)的发送引脚(2脚)和接受引脚(3脚)短接。
三线连接:适用于计算机之间尤其是PC机和单片机之间的数据通信。
其连接信号对为(TxD,RxD)、(RxD,TxD)、(SG,SG)。
即发送数据TxD端和接受数据RxD端交叉连接,信号地SG对应连接。
七线交叉连接:适用于同型号的计算机之间的连接,如PC机间的数据通信。
其连接信号对为:(TxD,RxD)、(RxD,TxD)、(SG,SG)、(RTS,CTS)、(CTS,RTS)、(DSR.DTR)、(DTR,DSR)。
其中,TxD、RxD、SG与前面信号的含义相同,RTS为请求发送,CTS为准许发送,DSR为数据装置准备好,DTR为数据终端准备好。
在本地连接的微机系统中,RTS、CTS、DTR、DSR用作硬件联络控制信号。
目前使用的串口连接线有DB9和DB25两种连接器,用户可以国家使用的具体机器选择相应的连接器。
一个串口通讯类在/network/serialport.shtml。
PC机的RS-232接口的电平标准是-12V标示“1”,和+12V表示“0”,有些单片机的信号电平时TTL 型,即大于2.4v表示“1”,小于0.5v表示“0”,因此采用RS-232总线进行异步通信是,发送端和接受端要有一个电平转换接口。
串口通讯方法的三种实现串口是计算机上一种非常通用的设备通信协议。
大多数计算机包含两个基于RS232的串口。
串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS一232口。
同时,串口通信协议也可以用于获取远程采集设备的数据。
串口通信(Serial Communication),是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。
串口通信方便易行,应用广泛。
在Windows应用程序的开发中,我们常常需要面临与外围数据源设备通信的问题。
利用控件MSComm实现计算机的串口通信
机串并 口编程在传真 、 视频 和控 制等 。在 Widw 应用 程序 no s 的开发 中 , 常常需 要 面 临 与外 围数 据 源 设 备 通 信 的 问题 。一 般 多 是 利 用 控 件 MS o C mm设 计 相 应 的 串
∥} A X I C U E } F —N L D S
i df e A X— C MM E T L —H一 2 F B 4 — f! e nd( F S O T S D G i 一 2 2 16
6 C _ D5 8 0 _ 0 0 C F 8 A I L 9 2 l _ 7 E 0 E 4 3 7 C 1 NC UDE ) D
置并返 回波特率 、 奇偶校 验 、 据位 、 止位 ; o — 数 停 Pr t
Oe pn属性 , 能 : 置并 返 回通 讯 端 口的状 态 , 可 功 设 也
一
9 — 5
以打开 和关 闭端 口 ; pt I u 属性 , 能 : 接 收 缓 冲 区 n 功 从 内读 出数据 ; upt 性 , 能 : O tu 属 功 向传 输 缓 冲 区写 一 个字符 串 ] 。
cr e d t t C ar r ee ( D)或 rq etosn R S i c eu s t ed( T )线 上一
串行 通信 是 指 一 条 信 息 的 各 位 数 据 被 逐 位 按 顺序 传送 的通 信方 式 。 串行 通 信 的特 点 是 : 据 位 数 传送 按位 顺序 进行 , 最少 只需 要 一 根 传 输线 即 可完 成, 成本 低 、 送 速 度 慢 。 串行 通 信 的距 离 可 以从 传
目前 , 算 机 的 串 行 通 信 应 用 十 分 广 泛 , 计 串行 接 口已成 为 计 算 机 的必 须 部 件 和 接 口之 一 。计 算
VB6.0的MSComm通信控件应用举例
VB6.0的MSComm通信控件应用举例提要本文介绍了基于VB6.0的MSComm通信控件相关理论,并以一个实例演示了MSComm控件的主要属性。
关键词:串行通信;VB6.0;MSComm控件在当今这个科技飞速发展的时代,我们经常需要在计算机与其他设备之间进行通信,而串行通信作为一种灵活、方便、可靠的通信方式被广泛采用。
在开发串行通信程序的过程中,利用微软的MSComm通信控件相对比较简单,该控件具有丰富的与串行通信密切相关的属性及事件,提供了对串口的各种操作。
MSComm控件在VB中容易使用,在串口编程时也非常方便,程序员不必花时间去了解较为复杂的API函数。
一、用VB6.0进行串行通信程序的设计方法简介用visual basic6.0进行串行通信程序的设计有两种方式:(1)直接调用Windows API。
(2)使用通信组件。
该方式实际上是通过通信组件间接调用Windows API函数,其过程要比直接调用API要复杂,但在程序上容易实现。
使用MSComm控件时,实际上就是使用了API函数,API函数将被Comm.drv解释并传送给外围设备驱动程序,使用MSComm的用户只需要关心如何使用MSComm所提供的属性或事件,以驱动API函数的接口完成工作。
二、串行通信程序的执行过程MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。
该控件提供了两种处理通信的方式:1、事件驱动通信。
事件驱动通信是处理串行端口交互作用的一种非常有效的方式。
在使用事件驱动通信时,每当有一个字符到达或端口状态发生改变,或发生错误时,MSComm控件将触发OnComm事件进行捕获,通过检查MSComm 控件的CommEvent属性获知所发生的事件或错误,从而采取相应的操作处理这些通信事件。
这种方法的优点是程序响应及时,可靠性高。
2、查询法。
该方法可以在程序的每个关键功能之后,通过检查CommEvent 属性的值来查询事件和错误。
VB6.0串口操作
VB6.0串口操作职业 2010-12-22 11:30:58 阅读60 评论0 字号:大中小订阅一直想通过计算机人机界面来控制单片机,感觉用软件控制硬件,即计算机控制是一件比较有意思的事情。
计算机与单片机的连接,是通过串口来实现的。
如何实现,我想应该明白VB怎样来操作串口,实现VB操作串口,就可以把单片机串口线接入计算机,从而实现真正的计算机控制单片机。
这其他是别人早已实现了的,我因为是刚接触,就写下来留作纪念吧。
开发软件:Visual Basic 6.0企业版(VB6)新建一个工程:标准EXE。
接下来做Form界面。
代码:Private Sub Combo1_Click()If MSComm1.PortOpen = True Then '如果串口打开先关闭后再进行其他操作MSComm1.PortOpen = FalseEnd IfmPort = Combo1.ListIndex + 1End SubPrivate Sub Command1_Click()Dim Temp(0) As ByteDim strBuff As StringIf Option3.Value = True Then '如果显示16进制发送则进行16进制处理,这里只发送一个 Temp(0) = "&H" & Text1MSComm1.Output = Temp '发送一个16进制ElsestrBuff = Text1End IfIf MSComm1.PortOpen = False ThenMsgBox "请打开串口"End IfOn Error GoTo uerrorMSComm1.Output = strBuffuerror: End SubPrivate Sub Command2_Click()On Error GoTo uerror '发现错误跳转到错误处理If Command2.Caption = "关闭串口" ThenMSComm1.PortOpen = FalseCommand2.Caption = "打开串口" '按钮文字改变Shape1.FillColor = &HFFFFC0 '灯颜色改变ElseMSComm1.PortOpen = TrueCommand2.Caption = "关闭串口"Shape1.FillColor = &HFFEnd IfExit Subuerror:msg$ = "无效端口号" '错误显示Title$ = "串口调试助手"x = MsgBox(msg$, 48, Title$) '48标示显示警告图标End SubPrivate Sub Command3_Click()Text2.Text = ""End SubPrivate Sub Command4_Click()Text1.Text = ""End SubPrivate Sub Form_Load()If MSComm1.PortOpen = True ThenMSComm1.PortOpen = FalseElseEnd IfCombo1.AddItem "COM1"Combo1.AddItem "COM2"Combo1.AddItem "COM3"Combo1.AddItem "COM5"Combo1.AddItem "COM6"Combo1.AddItem "COM7"Combo1.AddItem "COM8"Combo1.AddItem "COM9"Combo1.AddItem "COM10"Combo1.AddItem "COM11"Combo1.AddItem "COM12"Combo1.AddItem "COM13"Combo1.AddItem "COM14"Combo1.AddItem "COM15"Combo1.AddItem "COM16"Combo1.ListIndex = 0mPort = Combo1.ListIndex + 1 MSComm1.Settings = "9600,n,8,1"Command2.Caption = "打开串口"Shape1.FillColor = &HFFFFC0Option2.Value = TrueOption4.Value = TrueCombo2.AddItem "256000"Combo2.AddItem "128000"Combo2.AddItem "115200"Combo2.AddItem "57600"Combo2.AddItem "38400"Combo2.AddItem "28800"Combo2.AddItem "19200"'Combo2.AddItem "14400"'Combo2.AddItem "12800"'Combo2.AddItem "11520"Combo2.AddItem "9600"Combo2.AddItem "4800"Combo2.AddItem "2400"Combo2.AddItem "1200"Combo2.AddItem "600"Combo3.AddItem "无None"Combo3.AddItem "奇Odd"Combo3.AddItem "偶Even"Combo4.AddItem "4"Combo4.AddItem "5"Combo4.AddItem "6"Combo4.AddItem "8"Combo5.AddItem "1"Combo5.AddItem "2"End SubPrivate Sub MSComm1_OnComm()Dim BytReceived() As ByteDim strBuff As StringDim i As IntegerSelect Case mEvent '事件发生Case 2ClsMSComm1.InputLen = 0 '读入缓冲区全部内容strBuff = MSComm1.Input '读入到缓冲区If MSComm1.InputMode = comInputModeBinary ThenBytReceived() = strBuff '如果是二进制接收模式则进行数据处理,否则直接显示字符串For i = 0 To UBound(BytReceived)If Len(Hex(BytReceived(i))) = 1 ThenstrData = strData & "0" & Hex(BytReceived(i)) & " " '如果只有一个字符,则前补0,如F显示0F,最后补空格Else'方便显示观察如: 00 0F FEstrData = strData & Hex(BytReceived(i)) & " "End IfNextText2 = Text2 & strDatastrData = ""ElseText2 = Text2 & strBuffEnd IfEnd SelectEnd SubPrivate Sub Option1_Click()MSComm1.InputMode = comInputModeBinaryEnd SubPrivate Sub Option2_Click()MSComm1.InputMode = comInputModeTextEnd Sub重要:一。
浅谈基于MSComm控件实现VB串口通信
2.2
8 OnComm 9"’:;<= OnComm 事件主要是检查和处理通讯错误, 可以通过检查
CommEvent 属性的值来查询事件和错误。 \ ' 错误 Case comEventBreak Case comEventCDTO Case comEventCTSTO Case comEventDSRTO Case comEventFrame Case comEventOverrun Case comEventRxOver Case comEventRxParity Case comEventTxFull Case comEventDCB ' 事件 Case comEvCD Case comEvCTS Case comEvDSR Case comEvRing Case comEvReceive Case comEvSend Case comEvEof \ /CD 线状态变化 / /CTS 线状态变化 / /DSR 线状态变化 / /Ring Indicator 变化 / / 收到 RThreshold # of chars/ / 传输缓冲区有 Sthreshold 个字符 / / 输入数据流中发现 EOF 字符 / / 收到 Break/ /CD (RLSD) 超时 / /CTS Timeout/ /DSR Timeout/ /Framing Error/ / 数据丢失 / / 接收缓冲区溢出 / /Parity 错误 / / 传输缓冲区已满 / / 获取 DCB 时意外错误 /
3
Байду номын сангаас/!
要在一条输送线上实现工件以两个不同方向、相同速度 的输送 , 使线上各轴以不同方向、 相同转速旋转是核心技术 , 工 位小车与线上滚轮之间实现纯滚动运动 , 是保证输送线以相同 速度输送工件的必要条件 , 线上滚轮材料的选择是关键。
vc++6.0基于MsComm控件的串口通讯方法
这是龚建伟老师提供的一个基于MSComm控件的串口调试程序,下面给出了在Visual C++环境下详细的制作过程。
附带的源代码是我根据这些步骤编写出来的,可以供大家参考哦!目录:1.建立项目2.在项目中插入MSComm控件3.利用ClassW i z ard定义CMSComm类控制变量4.在对话框中添加控件5.添加串口事件消息处理函数O nCo mm()6.打开和设置串口参数7.发送数据8.发送十六进制字符9.在接收框中以十六进制显示10.如何设置自动发送11.什么是VARIANT数据类型?如何使用VARIANT数据类型?1.建立项目:打开V C++6.0,建立一个基于对话框的MFC应用程序SCommTest(与我源代码一致,等会你会方便一点);2.在项目中插入MSComm控件选择Project菜单下A dd To Project子菜单中的Co mponents and Co ntro ls…选项,在弹出的对话框中双击Registered ActiveX Contro ls项(稍等一会,这个过程较慢),则所有注册过的ActiveX控件出现在列表框中。
选择Micro soft Communicatio ns Control, versio n 6.0,,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。
(如果你在控件列表中看不到M icro soft Co mmunicatio ns Control, versio n 6.0,那可能是你在安装V C6时没有把A ct iveX一项选上,重新安装V C6,选上ActiveX就可以了),这时在ClassView视窗中就可以看到CMSComm类了,(注意:此类在ClassWizard中看不到,重构clw文件也一样),并且在控件工具栏Contro ls中出现了电话图标(如图1所示),现在要做的是用鼠标将此图标拖到对话框中,程序运行后,这个图标是看不到的。
MSComm控件实现串口通信的方法
MSCom控件实现串口通信的方法碧峰晨曦摘要:详细介绍了MSComm控件,并在VC++6.0中利用MSComm控件开发了基于对话框的串口通信实例。
关键词:串口通信,MSComm,VC++图书编号:TP3110•引言串口通信具有实现简单、价格低廉、通信稳定、数据传输可靠等优点,因而广泛应用于各种工业控制系统中。
MSComm控件是微软公司开发的专门用于串口通信的控件。
该控件为开发串口通信程序提供了更加快捷、容易的方法。
在VC++中,对控件属性的操作都是通过特定的函数来实现的,这些函数都是CMSComm类的成员函数。
当声明了一个CMSComm类对象后,就可以通过如下格式调用成员函数来访问控件属性了:<对象名>•<成员函数名>(<参数表〉)或<对象名>-><成员函数名>(<参数表>)1.MSComm控件属性及事件1.1MSComm控件属性MSComm控件有许多属性,最主要的几个属性如下:1)CommPort:设置该属性值可以获取当前程序使用的串口编号。
2)Sett in g:设置或者获取串行通信的通信参数(包括波特率、奇偶校验类型、数据位数及停止位数等)。
3)PortOpen设置该属性可以打开或关闭串口。
4)In put:从接收缓冲区中返回并删除数据。
5)Output:向串口通信输出缓冲区写入数据。
6)CommEvent:当MSComm控件在运行时发生错误或产生各种事件时,向程序返回错误或事件类型。
1.2MSComm控件的事件该控件只有一个事件,即On Comm事件。
当CommEve nt属性值发生变化时就会触发On Comm事件。
根据CommEve nt属性值来分别执行各种情况下的处理程序。
2 MSComm控件实例应用2.1插入MSComm控件在VC++6.0中新建一个基于对话框的工程,命名为Test。
默认情况下,VC++6.0中不会包含MSComm控件,所以需要我们手动将MSComm控件加载到VC++6.0 中。
【推荐下载】基于VB6.0的MSComm通信方法设计
基于VB6.0的MSComm通信方法设计 MSComm控件在串口编程时非常方便,程序员不必花时间去了解较为复杂的API函数,而且在VB中容易使用。
这是一篇基于VB6.0的MSComm通信方法设计,接下来让我们一起来看看吧~ 摘要:本文介绍了基于VB6.0的MSComm串行通信设计方法,并给出了计算机与智能采集模块进行通信的程序设计的框架。
关键词:串行通信,vb6.0,MSComm 1 前言 在工业控制领域,我们经常需要进行计算机与其他设备之间的通信,而串行通信作为一种灵活、方便、可靠的通信方式被广泛采用。
在开发串行通信程序的过程中,利用微软的MSComm通信控件则相对较简单,该控件具有丰富的与串行通信密切相关的属性及事件,提供了对串口的各种操作。
MSComm控件在串口编程时非常方便,程序员不必花时间去了解较为复杂的API函数,而且在VB中容易使用。
2 用visual basic 6.0进行串行通信程序设计的方法 (1) 用visual basic 6.0进行串行通信程序的设计有两种方式,一是直接调用Windows API,另一种方式是使用通信组件,但后一种方式实际上是通过通信组件间接的调用了Windows API函数,其过程要比直接调用API要复杂,但是在程序的实现上要比前一种方式简单的多。
在操作系统方面,Windows使用通信驱动程序Comm.drv,以便于应用程序能够使用标准的Windows API函数来传递和接收数据。
串行外围设备的制造商则提供硬件驱动程序,以便让其硬件能与Windows连接。
使用MSComm控件时,实际上就是使用了API函数,API函数将被Comm.drv解释并传送给外围设备驱动程序,使用MSComm的用户只需要关心如何使用MSComm所提供的属性或事件,以驱动API函数的接口完成工作。
串行通信程序的执行过程 (2) MSComm提供了两种处理通信问题的方法,一是事件驱动方法,一是查询法。
基于VB 6.0的串口通讯程序设计
基于VB 6.0的串口通讯程序设计摘要:详细介绍了VB6.o中通讯控件MSComm的一些重要属性及在Windows环境下用通讯控件来实现串行通信的编程方法,并结合实例给出了一个基本的通讯程序。
关键词:串行通信;通信控件;Visual Basic 6.01引言随着计算机的迅速普及和计算机控制技术的发展,计算机被广泛应用于自动化控制领域之中。
而要完成一个控制过程一般都要利用集散式计算机控制系统。
在这种控制系统中,下位机主要完成对现场数据采集和对设备一级的监控,上位机则要完成对整个系统的采集、分析、处理和控制以及数据、图形显示、打印、人机对话等工作。
而上位机与下位机大多是通过PC机的RS-232串行接口实现通信。
随着Windows系统的普及,越来越多的用户由DOS系统转向了Windows系统,这使得数据采集及工业控制软件也上升到了Windows环境下。
这就给程序员提出了如何编写面向Windows的串行通信程序问题。
虽然Windows提供了完备的开放式通用增强的W32API(应用程序接口)函数,它把对串口和其他通信设备的支持和基本输入驱动程序集于一体。
但是,对于非专业软件设计人员来说,使用VC++,C等高级语言来完成这类程序的设计,其复杂性与专业化程度依然很高。
而Visual Basic 6.0(以下简称VB)是一个Windows下简单、易学、高效的可视化软件开发平台,它以所见即所得的可视化界面设计风格和32位面向对象程序设计的特点,已被广泛应用到各个领域,成为众多开发人员采用的工具。
VB 不但提供了良好的界面设计能力,而且在串口通信方面也有很强的功能。
它提供的Microsoft Communication control(以下简称MSComm)这样一个通信控件,该控件“隐藏”了大部分串口通信的低层运行过程和许多繁琐的过程,它使用户能够方便地访问Windows下串口通信驱动程序的大多数特性。
所以整个串行通信程序的开发过程变得十分简单易行,程序员不需要处理繁琐的细节,而通过利用通信控件,只需编写少量的代码来实现主要应用功能和界面的设计,就可以完成软件的开发过程。
那位高手做过用vb的comm控件做通过串口接收短信息(最全)word资料
那位高手做过用vb的comm控件做通过串口接收短信息?请指点!楼主redata(风之子)2002-01-18 09:35:01 在VB / 非技术类提问我的源程序Const COM_IN_BUF_SIZE = 1024Dim ComInBuffer(COM_IN_BUF_SIZE) As Variant, ComInHeadPtr As Integer, ComInT ailPtr As Integer, ComInBufCount As IntegerDim ComInTimerOut As BooleanPrivate Sub InitPort()MSComm1 mPort = 1 '选用com1串行口MSComm1.Settings = "9600,n,8,1" '波特率9600,无奇偶校验位,8位数据位1位停止位MSComm1.InputLen = 1 '读取input接收缓冲区全部字节MSComm1.InBufferSize = 1024 '设置接收缓冲区的字节长度MSComm1.InBufferCount = 0 '清除发送缓冲区数据MSComm1.OutBufferCount = 0 '清除接收缓冲区数据MSComm1.InputMode = 1 '输入模式为binaryMSComm1.RThreshold = 1 '控件收到数据时将触发OnComm事件MSComm1.Handshaking = 2 '握手协议End SubPrivate Sub InitComInBuf()ComInBufCount = 0ComInHeadPtr = 0ComInTailPtr = 0ComInTimer.Enabled = FalseComInTimer.Interval = 5000ComInTimerOut = FalseEnd SubPrivate Sub InitRecieve()MSComm1.PortOpen = TrueEnd SubPrivate Sub RunComInHandle()Do While MSComm1.PortOpen = TrueIf ComInBufCount > 0 ThenComInHandleEnd IfDoEventsLoopEnd SubPrivate Sub ComInHandle()Dim InByte As ByteDim InPack(COM_IN_BUF_SIZE) As Byte, InPackCount As IntegerDo While ComInByte(InByte) = TrueIf InByte = &HD ThenCall InPackHandle(InPack(), InPackCount)Exit SubElseInPack(InPackCount) = InByteInPackCount = InPackCount + 1End IfLoopEnd SubPrivate Function ComInByte(ByRef InByte As Byte) As Boolean'接收一个字节If ComInBufCount > 0 ThenInByte = ComInBuffer(ComInTailPtr)ComInBufCount = ComInBufCount - 1ComInTailPtr = (ComInTailPtr + 1) Mod COM_IN_BUF_SIZEComInByte = Truep_addlist1 "收到回应A->[" & Hex(InByte) & "]"ElseComInTimer.Enabled = TrueComInTimerOut = FalseDo While ComInTimerOut = FalseIf ComInBufCount > 0 ThenIf ComInBufCount > COM_IN_BUF_SIZE Thenp_addlist1 "内存缓冲区溢出"End IfComInTimer.Enabled = FalseInByte = ComInBuffer(ComInTailPtr)ComInBufCount = ComInBufCount - 1ComInTailPtr = (ComInTailPtr + 1) Mod COM_IN_BUF_SIZ EComInByte = Truep_addlist1 "收到回应B->[" & Hex(InByte) & "]"Exit FunctionElseDoEventsEnd IfLoopComInTimer.Enabled = FalseComInByte = FalseEnd IfEnd FunctionPrivate Sub ComInTimer_Timer()ComInTimeOut = TrueEnd SubPrivate Sub MSComm1_OnComm()Dim InVar As VariantDim InArr() As ByteIf MSComm1 mEvent = comEvReceive Then ' 事件信息Do While MSComm1.InBufferCount > 0InVar = MSComm1.InputInArr = InVarComInBuffer(ComInHeadPtr) = InArr(0)ComInBufCount = ComInBufCount + 1ComInHeadPtr = (ComInHeadPtr + 1) Mod COM_IN_BUF_SIZE LoopEnd IfEnd SubPrivate Sub InPackHandle(InPack() As Byte, ByVal InPackCount As Integer) Dim InPackStr As String'################InPackStr = InPackList2.AddItem InPackStr'InPackStr = StrConv(MidB(InPack, 1, InPackCount), vbUnicode)'Call AddRecieveToList(ListRecieve, InPackStr)'Call AddRecieveToDb(InPackStr)End SubPrivate Sub p_addlist1(str As String)If List1.ListCount > 500 ThenList1.RemoveItem 0End IfList1.AddItem Format(LineCount, "0") & "." & strLineCount = LineCount + 1List1.Selected(List1.ListCount - 1) = TrueEnd SubPrivate Sub Form_Load()InitPortInitComInBufInitRecieveRunComInHandleEnd SubPrivate Sub Form_Unload(Cancel As Integer)MSComm1.PortOpen = FalseEndEnd SubIf MSComm1.PortOpen Then MSComm1.PortOpen = FalseMSComm1 mPort = 1 '假定是用COM1口' 设定传输速率等,可依照您的需求更改MSComm1.Settings = "9600,N,8,1"MSComm1.PortOpen = True'---------初始化Modem-------------MSComm1.Output = "ATZ"MSComm1.Output = "AT&F"MSComm1.Output = "ATE0"MSComm1.Output = "ATM1"MSComm1.Output = "ATQ0"MSComm1.Output = "ATV0"'--------------------------拨号-------------MSComm1.Output ="ATDT163" '拨163'---------------------------接通后MSComm1.Output ="SDFJDKSJLKFA" '发送字符串'---------------------Private Sub MSComm1_OnComm() '用串口事件捕捉数据..If MSComm1.InBufferCount Then' 通讯埠中假如有资料的话, 则读取进来InStringB = InStringB & MSComm1.Input' 如果资料中有Chr(13) 和Chr(10) 的话, 则显示出来If InStr(InStringB, vbCrLf) Theninstring = instring & InStringBAddText Text3, InStringB, FalseInStringB = ""End IfEnd IfEND SUB'-------------------------挂断--------MSComm1.PortOpen = False '这个挂断方法不能适用所有MODEM,我正在研究...通用办法接受Buffer = MSComm1.Input ' 接收一个二进制数据Arr(0) = AscB(Buffer) '存入到二进制数组数组中Receive_Count_Byte = Receive_Count_Byte + 1Real_Receive = Arr(0) 'Text1.Text = Text1.Text & Real_Receive & " " '接收的数据显示到文本框中送数据,然后在另外一个过程里实时检测此串行口以便一旦此串行口的发送缓冲区有数据就显示消息,如果发送空数据就会显示"无数据的字样"。
VB6.0实现与电磁流量计串口通信
VB6.0实现与电磁流量计串口通信摘要:实例说明VB6.0编程软件通过MSComm控件实现电脑与电磁流量计串口通信。
关键词:串口通信;属性;事件;端口;软件;程序Visual Basic6.0(简称VB6.0)提供了串口通信MSComm控件,开发者可以方便快捷的通过VB6.0在微软操作系统编写串口通信程序。
1 串口通信的实现1.1 实现方式VB6.0编程软件的MSComm控件的两种处理通信方式:事件驱动:利用OnComm事件捕获并处理这些通信事件,还可以检查和处理通信错误。
循环查询:通过检查 CommEvent属性的值来循环查询事件和错误。
1.2 控件属性CommPort:用于设置或返回连接的串口编号,Windows将会利用该串口和外界通信。
Settings:用于设置或返回通信参数。
PortOpen:用于打开和关闭端口。
Input:从接收缓冲区移走一串字符,将缓冲区中收到的数据读入变量。
Output:用于向发送缓冲区写数据流。
InputLen:用于设置或返回接收缓冲区内用Input属性命令读入的字节个数。
若取0,则Input属性读取整个缓冲区中的内容。
Rthreshold:该属性是一个阀值,当接收缓冲区内字节个数达到或超过该值后就产生OnComm事件,并且CommEvent属性会被设定为ComEvReceive。
CommEvent:如果在通信过程中发生错误或事件,将会引发OnComm 事件并且改变其属性值。
1.3 电磁流量计L-mag 电磁流量计具有标准的RS-485通讯接口,采用Modbus-RTU标准协议,可以采集瞬时流量,瞬时流速,累积流量等参数。
主站发送命令16进制:01 04 10 18 00 02 F5 0C。
1.4 程序实例建立一个VB6.0标准exe文件,在Form1中分别添加10个对象(见上图)。
程序如下:Option ExplicitDim read As String '全局变量读取所有的数据变量Private Sub Command1_Click()'将发送的数据设置成字节型变量数组,Dim SenDataR(0 To 7)As Byte '发送读取正向累积数16进制命令:01 04 1018 00 02 F5 0CSenDataR(0)= &H1SenDataR(1)= &H4SenDataR(2)= &H10SenDataR(3)= &H18SenDataR(4)= &H0SenDataR(5)= &H2SenDataR(6)= &HF5SenDataR(7)= &HCMSComm1.OutBufferCount = 0 '清空接受缓冲区MSComm1.InBufferCount = 0 '清空发送缓冲区MSComm1.Output = SenDataR '发送数组变量read = ""Text5.Text = ""End SubPrivate Sub Form_Load()mPort = Val(Text2.Text) '端口号默认端口3MSComm1.Settings = Val(Text3.Text)& ",n,8,1" '波特率默认9600MSComm1.OutBufferCount = 0MSComm1.InBufferCount = 0MSComm1.RThreshold = 1 '据接收到一个数就响应oncomm事件MSComm1.InputMode = comInputModeBinary '二进制发送模式MSComm1.PortOpen = True '端口打开End SubPrivate Sub MSComm1_OnComm()Dim getData_len As Long '长整型Dim getDataR()As Byte '字节型Dim j As Integer '整型If mEvent = comEvReceive Then 'mscomm控件 comEvReceive 事件触发getDataR = MSComm1.Input '将接收返冲区数据读入变量getData_len = UBound(getDataR)'Long 型数据,其值为指定的数组维可用的最大下标。
VB 6.0的MSComm通信控件应用举例
VB 6.0的MSComm通信控件应用举例
程巍巍
【期刊名称】《合作经济与科技》
【年(卷),期】2009(000)007
【摘要】本文介绍了基于VB6.0的MSComm通信控件相关理论,并以一个实例演示了MSComm控件的主要属性.
【总页数】2页(P124-125)
【作者】程巍巍
【作者单位】西安欧亚学院信息工程学院
【正文语种】中文
【中图分类】F49
【相关文献】
1.基于VB6.0串口通信控件的单线器件的数据传输方法 [J], 倪春雷;谌国森
2.在VB6.0中利用通信控件通过Modem拨号实现远程通信的原理与方法 [J], 张世福;陈海莲
3.用VB6.0为华光可编程序控制器定制通信控件 [J], 张新;张正道;王强
4.VB6.0中MSCOMM通信控件的应用 [J], 纪秀花;王广河
5.基于VB通信控件MSComm实现计算机与欧姆龙PLC串行通信编程的研究与应用 [J], 张红军;韦晓明;苏锐生
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB6.0下用MSComm控件实现串口通信MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能,以下先对其属性进行详细的说明后再举一个例子进行说明:1基本属性CommPortO mPort[=value]Object为MSComm控件,value为整数值,标志端口号。
说明:该属性设置并返回通讯端口号,value的值可以设为1-16间的任意数(默认为1)。
在打开端口之前必须先设置CommPort属性,当端口不存在时,如果用PortOpen属性打开它,MSComm控件会产生错误68(即设备无效的错误)。
SettingsObjiect.Setting[=value]Object为MSComm控件,value为字符串类型,表示通讯端口的设置值。
说明:本属性用来设置并返回端口的波特率、奇偶校验位、数据位和停止位参数。
当端口打开时,如果指定的value参数非法,则MSComm控件产生380号(非法属性值)错误。
有效的value参数值由四个设置值组成,有如下格式:“BBBB,P,D,S”,其中BBBB为波特率,P为奇偶校验,D为数据位数,S为停止位数。
Value的默认值为:“9600,N,8,1”,下面给出合法的波特率、奇偶校验位、数据位和停止位参数:波特率:110,300,600,1200,2400,4800,9600(默认),14400,19200,28800,38400,56000,57600,115200,128000,256000。
奇偶校验值:E(偶校验,Even)、M(标记,Mark)、N(默认,Default,None)、O(奇校验,Odd)、S(空格,Space)。
数据位值:4,5,6,7,8(默认),9。
停止位值:1(默认),1.5,2。
PortOpenO bject.PortOpen[=value]Object为MSComm控件。
Value为布尔类型,表明通讯端口的状态。
说明:本属性用来设置或返回通讯端口的状态(开或关)。
在设计时本属性无效。
设置PortOpen属性为True时端口将会被打开。
设置为False时将关闭端口并清除接收和传输缓冲区中的数据。
当应用程序终止时,SMComm控件自动关闭串行端口。
在打开端口之前,必须给CommPort属性设置一个合法的端口号。
如果CommPort属性被设置成一个非法的端口号,则在打开端口时,MSComm控件将产生错误码为68(表示设备无效)的错误。
另外,串行端口设备必须支持Settings属性的当前设置值。
如果Settings属性包含硬件不支持的通讯设置值,则硬件可能不会正常工作。
如果在端口打开之前,DTREnable 或RTSEnable属性被设置为True,则在关闭总线时,这些属性将被设置为False。
否则DTR 和RTS线仍将保持其先前的状态。
InputObject.InputObject为MSComm控件。
说明:本属性用来返回并删除接收缓存区中的数据流。
在设计时本属性无效;在运行时为只读属性。
InputLen属性用来确定被Input属性读取的字符数。
如要InputLen属性值设为0,则Input 属性将读取缓冲区中的所有数据。
InputMode属性确定用Input属性读取的数据类型。
如果InputMode属性设置为comInputModeText,则Input属性将会通过一个Variant类型值返回文本数据。
如果设置为InputModeBinary,则Input属性将通过一个Variant类型返回一个二进制数据的数组。
InputLenObject.InputLen[=value]Object为MSComm控件。
Value为整数类型。
表示Input属性从接收缓冲区读取的字符数。
说明:本属性用来设置并返回Input属性从接收缓冲区读取的字符数。
本属性的默认值是0.当InputLen属性值为0时,使用Input属性将使MSComm控件读取缓冲区中的全部内容。
若接收缓冲区中InputLen属性值表示字符无效,InputLen将会返回一个0长度的字符串(””)。
在使用Input属性之前,用户可以选择检查InBufferCount属性来确定缓冲区中是否已有需要数目的字符。
本属性在输出格式为定长数据的机器读取时非常有用。
InputModeO bject.InputMode[=value]Object为MSComm控件。
Value为整数类型,表示输入模式。
说明:本属性用来设置或返回Input属性取回的数据的类型。
InputMode属性用来确定Input属性如何取回数据。
数据取回的格式或是字符串或是一个二进制数组。
若数据只用ASSIC字符集,则用comInputModeText设置。
对其它字符数据,如数据中嵌有控制字符、Nulls等,则使用comInputModeBinary设置。
InBufferSizeObject.InBufferSize[=value]Object为MSComm控件。
Value为整数类型,表示接收缓冲区的字节数。
说明:本属性用来设置并返回接收缓冲区中的字节数。
InBufferSize属性是指整个接收缓冲区的大小。
默认值是1024字节。
不要将本属性与InBufferCount混淆,InBufferCount属性返回的是当前在接收缓冲区中等待的字符数。
注意:接收缓冲区越大则应用程序可用的内存越小。
但若接收缓冲区太小,若不使用联络协议,就有可能溢出。
一般的规律是,首先设置一个1024字节的缓冲区。
如果出现溢出错误,则通过增加缓冲区的大小来控制应用程序的传输速率。
InBufferCountObject.InBufferCount[=value]Object为MSComm控件。
Value为整数类型,表明在接收缓冲区中等待的字符数。
在设计时本属性无效。
说明:本属性用来返回接收缓冲区中等待的字符数。
在设计时本属性无效。
InBufferCount属性指调制解调器已接收,并在接收缓冲区中等待被取走的字符数。
可以把InBufferCount属性设为0来清除接收缓冲区。
注意:不要把本属性与InBufferSize属性混淆。
InBufferSize属性用来返回整个接收缓冲区的大小。
OutBufferCountObject.OutBufferCount[=value]Object为MSComm控件。
Value为整数类型,设定用于在传输缓冲区中等待的字符数。
说明:本属性用来返回在传输缓冲区中等待的字符数,也可以使用本属性来清除传输缓冲区。
在设计时本属性无效。
将OutBufferCount设为0时可以清除传输缓冲区。
注意:不要把OutBufferCount和OutBufferSize属性混淆,OutBufferSize属性的作用是返回整个传输缓冲区的大小。
OutBufferSizeObject.OutBufferSize[=value]Object为MSComm控件。
Value为整数类型,指定传输缓冲区的大小。
说明:本属性可以以字节的形式来设置并返回传输缓冲区的大小。
OutBufferSize属性用来指定整个传输缓冲区的大小,默认值为512字节。
不要把本属性与OutBufferCount属性混淆,OutBufferCount属性用来返回当前在传输缓冲区中等待的字符数。
注意:传输缓冲区越大,应用程序可用的内存越小。
但若传输缓冲区太小,若不使用握手协议,就可能有溢出的危险。
一般来说,可以设置一个512字节的缓冲区。
如果出现溢出错误,则可以通过增加传输缓冲区大小来控制应用程序的传输速率。
SThresholdObject.SThreshold[=value]Object是MSComm控件。
Value是整数类型,表示在OnComm事件产生之前在传输缓冲区中的最小字符数。
说明:本属性用来在MSComm控件将CommEvent属性设置为comEvSend并产生OnComm事件之前,设置并返回传输缓冲区中允许的最小字符数。
若Sthreshold属性设置为0(默认值),则表示数据传输事件不会产生OnComm事件。
若Sthreshold属性设置为1,则当传输缓冲区为空时由MSComm控件产生OnComm事件。
发果在传输缓冲区中的字符数小于value参数指定的数值,则CommEvent属性将被设置为comEvSent,并产生OnComm事件。
comEvSend事件仅当字符数与Sthreshold属性设置值交叉时被激活一次。
例如,如果将Sthreshold属性设置为5,则只有当在传输队列中字符数从5降到4时,comEvSend才会发生一次。
如果在输出队列中从没有比Sthreshold属性值更多的字符,comEvSend事件将不会发生。
RThresholdObject.RThreshold[=value]Object为MSComm控件。
Value为整数类型,表示在产生OnComm事件之前需要接收的字符数。
说明:本属性用在MSComm控件将CommEvent属性设置为comEvReceive,并产生OnComm事件之前,设置并返回需要接收的字符数。
当接收字符后,若RThreshold属性被设置为0(默认值)则表示将不产生OnComm事件。
例如,将RThreshold属性值设置为1将表示接收缓冲区收到每一人字符都会使MSComm控件产生OnComm事件。
RTSEnableObject.RTSEnable[=value]Object为MSComm控件。
Value为布尔类型,表有Request To Send(RTS)线是否有效。
说明:本属性用来设置一个确定是否使Request To Send(RTS)线有效的布尔类型值。
一般情况下,由计算机发送Request To Send信号到联接的调制解调器,以请示是否允许发送数据。
如果RTSEnable属性设置为True,当端口打开时,Request To Send线被设置为高电平,当端口关闭时,该线被设置为低电平。
Request To Send线的作用是为RTS/CTS硬件进行握手。
RTSEnable属性允许手动检测Request To Send线,以确定其是否处于有效状态。
其值为True表示Request To Send线有效,为False表示无效。
DTREnableObject.DTREnable[=value]Object为MSComm控件。
Value为布尔类型,表示是否设置Data Terminal Ready(DTR)线有效。
说明:本属性用来确定在通信时是否使Data Terminal Ready(DTR)线有效。
Data Terminal Ready是由计算机发送到调制解调器的信号,指示计算机在等待接受传输。