MSComm控件参考

合集下载

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控件应用讲义

第12章 VB应用12.1 MSComm控件可以通过它对计算机的RS-23串行通信口进行读写操作1.主要属性设置:(1)CommPort属性:设置通信端口,一般计算机上1-2个RS-232口,由此属性指定使用哪个口,设定其值为1则表示使用1端口。

(2)Settings 属性:默认值“9600,n,8,1”。

9600——波特率n ——效验方式。

“n”不效验8 ——数据位1 ——停止位(3)Sthreshold 属性:设置要返回多少个字符才发生MSComm1_OnComm事件2.两台计算机串行通信的硬件接线A计算机的串口2脚(发送)——B计算机的串口3脚(接收)A计算机的串口3脚(接收)——B计算机的串口2脚(发送)A计算机的串口5脚(地)——B计算机的串口5脚(地)1.读写操作Private Sub Command1_Click() '发送MSComm1.Output = Text1.TextEnd SubPrivate Sub Command2_Click() '清空1Text1.Text = ""End SubPrivate Sub Command3_Click() '发送Text2.Text = MSComm1.InputEnd SubPrivate Sub Command4_Click() '清空2Text2.Text = ""End SubPrivate Sub Form_Load()MSComm1.PortOpen = TrueEnd Sub4.应用MSComm1_OnComm事件自动接收设置Sthreshold 属性为1,当有一个及以上字符进入串行口,发生MSComm1_OnComm事件。

Private Sub MSComm1_OnComm()Text2.Text = Text2.Text + MSComm1.InputEnd 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默认为一组。

MSComm控件属性与事件

MSComm控件属性与事件

MSComm控件属性与事件1、CommPort属性•功能:设置或返回通信端口号。

•语法:–void CMSComm::SetCommPort(short nNewV alue); //设置串口号–short CMSComm::GetCommPort(); //查询当前串口号•说明:–nNewV alue取值范围:1~16,但是如果用SetPortOpen属性打开一个不存在的串口号,将产生错误。

•注意:–必须在打开端口之前设置CommPort属性。

程序://根据当前端口号选择所要打开的串口m_Comm.SetCommPort(atoi(m_strCOM.Mid(3,1)));2、PortOpen属性•功能:用于打开或关闭串口,或者返回串口的开关状态。

•语法:–void CMSComm::SetPortOpen(BOOL bNewV alue);–BOOL CMSComm::GetPortOpen();•说明:–bNewV alue=TRUE,则打开串口;–bNewV alue=FALSE,则关闭串口;–当程序终止时,MSComm控件会自动关闭。

