基于VB 6.0的串口通讯程序设计

合集下载

基于VB6_0的多方式串口通信实现

基于VB6_0的多方式串口通信实现

基于VB6.0的多方式串口通信实现侯志军1) 高媛媛2) 沙 楠1)(解放军理工大学通信工程学院研一队1) 南京 210007) (解放军理工大学通信工程学院无线通信系2) 南京 210007)摘 要:串口通信因其通信线路简单、使用灵活方便,在许多领域应用广泛。

基于串口通信和MSComm控件原理,详细介绍了利用VB6.0编程实现手动和自动发送字符/数据、文本文件等多方式串口通信的方法,并给出了具体程序和解释。

对VB6.0编程者的学习具有一定的启发和参考价值。

关键词:RS-232 Visual Basic6.0(VB6.0) MSComm 多方式 串口通信中图分类号:TN915.05Use VB6.0to Program Multimode Serial Communication ProgramHou Zhijun1) Gao Yuanyuan2) Sha Nan1)(Postgraduate Team1ICE,PLAUS T1),Nanjing 210007)(Department of Radio Communication,ICE,PLAUST2),Nanjing 210007)Abstract:Serial communication program has broad application in many fields because of its simple communication circuitry,flexible uses.Based on the principle of serial communication program and MScomm control,the article introduces using VB6.0to program the Mu-l ti mode Serial Communication program such as manual or automatic transmitting symbol/data,text file etc.,then gives a concrete program and explanation.It will be useful to the people who study VB6.0.Key words:RS-232,Visual Basic6.0,MSComm control,mul timode,serial communication programClass number:TN915.05串口通信由于具有通信线路简单、使用灵活方便、数据传输可靠等优点,在工业监控、数据采集和实时控制等场合得到了广泛的应用。

VB6.0下MSComm控件实现串口通信

VB6.0下MSComm控件实现串口通信

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为布尔类型,表明通讯端口的状态。

基于VB6.0的PC机与单片机串口通讯的实现

基于VB6.0的PC机与单片机串口通讯的实现

基于VB6.0的PC机与单片机串口通讯的实现魏延萍【期刊名称】《信息技术》【年(卷),期】2011(000)007【摘要】RS-232 serial port is used to carry out the communication between PC and singlechip microcomputer. The hardware connection scheme and the associated communication protocols are designed in details. The MSComm component is researched, and the communication program based on VB6.0 is developed, and the detailed programming is presented. An example proved that the design is stable and reliable, and can satisfy the design requirement and function, and the system is provided with a good reference value for developing similar system.%应用RS-232串口实现PC机与单片机之间的通讯,设计了其硬件连接电路及相关通讯协议.研究了MSComm控件,并编写了基于VB6.O的通讯软件程序,给出了详细的程序设计.通过实例,证明该设计运行稳定可靠,能满足设计的需求和功能,对于开发类似的系统具有很好的参考价值.【总页数】3页(P38-40)【作者】魏延萍【作者单位】宝鸡文理学院物理与信息技术系,宝鸡721007【正文语种】中文【中图分类】TP311.1【相关文献】1.基于VC6.0的多台MSP430单片机和PC机串口通讯实现方案 [J], 周辉军;许亮;韩瑞宁2.基于VB6.0的PC机与多单片机串行通信设计与实现 [J], 孔德刚;肖海荣;安国建;刘文江3.利用VB6.0实现PC机与单片机的串口通讯 [J], 付旭;方康玲4.基于VB6.0实现单片机与PC机的串口通信 [J], 陈代胜;张莉君;;;5.基于VB6.0实现PC机与单片机的串行通讯 [J], 杨佩璐因版权原因,仅展示原文概要,查看原文内容请购买。

VB6.0串口操作

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 "COM4"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 "7"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重要:一。

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)来加快应用程序关键部分的执行速度。

基于VB6.0的串口通信方法

基于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实现串行通信

