用VB6.0实现设备串口通信及监控功能

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:pf2858888
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:在实际应用中,串口是计算机与外部串行设备之间常用的数据传输通道。本文介绍了串口通信的基本原理和函数,提出了在windows环境下实现串口通信的一般方法和步骤,并在VB6.0下编程实现。
  关键词:串口通信;监控;VB6.0
  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)18-31487-01
  VB6.0 Equipment with Serial Communication and Monitoring Capabilities
  GU Huan-yu
  (Shanghai Telecom Technology Development Ltd.,Shanghai 200065,China)
  Abstract:In practical applications,the computer serial port and external serial devices commonly used data transmission channel.This paper introduces the basic principles of serial communication function and presented in windows environment serial communication under the general methods and steps, and Visual Basic 6.0 programming under.
  Key words:Serial Communication;Monitor;VB6.0
  
  1 引言
  
  计算机串口是通过串行通讯方式进行通信,即一条信息的各位数据被逐位按顺序传送。串行通讯的特点是:数据位传送按位顺序进行,最少只需一根传输线即可完成,成本低、速度较慢,距离可以从几米到几千米。数据通讯量不是很大时,在工控领域广泛地使用串口通信对设备进行监控。
  
  2 问题描述
  
  为了完成对IP网关相应设备是否正常的监视,包括监视输入线路馈电是否正常,控制前端机完成对使用线路与备用线路之间的切换,随时查询控制状态和监视结果,设计计算机串口通信程序。
  通讯指标:通信方式为波特率9600bps的主从半双工串行方式,数据包内字节间最大时隙1.5ms,前端机对主站下行指令的最大响应时间为10ms。
  数据包格式为:
  (3)校验字为长度字和数据字符段的模256算术和。
  
  3 设计思路
  
  系统主要实现以下功能,即对设备发送读指令,读取设备状态;对设备发送控制指令,控制设备动作。下面以N=0(设备号为0)为例,简单说明程序设计的思想。
  (1)系统初始化,系统对N=0的设备发出写控制字命令,所有线路走A路。监测前端机返回状态。
  (2)监测线路状态,向前端机发出读状态字命令,分析前端机返回状态,并通过可视界面即时显示。
  (3)控制设备:如切换电路等,由系统向设备发出写控制字命令,控制设备动作,通过监测前端机返回状态,判断动作是否成功完成。
  
  4 系统实现
  
  随着Windows的广泛应用,越来越多的微机用户已习惯于Windows操作系统。现在有诸多应用软件都可以帮助我们比较方便实现以上功能,编程工作量相对较小,只需进行主要应用功能的编程和少量界面控制的编程。VB的通讯控件友好、功能强大,编程速度快,加上VB的易学、易用,快速开发等特点,数据通讯量不是很大时,在单片机通讯领域广泛地使用VB开发PC上层通讯软件。下面以VB6.0为例简要说明串口通信的实现。
  在VB的控件工具箱中,提供了一个使用非常方便的串行通讯控件MSComm,它全面的提供了使用RS-232串行通讯上层开发的所有细则,它既可以使用查询方式又可以使用事件驱动方式来完成串行通讯。在窗体中加入MSComm控件, 取名为MSComm1, 加入Command命令按钮并取名为initialize. 写入以下代码实现系统初始化:
  Private Sub initialize_Click()
  If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
  MSComm1.InBufferSize = 40 '设置MSComm1接收缓冲区为40字节
  MSComm1.CommPort = 1
  '设定Com1
  If MSComm1.PortOpen = False Then
  MSComm1.Settings = "9600,n,8,1"
  '9600波特率,无校验,8位数据位,1位停止位
  MSComm1.PortOpen = True
  '打开串口
  End If
  MSComm1.OutBufferCount = 0
  '清空发送缓冲区
  MSComm1.InBufferCount = 0
  '清空接收缓冲区
  outL(0) = "10"(十进制)
  outL(1) = "18"
  outL(2) = "208"
  outL(3) = "0"
  ……
  outL(19) = "0"
  outL(20) = "226"
  outL(21) = "13" (outL数组设为Byte 数据类型,存储为单精度型、无符号整型、8 位(1个字节)的数值形式,范围在 0 至 255 之间。)
  MSComm1.Output = outL
  With MSComm1
  .InputMode = comInputModeBinary '设置接收数据模式为二进制形式
  '为了实现实时监测功能,接收数据的读取要尽可能的快速,则设置MSComm1的属性如下:
  .RThreshold = 1'设置接收一个字节产生OnComm事件
  .InputLen = 1 '设置Input 一次从接收缓冲读取字节数为1
  .OutBufferCount = 0 '清除发送缓冲区
  MaxW = -99 '最大值赋初值
  MinW = 99 '最小值赋初值
  w = 0 '数据个数计数器清零
  If .PortOpen = False Then'判断通信口是否打开
  .PortOpen = True '打开通信口
  If Err Then'错误处理
  MsgBox "串口通信无效"
  Exit Sub
  End If
  End If
  End With
  End Sub
  控件MSComm提供了一个事件OnComm,该事件可以截取串口的任何消息,转入事件处理程序。OnComm可以扑获通讯时发生的串口事件和错误信息,当有串口事件或错误发生时,VB会立刻触发一个OnComm事件,程序就会自动转入OnComm事件处理程序中。MSComm1_OnComm的事件处理程序只处理 comEvReceive事件,首先判断帧数据的开始字节,关闭OnComm接收事件,然后接收数据字节。具体源代码如下:
  Dim ab(6) As Byte '字节数据类型数组,用来存储接收到的一组字节数据
  Dim av As Variant '用来从接收缓冲区读取数据
  Private Sub MSComm1_OnComm()
  With MSComm1
  Select Case .CommEvent'判断MSComm1通信事件
  Case comEvReceive'收到Rthreshold个字节产生的接收事件
  av = .Input'读取一个接收字节
  ab(1) = av(0)'转换保存到字节数据类型数组
  If ab(1) = 10 Then'判断是否为数据开始标志
  RThreshold = 0'关闭OnComm事件接收
  Do
  Loop Until .InBufferCount >= 5
  '循环等待MSComm1接收缓冲区>=5个字节
  w = w + 1 '计数器累加计数
  For i = 2 To 6
  av = .Input '读取第二个数据字节(BCD码高位字节)
  ab(i) = av(0)'转换保存到字节数据类型数组
  Next i
  Else
  MsgBox "接收数据错误", vbOKOnly, "提示"
  Exit Sub
  End If
  .InBufferCount = 0'清除接收缓冲区
  .OutBufferCount = 0 '清除发送缓冲区
  End With
  End Sub
  读状态,响应状态的程序设计也是相似的,但接收到响应状态字需要分析数据。
  
  5 结论
  
  本系统利用VB6.0下的ActiveX控件的串行通信功能,实现了在Windows环境下用单台PC机监控的任务,完成对IP网关相应设备是否正常的监视,监视输入线路馈电是否正常,控制前端机完成对使用线路与备用线路之间的切换,可随时查询控制状态和监视结果。且可结合数据库,纪录通话时间等,模拟交换机功能。整个控制系统灵活方便,具有很大的实用性。
  
  参考文献:
  [1]范逸之,陈立元.Visual Basic与RS-232串列通信控制(最新版).清华大学出版社,2002.
  [2]Evangelos Petroutsos,Kevin Hough. Visual Basic 6高级开发指南.电子工业出版社,1999.
  注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