–BOOL CMSComm::GetPortOpen(),返回值为真,则串口已打开,否则,未打开;程序if(m_Comm.GetPortOpen()){m_Comm.SetPortOpen(FALSE);}if(!m_Comm.GetPortOpen()){m_Comm.SetPortOpen(TRUE);//打开串口按钮颜色正常GetDlgItem(IDC_BUTTON_OPENPORT)->EnableWindow(FALSE);//关闭串口按钮颜色变灰GetDlgItem(IDC_BUTTON_CLOSEPORT)->EnableWindow(TRUE);}else{AfxMessageBox("cannot open serial port");}3、RThreshold属性•功能:•语法:–void CMSComm::SetRThreshold(short nNewV alue);–short CMSComm::GetRThreshold();•说明:–接收缓冲区收到nNewV alue个字符时产生OnComm事件。

MSComm控件使用详解

MSComm控件使用详解

MSComm控件使用详解2008-04-06 19:15:39| 分类:Windows编程|举报|字号订阅MSComm控件使用详解MSComm控件的常用属性1.MSComm1.Settings:=’9600,n,8,1’; //设置波特率,校验位,数据位,停止位Settings属性: 设置串口的波特率,校验位,数据位,停止位, ’9600,n,8,1’表示波特率为9600,无奇偶校验,数据位为8为,1位停止位MSComm1.InBufferSize:=1024; // 接受缓冲区大小InBufferSize 属性:接收缓冲区的大小,默认值为1024,也可以自己设定,比如, MSComm1.InBufferSize:=2000,则接收缓冲区的大小为2000字节MSComm1.OutBufferSize:=1024; // 发送缓冲区大小OutBufferSize属性:发送缓冲区的大小,默认值为1024,也可以自己设定,比如,MSComm1.OutBufferSize:=2000,则发送缓冲区的大小为2000字节MSComm1.InBufferCount:=0; //清空接受缓冲区InBufferCount属性:当前接收缓冲区接收到的数据的长度, count:=MSComm1.InBufferCount,则count值就是接收缓冲区接收到的数据的长度,对InBufferCount 赋值MSComm1.InBufferCount:=0,可以清空接受缓冲区MSComm1.OutBufferCount:=0; //清空发送缓冲区OutBufferCount属性:当前发送缓冲区中数据的长度,对OutBufferCount 赋值MSComm1. OutBufferCount:=0,可以清空发送缓冲区MSComm1.InputMode:=comInputModeText;// 以文本方式取回数据MSComm1.InputMode:=comInputModeBinary; //设置接收数据模式为二进制形式InputMode属性:串口接收数据的模式, comInputModeText(0)表示以文本(ASCII)方式取回数据,comInputModeBinary(1)表示以二进制方式取回数据comInputModeText, comInputModeBinary为预定义常量,分别表示0,1 RcvByte:=MSComm1.InputInput属性:通过Input属性可以读取串口中接收到的数据,RcvByte:=MSComm1.Input表示读取串口接收到的数据,其中RcvByte的数据类型为: array of Byte 或array of Variant.在读取之前先设置RcvByte的长度:SetLength(RcvByte,len),如果一次读取所有数据,则SetLength(RcvByte, MSComm1.InBufferCount)MSComm1.Output:= OutputDatOutput属性:通过Output属性可以发送数据, MSComm1.Output:=OutputDat,则将OutputDat中的数据发送出去,其中OutputDat数据类型为array of Byte,发送前要设置OutputDat的长度, SetLength(OutputDat,len),然后向OutputDat中填入数据,再清空发送缓冲区MSComm1.OutBufferCount:=0,然后再发送MSComm1.Output:=OutputDatMSComm1.InputLen:=0;////////////// 一次读取所有数据/////////InputLen属性:一次从Input属性中读取数据的长度, MSComm1.InputLen:=1,表示一次读取一个字节,如果MSComm1.InputLen:=0,则表示一次读取全部数据MSComm1.SThreshold:=0;//一次发送所有数据,发送数据时不产生OnComm 事件SThreshold属性:通过该属性设置产生OnComm 事件(发送时产生)的阀值,若MSComm1.SThreshold:=0, 则一次发送所有数据,发送数据时不产生OnComm 事件, 若MSComm1.SThreshold:=5,当发送缓冲区的字节数从5字节减少到4字节时, 产生OnComm 事件MSComm1.RThreshold:=1;//////////// 每接收1个字节就产生一个OnComm 事件RThreshold属性: 通过该属性设置产生OnComm 事件(接收时产生)的阀值,若MSComm1.RThreshold:=0,不产生OnComm 事件,若MSComm1.RThreshold:=5,接收缓冲区每收到5字节时,则产生OnComm 事件MSComm1.PortOpen:=True; //打开串口PortOpen属性:设置端口的打开与关闭,打开端口MSComm1.PortOpen:=True,关闭端口MSComm1.PortOpen:=FalsemPort:=CommPort;CommPort属性:设置端口号, mPort:=1, 设置端口号为COM1CommEvent属性: 常用的两个comEvReceive, comEvSendOnComm 常数常数值描述comEvSend 1 发送事件。

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类型数变量中。

mscomm32控件属性

mscomm32控件属性

---- 1、常用属性CommPort:设置或返回串行端口号,缺省为1。

Setting:设置或返回串行端的波特率、奇偶校验位、数据位数、停止位。

缺省值为"9600,N,8,1"。

PortOpen:设置它为True则打开端口,设置它为False则关闭端口。

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

InBufferCount:返回接收缓冲区内的等代读取的字节个数,设属性为0清除接收缓冲区。

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

OutBufferCounter:返回发送缓冲区内等待发送的字符数,可用0来清空缓冲区。

Output:向发送缓冲区传送数据RThreshold: 该属性确定当接收缓冲区内字节个数达或超过该值后就产生代码为ComEventReceive的OnComm事件,设置位0,则不产生OnComm事件。

CommEvent:有通讯错误或事件发生时产生OnComm事件,CommEvent事件的值可以用来确定引发OnComm事件的具体的错误或事件常用的有以下几种(更详细的资料可参考MSComm控件帮助文件)ComEventbreak:接受到中断信号ComEventFrame:硬件检测到帧错误。

ComEventRxOver:接收缓冲区溢出。

ComEventTxFull:发送缓冲区溢出。

ComEventReceive:接受到规定的字符数。

InputLen:设置或返回接收缓冲区内用Input读入的个数。

若取0,则读取整个缓冲区的内容。

Input:返回并删除接受缓冲区的数据。

---- 2、示例:---- 下面举一接收程序示例:制作一通讯接收窗口,选择菜单Controls→OLE→Insert Control→MicrosoftCommunications Control,---- 在窗口中出现通信控件图标单击鼠标右键,选择OCX Properties设置常用属性,也可在程序中进行设置窗口的Open事件程序如下ole_mPort=2ole_1.object.Settings="9600,N,8,1"ole_1.object.PortOpen=tureole_1.object.Rthreshold=10ole_1.object..Inputlen=0 . .通信控件的oncomm事件的程序如下choose case ole_mEventcase comEventBreak //接收到中断信号case comEventCDTO //处理CD超时. . .case comEvReceive sle_1.text=ole_1.object.Input. .end choose利用Microsoft公司提供的通讯控件利用Microsoft公司提供的通讯控件(Mscomm.vbx,用于16位通讯程序、Mscomm32.ocx用于开发32位通讯程序)可方便实现串口通讯。

在delphi7中利用mscomm控件编程

在delphi7中利用mscomm控件编程

MSCOmm是微软一个强大的串口通讯的控件,其强大,简单的特点今我们不舍,在Delphi中我们也可以使用它。

下面这些代码是针对发送和接收为16进制处理的。

varsenddata:array[1..10] of char;reData:array of Variant;sendstr:string;restr:string;i:longint;beginmPort := 1; //指定端口mscomm1.Settings := '9600,N,8,1'; //其它参数mscomm1.InBufferSize := 1024; //接收缓冲区mscomm1.OutBufferSize := 1024; //发送缓冲区mscomm1.InputMode := comInputModeBinary; //接收模式mscomm1.InputLen := 0; //一次读取所有数据mscomm1.SThreshold := 0; //一次发送所有数据mscomm1.InBufferCount := 0; //清空读取缓冲区mscomm1.OutBufferCount := 0; //清空发送缓冲区mscomm1.PortOpen:=true; //打开端口MSComm1.RThreshold := 16; //设置接收多少字节开产生oncomm事件senddata[1]:=chr($06); //要发送的数据senddata[2]:=chr($03);senddata[3]:=chr($00);senddata[4]:=chr($03);senddata[5]:=chr($10);sendstr:='';for i:=1 to 5 dosendstr:=sendstr + senddata[i];mscomm1.output:=sendstr; //发送数据i:=0;bzw:=false;repeatsleep(10);Application.ProcessMessages;i := i + 1;If i > 30000 Thenbeginshowmessage('发送超时!');break;end;Until bzw = true;redata:=mscomm1.Input; 接收数据restr:='';for i:=0 to vararrayhighbound(redata,1) dorestr:=restr + inttohex(redata[i],2)+' '; mscomm1.PortOpen:=false;flatmemo1.Text:=restr;end;//oncomm事件procedure TForm1.MSComm1Comm(Sender: Tobject); begincase mEvent ofcomEvReceive: bzw := true;end;end;最后,记事发布软件时要带上Mscomm32.ocx文件。

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

MSComm控件参考MSComm是Microsoft Communications Control的简称,它是Microsoft公司提供的简化Windows下串口编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。

(一)MSComm控件的属性MSComm控件有很多重要的属性,但首先必须熟悉几个属性:CommPort—设置并返回通信端口号;Settings—以字符串的形式设置并返回数据传输速率、奇偶校验、数据比特、停止比特;PortOpen—设置并返回通信端口的状态,也可以打开和关闭端口;Input—从接收缓冲区返回和删除字符;Output—向传输缓冲区写一个字符串。

下面分别描述MSComm控件的属性。

(1)?????? CommPort属性void SetCommPort(short nNew Value);short GetCommPort();这一属性用于设置并返回连接的串行端口号,Windows将会利用该串口和外界通信。

在设计时,nNewValue 可以设置成从1~16的任何数(默认值为1)。

但是如果用PortOpen属性打开一个并不存在的端口时,MSComm控件会产生错误68(设备无效)。

注意:必须在打开端口之前设置CommPort属性。

(2)?????? Settings属性void Settings(LPCSTR IpszNewValue); String GetSettings();该属性用于设置并返回数据传输速率、奇偶校验、数据比特、停止比特参数。

当端口打开时,如果value非法,则MSComm控件产生错误380(非法属性值)。

其中IpszNewValue用字符串表示,由四个设置值组成,有如下的组成格式:?????? “BBBB,P,D,S”?????? 这里BBBB为数据传输速率,P为奇偶校验,D为数据比特数,S为停止比特数。

value的默认值是:“9600,N,8,1”,表示传输速率为9600bit/s,无奇偶校验,8bit数据比特,1bit停止比特。

数据传输速率的合法值可以是:110、300、600、1200、2400、4800、9600、14 400、19 200、28 800、38 400、56 000、57 600、115 200、12 800、25 600。

注意:只有当通信的双方的Settings属性值都一样,通信连接才能生效。

(3)?????? Handshaking属性这一属性用于设置或者返回硬件握手协议,也就是PC机和通信设备之间为了控制流速而设定的内部协??????void SetRThreshold(short nNew Value);? short GetRThreshold()在MSComm控件设置CommEvent属性为comEvReceive并产生OnComm之前,RThreshold属性设置并返回的要接收的字符数。

这里nNewValue是short型参数,说明在产生OnComm事件之前要接收的字符数。

当接收字符后,若RThreshold属性设置为0(默认值)则不产生OnComm事件。

否则,该属性为一阈值,当接收缓冲区那字节个数达到或超过该值后就会产生OnComm事件,例如,设置RThreshold为1,接收缓冲区收到每一个字符都会使MSComm控件产生OnComm事件。

(4)?????? CTSHolding属性void SetCTSHolding(BOOL bNewValue);?? BOOL GetCTSHolding();送到相联计算机的信号,指示传输可以进行。

该属性在设计时无效,在运行时为只读。

如果Clear To Send线为低电平(CTSHolding=FALSE)并且超时时,MSComm控件设置CommEvent 属性为comEventCTSTO(Clear To Send Timeout)并产生OnComm事件。

Clear To Send线用于RTS/CTS(Request To Send)硬件握手。

如果需要确定Clear To Send线的状态,CTSHolding属性给出一种手工查询的方法。

(5)?????? SThreshold属性void SetSThreshold(short nNewValue);? short GetSThreshold();MSComm控件设置CommEvent属性为comEvSend并产生OnComm事件之前,设置并返回传输缓冲区中允许的最小字符数。

这里nNewvalue是short型数据,代表在OnComm事件产生之前在传输缓冲区中的最小字符数。

若设置SThreshold属性为0(默认值),数据传输事件不会产生OnComm事件。

若设置SThreshold 属性为1,当传输缓冲区完全空时,MSComm控件产生OnComm事件。

如果在传输缓冲区的字符数小于Value,CommEvent属性设置为comEvSend, 并产生OnComm事件。

comEvSend事件仅当字符数与SThreshold交叉时被激活一次。

例如,如果SThreshold等于5,仅当在输出队列中字符数从5降到4时,comEvSend才发生。

如果在输出队列中从没有比SThreshold多的字符,comEvSend事件将绝不会发生。

?????? (6)InputMode属性?????? void SetInputMode(long nNewValue);? long GetInputMode();该属性用于设置或者返回传输数据的类型。

其取值和基本含义如表4所示。

void SetInPutLen(short nNewValue);short GetInPutLen();该属性用于设置并返回Input属性从接收缓冲区读取的字符数。

nNewvalue是short型数值,说明Input 属性从接收缓冲区读取的字符数。

InPutLen属性的默认值是0。

当设置InPutLen为0时,使用Input将MSComm控件读取接收缓冲区中全部的内容。

若接收缓冲区中InPutLen字符无效,Input属性返回一个零长度字符串(〝〞)。

在使用Input 前,用户可以选择检查InBufferCount属性来确定缓冲区中是否已有需要数目的字符。

该属性在从输出格式为定长数据的机器读取数据时非常有用。

(8)InBuffersize属性void SetInBufferCount(short nNewValue);short GetInBufferSize();InBuffersize属性用于设置或返回输入缓冲区的大小,默认值为1024字节。

(9)InBufferCount属性?????void SetInBufferCount(short nNewValue); short GetInBufferCount();? ???InBufferCount属性用于返回输入缓冲区内的等待读取的字节个数,可以通过该属性值为0来清除接收缓冲区。

(10)Input属性VARIANT GetInput();Input属性表示从接收缓冲区移走一串字符,将缓冲区中收到的数据读入变量。

属性值为Variant型变量。

该属性在端口未打开时不可用,在运行时是只读的。

注意:当InputMode属性值为0时(文本模式),变量中含String型数据。

当InputMode属性值为1(二进制模式时),变量中含Byte型数组数据。

(11)PortOpen属性void SetPortOpen(BOOL bNewValue);? BOOL GetPortOpen();PortOpen属性用于打开或者关闭端口。

如果bNewValue设为True,可以打开端口;设为False时可以关闭端口。

一般情况下在程序开始时打开端口,在程序结束时关闭端口。

当你的应用程序终止时,MSComm控件将自动关闭串口。

在打开端口前,确定CommPort属性设置为正确的端口号。

而且,用户的串口设备必须支持Settings属性中的设置。

如果硬件设备不支持Settings属性中的一些设置,则硬件工作或许不正确。

(12)OutBuffersize属性void SetOutBufferSize(short nNewValue);OutBuffersize属性用于设置或者返回发送缓冲区的大写,值为整型表达式,表示传输缓冲区的字节数,默认值为512字节。

对发送缓冲区设置的越大,应用程序可以使用的内存就越少。

然而,如果你的发送缓冲区太小,缓冲区将会溢出,除非使用握手协议。

(13)outBufferCounter属性void SetOutBufferSize(short nNew Value);? short GetOutBufferSize();outBufferCounter属性用于返回发送缓冲区内等待发送的字节数,可以用来清空发送缓冲区。

(14)?? OutPut属性void SetOutput(const VARIANT& newValue);OutPut属性用于向发送缓冲区写数据流。

属性为Variant变量。

该属性在端口未打开时不可用,在运行时是只写的。

注意:OutPut属性.可以发送文本数据或二进制数据。

传输文本数据时,应该将字符型数据放入Variant型标量中;传输二进制数据(即按字节传送)时,应将字节型数据放入Variant型变量中。

如果通常给应用程序发送ANSI字符串,可以以文本方式发送。

如果数据包含了内嵌控制字符,Null字符等,必须将其作为二进制传递过去。

(15)??????? CommEvent属性short GetCommEvent();如果在通信过程中发生错误或事件,将会引发OnComm事件并且改变其属性值。

CommEvent属性值反映错误或者事件类型,通信程序的设计中可以根据该属性值执行不同的操作。

该属性在端口未打开时不可用,在运行时是只读的。

通信错误的设定值如表5所示,通信事件的设定值如表6所示。

???????void SetDTREnable(BOOL bNewValue);? BOOL GetDTREnable();DTREnable属性确定在通信时是否使DTR(Data Terminal Ready)线有效,DTR使计算机发送到调制解调器的信号,表明计算机在等待数据传输。

(17)??????? RTSEnable属性void SetRTSEnable(BOOL bNewValue);? BOOL GetRTSEnable();RTSEnable属性确定是否使RTS(Request To Send)线有效,一般情况下,由计算机发送RTS信号到连接的调制解调器,请求允许发送数据。

相关文档
最新文档