用VB6_0实现串行通信
职业与教育 CASE ANALYSIS 实战案例 编 辑| 王 海 英| zhiyezazhi@163.com
用 VB6.0 实现串行通信
文/ 李 思
MSCOMM 控 件 实 现 了 基 础 封 装 , 省 去 对 硬 件 底 层 的开发, 通过对该控件提供的属性的设置和事件的处理, 方便实现串口间的通信。
comopt (3) =Mid (nextline,5,Len (nextline) - 4) Case “端” comopt (4) =Mid (nextline,5,Len (nextline) - 4) End Select Loop Close # 1 2. 参数设置— —— Form2 重设 参 数 , 点 击 保 存 按 钮 保 存 设 置 值 于 ComOpt.INI 文件中, 刷新 MSCOMM 控件。代码如下: Form1.MSComm1.Settings = “Combo1.Text &” , “& Combo2.Text&”, “&combo3.text&”, “&combo4.text” Form1.MSComm1.CommPort = Val (comopt (4)) Form1.MSComm1.PortOpen = True cFileCombo1.Text,Combo2.Text,Combo3.Text,Combo4. Text,Str (Idx) Unload Form2 ComOpt.INI 文件格式为: 速率= 9600 奇偶校验=n 字符长度=8 停止位=0 端口号=1 cFile 子程序如下: Set cf=CreateObject (“Scripting.FileSystemObject”) Set tf=cf.CreateTextFile (“comopt.ini”,True) tf.WriteLine (“R = ”&rate) tf.WriteLine (“C= ”&chk) tf.WriteLine (“S= ”&slen) tf.WriteLine (“P= ”&splen) tf.WriteLine (“N= ”&cpn) tf.Close 3. 发送数据 点击发送按钮。代码如下: MSC omm1.O utput= T ext1.T ext 4. 接收数据 ( 1) 接收按钮单击事件: If Check1.Value=1 Then If Command2.Caption= “接收” Then Command2.Caption= “停止” Else Command2.Caption= “接收” End If Else T ext2.T ext= MSC omm1.Input End If ( 2) OnComm 事 件 : 本 文 利 用 CommEvent 的 comEvR eceive 状态, 当 OnComm 事件触发时, 自动处理 用户设定的程序, 代码如下: Select Case MSComm1.CommEvent Case comEvR eceive If Check1.Value=1 And Command2.Caption= “停止” Then T ext1.T ext= T ext1.T ext&MSC omm1.Input End If End Select

基于VB6.0的串口通讯程序设计

基于VB6.0的串口通讯程序设计
维普资讯
ห้องสมุดไป่ตู้
基 于 VB 6 0的 串口通讯 程 序设 计 .
收 稿 日期 :20 — 7 1 02 0 — 9
基 于 V . B 6 0的 串 口通 讯程序设 计
D e i n o o r m o e i lCO m u c tO s d o s a s c 6・ s g f Pr g a f r S ra m ni a i n Ba e n Vi u lBa i 0
采 集 和对 设备 一级 的监控 ,上位 机则 要 完成对 整 个 系
MS o C mm 是 Mi o ot 司 提供 的主 要用 于 串行 c sf公 r
统 的 采集 、 析 、 分 处理 和控 制 以及 数 据 、图形显 示 、打 印、人 机对 话 等工 作 。而 上位 机 与下 位机 大多 是 通过 P C机 的 R - 2 2串行 接 口实 现 通 信 。随着 Wid ws S 3 no 系 统 的 普 及 ,越 来 越 多 的 用 户 由 D OS系 统 转 向 了 W id ws系统 , 使得 数据 采 集及 工业 控 制软 件 也上 no 这
升 到 了Wid w n o s环境 下 。这就 给程 序员 提 出 了如何 编
通 信编 程 的Acie t X控 件 。 t e v Aci X控 件包括 一 系列 的 v
属性 、 法和 事件 , 用程 序通 过 Acie 方 应 t X控 件 提供 的 v 接 口来访 问控件 的功能 。我 们 知道 通过 C、VC+ 编 写 +
它 以所 见 即所 得 的 可视 化 界 面设 计 风 格 和 3 2位 面 向 对象 程序 设计 的 特点 ,已被 广泛 应用 到各 个领 域 ,成
为众 多开 发人 员 采 用 的工 具 。VB不 但 提 供 了 良好 的

基于VB6.0的数据通信编程技术

基于VB6.0的数据通信编程技术

基于VB6.0的数据通信编程技术【摘要】本文介绍了基于Visual Basic 6.0、通过串行接口实现计算机之间、计算机与其它外接设备之间的数据通信编程技术,包括串口通信控件、该控件的设置控制编程方法等,并列举了一个发送和接收数据、实现数据通信的编程示例。

【关键词】数据通信;串口;编程1.引言某台计算机与其它的计算机或特殊的外接设备之间的数据通信,通常是通过串行接口(简称串口)或并行接口(简称并口)来实现的,这2种方式的区别在于通信的数据传送的方式和作用的距离的不同:串口一次只能传输1位数据,而并口能同时传送8位数据(即1个字节);并口能同时传输更多的信息,速度明显高于串口,但作用距离短,一般适用于与打印机、扫描仪等的通信;串口可以用于比并口作用距离更远的数据传送,主要用于与远距离的计算机或其它外接设备进行数据通信。

Visual Basic是Microsoft公司推出的一种集成开发环境,是当前在Windows 环境平台下优秀的程序设计工具之一,它提供了一整套工具,让程序员能够利用面向对象的编程技术,通过对象操作轻松地设计和实现与Windows操作系统风格一致的界面和相应的强大功能。

本文基于Visual Basic 6.0(简称VB6.0),介绍了计算机与其它远距离的计算机或外接设备之间应用串口通信控件、通过串口实现数据通信的编程技术,供读者参考。