听音乐是很多网民用来消遣的一种方式,忙碌之余想放松一下时。很多用户都会用音乐来“犒劳”一下自己。通常来讲,听音乐大致有以下几种方式:其一,使用手机或者MP4等便携设备听音乐,这种方式可以“随时随地”欣赏音乐。适合旅途中使用;其二,使用家里的影碟机来欣赏音乐,配合家里的家庭影院系统,效果确实非常棒。
期刊
如今硬盘的容量越来越大,随着电脑的长时间使用,硬盘里积累了大量的文件。对于那些不常对文件进行整理的用户来说,如果想要找自己需要的文件时,却不知道存放在什么地方。这时,系统自带的“搜索”功能就显得十分重要了,为了加快寻找文件的速度,有几个技巧你不可不知。    一、快速查找指定文件夹的文件  一般说来,用户使用搜索功能是通过单击“开始”菜单,单击“搜索”,之后单击“所有文件和文件夹”按钮,单击“在这
期刊
在网络生活中,我们经常需要进行简单的图形处理,比如想换个QQ表情、做个更精彩的Logo、发布一个更有个性化的BBS贴图等。但是,Windows自带的画图软件功能比较单一,使用Photoshop、CorelDraw等软件又有一定难度,而且软件动辄上百兆,安装起来费时费力。在这种情况下,一些功能丰富的简易图片处理软件应运而生,SnagIt就是其中一款优秀的软件。  软件下载地址:http://www.
期刊
Excel 2007和Word 2007一样都提供了简繁转换的功能,我们可以在“审阅”标签页发现“中文简繁转换”的功能组,其中包括繁转简、简转繁、简繁转换等功能,不过某些情况下会由于病毒破坏或误操作而丢失此项功能,如图1所示,这里已经无法发现相应的功能组,那么该如何找回此项功能呢?  其实,简繁转换是Excel 2007的一个COM加载项,取决于“\Microsoft Office\Office1
期刊
暑期已经过去,迎来了新的学期,人要洗澡换新衣,熬过了一个暑期的PC,四处都布满了灰尘与污垢,我们也该为它洗洗澡,让PC变的干干净净。毫无疑问,电脑灰尘太多,不仅会影响散热,而且还会由于灰尘带来的静电而造成硬件损伤,所以,下面我们开始对PC从外到内进行全面大扫除,让PC轻松干净的迎接新学期。
期刊
金山公司的WPS Office 2007是一款非常好用的办公套件,其中包括了WPS文字、WPS表格、WPS演示等三大功能组件,这里以最新的1504版本为例,介绍WPS文字2007的三则实用技巧:    技巧一:让简繁转换聪明起来    我们知道,从2005版本开始,WPS文字就提供了“中文简繁转换”的功能,但是如果你注意的话,会发现转换效果与Word 2007相比,会存在一定的差距,例如在转换“头
期刊
我于2006年组装的电脑,CPU为AM2闪龙2800+,主板为华硕m2npv-mx,内存为512MB DDR2 533,平时运行速度比较慢,于是升级了一条1GB DDR2 533内存,然而这并没有带来多少性能提升,经过了解,这颗CPU的二级缓存只有128KB,CPU浮点运算能力不够理想,于是我打算对其进行性能优化,发挥低端CPU的性能潜力。    一、智能超频并不安全    默认情况下,AM2闪龙
期刊
第一台国产高级中文计算机、第一块填补了国内空白的大容量计算机硬盘驱动器,这两个“第一”让人们在20多年前就认识了这个饱含民族情结的品牌——长城。作为我国最早生产电脑的企业,长城的业务涵盖计算机核心零部件、计算机整机制造、软件和系统集成以及宽带网络和增值服务四大领域,产品包括台式电脑、笔记本电脑、显示器、电源、服务器、打印机及网络数码产品。在国内IT业风云变幻、跌宕起伏的20多年里,长城电脑凭借雄厚
期刊
在夜深人静时,笔者喜欢将液晶电视与电脑连接播放电影,虽说在线电影很丰富,但清晰度都不怎么好,而BT下载HDTV又需要时间。所以时常去楼下的音像店租DVD碟,但用电脑播放DVD碟时,光驱噪音非常大,严重影响了看大片的感觉,为DVD光驱降噪势在必行了。    一、降低DVD风噪  为了降低欣赏DVD大片时的噪音,首先就是降速,DVD光驱在读取DVD影碟时,光盘高速旋转就会产生风噪,DVD光驱的速度越高
期刊
采用Google独门技术研发而成的Google Web Accelerator是一款网页浏览加速小工具,假如自己平常在家中上网时总是嫌打开网页的速度较慢,那就让这款软件来助咱们一臂之力吧!一定错不了。    下载安装  在IE中打开 http://webaccelerator.google.com/这个站点,单击窗口右侧的"Dowmload now"图标按钮(图1),下载该工具。下载完毕后,进行相
期刊