2.串口通信控件2.1 串口简介串口具体是指计算机上的一个COM接口,是主要采用串行通信协议的扩展接口,一般的PC主板都提供2个串口(即COM1和COM2)。

通常情况下,COM1使用的是9针D形连接器,也称之为RS-232接口,可能有的PC主板COM2仍使用的是旧式的DB25针连接器,也称之为RS-422接口,但这种配置目前已经很少见了。

串口的本质功能其实是作为CPU和串行设备间的编码转换器,当数据从CPU经过串口发送出去时,字节数据被转换为串行的位,在接收数据时,串行的位又被转换为字节数据。

基于VB6.0的串口发送接收程序

基于VB6.0的串口发送接收程序

Public a, mun, m As Integer '定义全局变量a,mPrivate Sub Command1_Click() '步进度控制a = a + 1 '没按一次加一If a > 4 Then a = 0 '到四返0If a = 0 Then mun = 5 '下边几个为相应的步进档的显示值If a = 1 Then mun = 25If a = 2 Then mun = 50If a = 3 Then mun = 75If a = 4 Then mun = 100Text1 = munText2 = munText4 = munEnd SubPrivate Sub Command2_Click() '顺时针转动Dim temp(0) As Byte '定义串口输出数据类型On Error GoTo aatemp(0) = "&H" & a '把数据类型转化为十六进制MSComm1.OutBufferCount = 0 '清空串口输出缓冲器MSComm1.Output = temp '把数据送入串口aa:If Err.Number = 8018 Then MsgBox "串口无效,请更换串口号!" '当串口无效时候显示'Else'MsgBox "ERROR"'End IfResume NextEnd SubPrivate Sub Command3_Click() '逆时针转动On Error GoTo bb '定义串口输出数据类型Dim temp(0) As ByteDim b As Integerb = a '先把步进度暂时存放起来,赋值完再赋还给a;以免影响下次使用a = a + 5temp(0) = "&H" & a '把数据类型转化为十六进制MSComm1.OutBufferCount = 0 '清空串口输出缓冲器MSComm1.Output = temp '把数据送入串口a = bbb:If Err.Number = 8018 Then MsgBox "串口无效,请更换串口号!" '当串口无效时候显示'Else'MsgBox "ERROR"'End IfResume NextEnd SubPrivate Sub Command4_Click() '串口号选择,以下为串口初始化设置On Error GoTo wwm = Text3.TextmPort = m '使用COM 1 作为通信端口MSComm1.Settings = "9600,n,8,1" '波特率为9600, 无奇偶校验位, 8 个数据位, 一个停止位MSComm1.InputMode = comInputModeText '文本形式接收数据MSComm1.OutBufferSize = 5000MSComm1.InputLen = 0MSComm1.RThreshold = 1 '一次从接收缓冲区中读取全部字符数MSComm1.SThreshold = 0 '取全部字符数数If MSComm1.PortOpen = False ThenMSComm1.PortOpen = True '若COM 1 关闭则打开End Ifww:If Err.Number = 8002 Then MsgBox "串口无效,请更换串口号!" '当串口无效时候显示'Else'MsgBox "ERROR!"'End IfResume NextEnd SubPrivate Sub Form_Load() '窗口初始化设置Form1.Width = 14000Form1.Height = 9000 '窗口大小a = 0 '下边这几个是几个人控件的初值b = 0Text3 = 1Text1 = 5Text2 = 5Text4 = 5End SubPrivate Sub MSComm1_OnComm() '接收数据程序Select Case mEventCase comEvReceive ' '当串口无效时候显示R th resho ld 时引起O nComm 事件Text1.Text = Text1.Text + MSComm1.InputEnd SelectEnd Sub。

基于VB6.0的MSComm通信方法设计

基于VB6.0的MSComm通信方法设计

基于VB6.0的MSComm通信方法设计摘要:本文介绍了基于vb6.0的msm串行通信设计方法,并给出了计算机与智能采集模块进行通信的程序设计的框架。

关键词:串行通信,vb6.0,msm 1 前言在工业控制领域,我们经常需要进行计算机与其他设备之间的通信,而串行通信作为一种灵活、方便、可靠的通信方式被广泛采用。

在开发串行通信程序的过程中,利用微软的msm通信控件则相对较简单,该控件具有丰富的与串行通信密切相关的属性及事件,提供了对串口的各种操作。

msm控件在串口编程时非常方便,程序员不必花时间去了解较为复杂的api函数,而且在vb中容易使用。

2 用visual basic 6.0进行串行通信程序设计的方法(1)用visual basic 6.0进行串行通信程序的设计有两种方式,一是直接调用windows api,另一种方式是使用通信组件,但后一种方式实际上是通过通信组件间接的调用了windows api函数,其过程要比直接调用api要复杂,但是在程序的实现上要比前一种方式简单的多。

在操作系统方面,windows使用通信驱动程序m.drv,以便于应用程序能够使用标准的windows api函数来传递和接收数据。

串行外围设备的制造商则提供硬件驱动程序,以便让其硬件能与windows 连接。

使用msm控件时,实际上就是使用了api函数,api函数将被m.drv解释并传送给外围设备驱动程序,使用msm 的用户只需要关心如何使用msm所提供的属性或事件,以驱动api函数的接口完成工作。

串行通信程序的执行过程(2)msm提供了两种处理通信问题的方法,一是事件驱动方法,一是查询法。

①事件驱动法在使用事件驱动法设计程序时,每当有新字符到达或端口状态改变,或发生错误时,msm控件将触发onm事件,而应用程序在捕获该事件后,通过检查msm控件的mevent属性可以获知所发生的事件或错误,从而采取相应的操作。

这种方法的优点是程序响应及时,可靠性高。

基于VB6.0 的MSP430 单片机与PC 机串口通信设计

基于VB6.0 的MSP430 单片机与PC 机串口通信设计

基于VB6.0的MSP430单片机与PC机串口通信设计]摘要:串行通信已经成为计算机与其他设备进行数据交换最广泛的通信手段。

主要介绍了利用MSP430单片机的串口通信模块和VB6.0提供的串行通信控件MSComm实现PC机与MSP430单片机的串行通信,并着重阐述了在VB6.0环境下实现的主要过程。

1引言随着计算机技术的不断发展,计算机应用在其发展过程中逐步形成两大分支,一是通用计算机,PC机为代表,着眼于高速数值运算和数据处理,但实时测控能力较弱。

二是嵌入式微机,以单片机为代表,着重发展测控技术,但其数值运算和数据处理能力较弱。

目前,在工业控制以及数据采集和数据处理的大型系统中,由于PC机软件资源丰富,人机交互方便等优点。

以PC机作为上位机,以单片机组成的控制单元作为下位机,较好地实现测控及显示,又能较快地实现数据采集和处理。

逐渐成为现代工业控制领域的一个优化方案。

故提出了基于VB6.0的PC机与MSP430单片机串行通信的实现方法。

以RS485接口为基础,以PC机为上位机,以MSP430系列单片机为下位机。

通过VB6.0实现了对各个下位机控制参数的实时监控和管理,解决了长期以来单片机与PC机互连中编程难度大,运行效率低的瓶颈。

2MSComm控件与MSP430单片机2.1MSComm控件计算机编程语言中,Visual Basic6.0是Microsoft公司推出的面向对象的可视化开发编程工具,具有丰富的数据类型和结构化程序结构,开发效率高,界面制作美观方便等优点,且应用日益广泛,故Visual Basic6.0语言做到了真正的面向对象编程。

其中,MSComm控件全称为Microsoft CommunicationControl,是微软公司提供的ActiveX控件,目的是为了简化Windows下串行通信编程。

通过对此控件的属性和事件进行编程,从而实现数据的发送和接收。

MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。

用VB6.0实现计算机间串口通信

用VB6.0实现计算机间串口通信

用VB6.0实现计算机间串口通信作者:李永胜来源:《电脑知识与技术·学术交流》2008年第08期摘要:本文主要介绍利用VB6.0串行通信编程的方法,利用MSComm控件实现计算机与计算机间的串口通信。

关键词:串口通信;VB6.0;MSCOMM控件中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)08-10ppp-0c随着互联网的不断发展,计算机间的相互通信已非常普遍,只要通过计算机的串行口就可以实现。

而对于串口通信的编程软件,微软公司的Visual Basic 6.0(简称VB6.0)以其友好的开发界面、简单易用、实用性强等优点已在国内外得到广泛应用。

VB6.0提供了许多供用户选择的控件,这些控件以.OCX为文件后缀名,其中MSComm.OCX即是用于串行通信的控件。

如果需要使用该控件,可将控件添加到工具箱内,这样就可以利用该控件进行串行通信程序的设计。

下面这个例子,说明如何进行串行通信程序设计,该程序在Windows98环境下已调试通过。

在调试程序时,很难做到一个人同时占有两台计算机。

为此,可通过直接短接串口的2、3两个脚,即将串行口的2、3脚连接在一起,从而使发送的信息直接被本机接收。

这样,就可以在一台计算机上调试程序。

1 MSComm控件常用属性Commport 设置并返回通信端口号。

Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。

PortOpen设置并返回通信端口的状态,也可以打开和关闭端口。

InBufferSize 设置并返回接收缓冲区的字符数。

Input 从接收缓冲区返回和删除字符。

InputLen设置并返回Input属性从缓冲区读取的字符数。

OutBufferSize以字符形式设置并返回传输缓冲区的大小。

Output向传输缓冲区写数据。

2 用户界面设计首先新建一个“标准EXE”工程,然后选择“工程/部件”菜单项,在“部件”对话框中选择Microsoft Comm Control6。

基于VB6.0的PC机与单片机间的串口通信

基于VB6.0的PC机与单片机间的串口通信

基于VB6.0的PC机与单片机间的串口通信摘要:串口通信是一项广泛应用于各领域使用的通信方式,如打印机、逻辑分析仪、磁盘等,都很普遍地采用了串口方式交换数据。

为了可以更方便地控制电脑关机、重新启动、打开我的电脑等功能,系统采用以单片机为核心介绍了基于VB6.0的PC机与单片机间的串口通信,将接收到的红外遥控器所发出的信号通过串口通信技术,然后利用VB开发的虚拟软件在电脑屏幕上显示相应的控制功能。

关键词:串口通信VB6.0 单片机Visual Basic6.0是一种功能强大、可视化的程序设计语言,是Microsoft公司在Quick Basic的基础上为开发Windows应用程序而提供的强有力的开发环境和开发工具,是具有良好的图形用户界面的程序设计语言。

它采用面向对象和事件驱动的编程机制,把过程化和结构化编程思想结合在一起。

Visual Basic即可视Basic 语言,缩写为VB。

它以Basic语言为基础,它的可视化(Visual)特性,还为应用程序的界面设计提供了更迅速便捷的途径。

Visual Basic提供的可视化设计工具,把Windows界面设计的复杂性“封装”起来,不必为界面设计而编写大量的程序代码,只需按设计要求的屏幕布局,在屏幕上画出各种“部件”,即图形对象,并设计这些图形对象的属性,Visual Basic就会自动产生界面设计代码,只需要编写实现程序功能的那部分代码,因此,可以大大提高程序设计的效率。

其中MSComm通信控件提供了一系列标准通信命令的接口,它允许上位机与其他通信设备建立串口连接,还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,从而可以利用它创建高效实用的串行通信程序。

MSComm控件封装了串口通信的API函数,适用于Windows的各种操作平台,使串口通信编程变得简单、方便。

该控件不仅可在VB下使用,而且还适用于VC、Delphi等。

基于VC++ 6.0的串口通信实验报告

基于VC++ 6.0的串口通信实验报告

网络与通信实验报告题目:串口通行实验班级:0309103学号:*********姓名:***指导老师:付大丰日期:2012-10-21一、实验要求把两台计算机的串口通过串口线连在一起,通过串口实现两台计算机通讯。

可以利用高级语言、C语言编程实现,要求程序界面友好,有发送和接收功能,其接收和发送内容可在屏幕上显示。

二、实验原理串口通讯把数据的字节分解成单个的二进制比特流依次传输,其结构简单,连接线少,应用非常广泛。

实现串口通信的方法很多。

如:利用标准通信函数实现串口通信、利用API实现串口通信和利用ActiveX控件实现。

本文主要采用ActiveX控件Microsoft CommunicationsControl(MSComm)编程,Windows平台先进的ActiveX技术使得对串口编程不再需要处理烦琐的细节。

利用已有的AxtiveX控件,只需要编写少量的代码,就可以轻松高效地完成任务。

以下对ActiveX控件属性进行简单介绍,在ClassWizard中为新创建的通信控件定义成员对象(CMSComm m_comm),通过该对象便可以对串口属性进行设置,MSComm控件共有27个属性,这里只介绍其中几个常用属性:CommPort:设置并回通讯端口号,缺省为COMl。

Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。

PortOpen:设置并返回通讯端口的状态,也可以打开和关闭端口。

Input:从接收缓冲区返回和删除字符。

Output:向发送缓冲区写一个字符串。

InputLen:设置每次Input读入的字符个数,缺省值为0,表明读取接收缓冲区中的全部内容。

InBufferCount:返回接收缓冲区中已接收到的字符数,将其置0可以清除接收缓冲区。

InputMode:定义Input属性获取数据的方式(为0:文本方式;为1:二进制方式)。

RThreshold和SThreshold:表示在OnComm事件发生之前,接收缓冲区或发送缓冲区中可以接收的字符数。

VB6.0串口操作

VB6.0串口操作

串口操作职业2010-12-22 11:30:58 阅读60 评论0 ??字号:大中小?订阅一直想通过计算机人机界面来控制单片机,感觉用软件控制硬件,即计算机控制是一件比较有意思的事情。

计算机与单片机的连接,是通过串口来实现的。

如何实现,我想应该明白VB怎样来操作串口,实现VB操作串口,就可以把单片机串口线接入计算机,从而实现真正的计算机控制单片机。

这其他是别人早已实现了的,我因为是刚接触,就写下来留作纪念吧。

开发软件:Visual Basic 企业版(VB6)新建一个工程:标准EXE。

接下来做Form界面。

代码:Private Sub Combo1_Click()If = True Then '如果串口打开先关闭后再进行其他操作?? = FalseEnd If= + 1End SubPrivate Sub Command1_Click()??? Dim Temp(0) As Byte??? Dim strBuff As String???If = True Then '如果显示16进制发送则进行16进制处理,这里只发送一个?? Temp(0) = "&H" & Text1?? = Temp '发送一个16进制???????Else???? strBuff = Text1End IfIf = False Then?? MsgBox "请打开串口"End IfOn Error GoTo uerror= strBuffuerror: End SubPrivate Sub Command2_Click()On Error GoTo uerror????? '发现错误跳转到错误处理If = "关闭串口" Then??????? = False??????? = "打开串口" '按钮文字改变??????? = &HFFFFC0??? '灯颜色改变Else??????????? = True?????? = "关闭串口"?????? = &HFFEnd IfExit Subuerror:??? msg$ = "无效端口号"????????? '错误显示??? Title$ = "串口调试助手"??? x = MsgBox(msg$, 48, Title$) '48标示显示警告图标??End SubPrivate Sub Command3_Click()= ""End SubPrivate Sub Command4_Click()= ""End SubPrivate Sub Form_Load()If = True Then?? = FalseElseEnd If"COM1""COM2""COM3""COM5" "COM6" "COM7" "COM8" "COM9" "COM10" "COM11" "COM12" "COM13" "COM14" "COM15" "COM16"= 0= + 1= "9600,n,8,1" ?? = "打开串口" ?? = &HFFFFC0 ??= True= True"256000" "128000" "115200" "57600" "38400" "28800" "19200"' "14400"' "12800"' "11520" "9600" "4800" "2400" "1200" "600""无None""奇Odd""偶Even""4""5""6""8""1""2"End SubPrivate Sub MSComm1_OnComm()Dim BytReceived() As Byte??? Dim strBuff As String??? Dim i As Integer??? Select Case ??? '事件发生??????? Case 2??????????? Cls?????????????????????? = 0???? '读入缓冲区全部内容??????????? strBuff = '读入到缓冲区???????? If = comInputModeBinary Then??????????? BytReceived() = strBuff '如果是二进制接收模式则进行数据处理,否则直接显示字符串??????????? For i = 0 To UBound(BytReceived)??????????????? If Len(Hex(BytReceived(i))) = 1 Then??????????????????? strData = strData & "0" & Hex(BytReceived(i)) & " " '如果只有一个字符,则前补0,如F显示0F,最后补空格??????????????? Else??????????????????????????????????????????????????? '方便显示观察如: 00 0F FE??????????????????? strData = strData & Hex(BytReceived(i)) & " " ??????????????? End If??????????? Next??????????? Text2 = Text2 & strData??????????? strData = ""??????? Else??????????? Text2 = Text2 & strBuff??????? End If??? End SelectEnd SubPrivate Sub Option1_Click()= comInputModeBinaryEnd SubPrivate Sub Option2_Click()= comInputModeTextEnd Sub一。

【推荐下载】基于VB6.0的MSComm通信方法设计

【推荐下载】基于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的串口通讯程序设计

基于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调试串口通讯

用VB调试串口通讯

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

编写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 V ariant 接收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个数据位、1个停止位.(这里需要进一步说明的是:.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 = 5Text1.Text =End SubPrivate Sub Command1_Click()ClearTextnRece = 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 = TrueEnd Sub(通信传输速率为9600bps,则最快速度1.04ms发送一个字节,仪表每秒发送50帧数据,每帧数据有4个字节,即每秒发送200个字节,平均5.0ms 发送一个字节,连续读取串口数据时要在程序中添加循环等待程序)Private Sub SwichV ar(ByV al nNum As Integer)DelayTimevar = Nullvar = MSC.InputOut(nNum) = var(0)End Sub(设置接收数据模式采用二进制形式,即 InputMode=comInputModeBinary,但用Input属性读取数据时,不能直接赋值给 Byte 类型变量,只能通过先赋值给一个 V ariant 类型变量,返回一个二进制数据的数组,再转换保存到Byte类型数变量中。

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

基于VB6.0的串口通讯程序设计摘要:详细介绍了VB6.o中通讯控件MSComm的一些重要属性及在Windows环境下用通讯控件来实现串行通信的编程方法,并结合实例给出了一个基本的通讯程序。

关键词:串行通信;通信控件;Visual Basic6.01引言随着计算机的迅速普及和计算机控制技术的发展,计算机被广泛应用于自动化控制领域之中。

而要完成一个控制过程一般都要利用集散式计算机控制系统。

在这种控制系统中,下位机主要完成对现场数据采集和对设备一级的监控,上位机则要完成对整个系统的采集、分析、处理和控制以及数据、图形显示、打印、人机对话等工作。

而上位机与下位机大多是通过PC机的RS-232串行接口实现通信。

随着Windows系统的普及,越来越多的用户由DOS系统转向了Windows系统,这使得数据采集及工业控制软件也上升到了Windows环境下。

这就给程序员提出了如何编写面向Windows的串行通信程序问题。

虽然Windows提供了完备的开放式通用增强的W32API(应用程序接口)函数,它把对串口和其他通信设备的支持和基本输入驱动程序集于一体。

但是,对于非专业软件设计人员来说,使用VC++,C等高级语言来完成这类程序的设计,其复杂性与专业化程度依然很高。

而Visual Basic6.0(以下简称VB)是一个Windows下简单、易学、高效的可视化软件开发平台,它以所见即所得的可视化界面设计风格和32位面向对象程序设计的特点,已被广泛应用到各个领域,成为众多开发人员采用的工具。

VB 不但提供了良好的界面设计能力,而且在串口通信方面也有很强的功能。

它提供的Microsoft Communication control(以下简称MSComm)这样一个通信控件,该控件“隐藏”了大部分串口通信的低层运行过程和许多繁琐的过程,它使用户能够方便地访问Windows下串口通信驱动程序的大多数特性。

所以整个串行通信程序的开发过程变得十分简单易行,程序员不需要处理繁琐的细节,而通过利用通信控件,只需编写少量的代码来实现主要应用功能和界面的设计,就可以完成软件的开发过程。

2VB6.0串行通信控件的介绍MSComm是Microsoft公司提供的主要用于串行通信编程的ActiveX控件。

ActiveX控件包括一系列的属性、方法和事件,应用程序通过ActiveX控件提供的接口来访问控件的功能。

我们知道通过C、VC++编写串口通信程序,是要使用API函数发送和接收数据。

而MSComm控件实际上是这些Windows API函数的有机集成,它以属性和事件的形式提供了对Windows通信驱动程序的API接口,封装了API函数的低层操作,为应用程序提供了通过串行接口收发数据的简便方法。

因此,编程人员只需在程序中设置和监视MSComm控件的属性和事件即可完成对串口的编程。

MSComm控件不在最常用的控件工具箱中出现,故编程的第一步应添加到工具栏上以方便编程。

具体的做法如下:单击VB6.0菜单栏中的“工程”菜单,并选择“部件”命令,在部件对话框种选择Microsoft Comm Control6.0,此时工具箱应出现一个电话图表,这就是MSComm图标。

2.1VB6.0中MSComm通信控件的属性通信控件把许多复杂的操作都留给了VB和Windows处理,编程人员编程时只需设置其中的一些属性,下面是几个常用的属性:Commport:设定或传回通信连接端口代号。

程序必须指定所要使用的串行端口的号码,Windows系统会使用所设定的通讯端口与外界做通讯。

程序亦可经由此属性读回所使用的连接端口的号码。

在此所设定的通讯端口由1开始往上递增,MSComm控件的最大值为16,当使用的通讯端口超过16时,控件会通知错误。

如:MSComm1Commport=1指定Com1作为通讯传输。

Settings:设定初始化参数。

以字符串型式设定或传回联机速度、同位检查、数据位、停止位等4个参数。

其格式为“BBBB,P,D,S”,其中BBBB为联机速度,P为同位检查方式,D为数据位数,S为停止位数。

默认值是“9600,n,8,1”,意为“所使用的通讯端口是以每秒9600B的速度作传输,不做同位的检查,每个元是8个Bit,而停止位是1个Bit”,而且此4项必须是依照顺序,不可前后对调。

Settings设定完成以后,所送出及收回的字符串便以此设定为主,使用RS-232通讯的两方,Settings必须完全一样,彼此才能顺利地沟通,否则双方无法收到彼此所送的信号。

如:MSComm1Settings=“9600,n,8,1”PortOpen:设定或传回通讯接口端口的状态。

使用串行端口之前必须先将使用的串行埠先行开启,而使用完毕之后,也必须执行关闭的动作。

InPut:从输入缓冲区传回并移除字符。

程序靠这个指令将从对方所传至缓冲区的字符读进程蓄洪,并清除缓冲区中已被读取得自负,这是一种FIFO 的机制。

如:Buffer$=MSComm1Input将输入缓冲区的字符读入Buffer字符串变量中Output:将一个字符串写入传输缓冲区。

当程序需要向对方传输字符串时,可将字符串使用此指令写入输出缓冲区中。

至于串行端口是否将此字符传送到对方的串行输入缓冲区中,则要视送出字符串这方是否设定传送门槛属性而定。

如:MSComm1Output=“ABCDE”,此即将ABCDE五个字母通过RS-232传送出去。

InPutLen:指定由串行端口读入的字符串的长度。

InPut指令将存放在输入暂存区的字符读入,但欲指定所读入的字符长度则需要使用本属性而设定。

如:MSComm1InPutLen=10,当程序执行Input指令时,只会读取10个字符。

那什么时候使用InPutLen指令呢?如果我们需要对固定的字符串长度作特别的运算或判断时,就必须使用这个技巧。

Rthreshold:设定或传输引发接收事件的字符数。

即属性页上的“最小接收字符数”,当接收缓冲区达到所设定的字符数时,将会引起OnComm事件中的接收事件。

所以此属性也就是引起接收事件的“门槛值”,此属性的默认值是0,其意义是无论缓冲区中有多少字符都不引起接收事件。

如:MSComm1Rthreshold=20。

当接收缓冲区达到20个字符时,引发接收事件。

Sthreshold:设定或传回引发传送事件的字符数。

如果在传输暂存缓冲区种的字符少于所设定的数值,则CommEvent属性会被设定为CommEvSend,并产生OnComm事件。

如:MSComm1Sthreshold=20。

当传送缓冲区字符少于20个字符时,引起传送事件。

CommEvent:只要有通讯错误或事件发生时都会产生OnComm事件,CommEvent属性存有该事件或错误的数值码,其中最常用到的通讯事件是CommEvReceive,它的值为2,表示收到了Rthreshold个字符。

该事件将持续产生直到用Input属性从接受缓冲区移出数据。

2.2MSComm处理通信的两种方法MSComm控件提供了两种控制串口的方法,类似于DOS的中断和查询。

事件驱动方式OnComm事件是MSComm控件提供的唯一事件。

当有数据到达端口或端口状态发生改变或有通信错误产生时,都将触发OnComm事件,以捕获和处理这些通信中产生的错误,通过查询CommEvent属性值,可以获得关于通信事件和通信错误的完整信息,进而进行处理。

这是一种功能很强的处理串行口活动的方法,具有程序响应及时、可靠性高的特点。

查询法MSComm控件的CommEvent属性返回通信中产生的事件和错误类型,由通信控件自动检测和跟踪通信状态后设置。

因此,在小的程序中,程序员可以在每个重要的程序功能之后检查CommEvent属性值来检测事件和通信错误。

如果程序小,实时性不高,这种方法是可取的。

两种方式都可以达到数据传送的目的,到底谁较好?并没有一个定论,要看实际的系统环境而定,也许这两种方式都用得上。

2.3MSComm控件数据通信的两种格式我们在进行串口通信时,一般为字符传送方式。

但在某些情况下传送的却不见得是纯文字形态的数据,而是数据或文件。

在这种情况下,位在传输线上的数据就是一个字节接一个字节地被传送过来,接收端收到这些数据后,再与以组合形成数据资料或文件,这种情形就是Binary(二进制数据)方式传送。

对应这两种传送方式,用户可以通过对MSComm控件中的InputMode属性的设置来决定Input属性如何取回数据。

数据是以字符串的形式接收还是作为字节数组中的二进制来接收,完全视此属性来决定。

当InputMode取值为0时(默认值)数据以文字形式取回,当取值为1时,数据以二进制形式取回。

3应用举例下面我们就来探讨一个简单的传输试验。

为了方便,我们把一条RS-232串口传输线上的第2脚与第3脚短路,即从Com1的TXD引脚发送出去的数据又由Com1的RXD引脚接收回来。

那么由第3脚输出的讯号就会被传送到第2脚而形成一个完整的回路,从而进入同一部计算机的输入缓冲区。

程序只要再由相同的计算机上做续回的动作,即可将数据读入,一样可以形成一个测试环境。

这样就达到了我们用单部计算机来模拟两部计算机进行串口通讯的目的。

本例中以二进制格式发送和接收数据。

首先设计程序的界面:开启一个新的VB项目,并于窗体上安排一个MSComm控件,作为串行通讯的信道,按F4调出其属性窗口,将CommPort属性值改为1;另外将InputMode属性改为1,使其以Binary方式接收数据。

安排两个Label控件,在其Caption属性分别填入“*传送区*”和“*接收区*”作为提醒使用者之用。

安排两个文本框,分别对应到传送区与接收区,作为传送的输入区域与接收讯息的显示区域。

安排两个按钮,在其Caption属性内分别填入“传送字符”与“结束系统”。

所设计出的画面如下:程序所实现的功能:我们希望的表现是按下“传送字符”后,送处在传送区所键入的文字及数据。

当接收门槛值一达到程序员所设定的值,便会将缓冲区中的内容读如,并显示在接收区的文本框里。

程序的几个关键之处:(1)程序将使用到两个动态数组,类型为字节(Byte),分别用于存储传送及接收数据之用。

(2)在送出数据之前,先对数据做一些处理,由于我们要传送的是字节的数据。

因此,首先将输入区内的文字转换为相应的ASCⅡ码,转换后再把数据送出去。

(3)接收数据时先从缓冲区把数据读入事先定义的变量中,再从该变量中读取真正的二进位数据并显示在接收区中。

MSComm只有一个OnComm事件,所有可能发生的状况全部集中在此一事件中处理。

而且只要CommEvent属性值一产生变化,就会产生OnComm事件,这表示发生了一个通讯事件或一个错误。

相关文档
最新文档