PC版
搜索导航
论文网 > 工学论文 > 通信学论文

基于VB的RS-485 串口通信方法

  引言
  在工业控制领域,工控机经常需要与智能仪器或其它设备通过串口进行通信。串口通信方便易行,应用广泛。Visual Basic(简称VB)是Windows系统开发的主要语言之一,以其高效、简单易学及功能强大的特点被广大程序设计人员所青睐。VB支持面向对象的程序设计,具有结构化的事件驱动编程模式并可以使用功能强大的控件。
  一、串口通信标准
  串行接口(Serial Interface)是指数据按位顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线,从而降低了成本,适用于远距离通信,但传送速度较慢。串行接口按电气标准及协议来分包括RS-232-C、RS-422、RS485等。
  RS-232也称标准串口,最常用的一种串行通讯接口。RS-232是为点对点(即只用一对收、发设备)通讯而设计的,适合本地设备之间的通信。其传送距离最大为约15米,最高速率为20kb/s。RS-422标准是一系列的规定采用4线,全双工,差分传输,多点通信的数据传输协议。RS-422支持点对多的双向通信,其最大传输距离为1219米,最大传输速率为10Mb/s。在100kb/s速率以下,才可能达到最大传输距离。只有在很短的距离下才能获得最高速率传输。一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。
  RS-485是从RS-422基础上发展而来的,所以RS-485许多电气规定与RS-422相仿。RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信,而采用四线连接时,能实现点对多的通信,它比RS-422有改进,无论四线还是二线连接方式总线上可多接到32个设备。RS-485与RS-422一样,其最大传输距离约为1219米,最大传输速率为10Mb/s,但只有在很短的距离下才能获得最高速率传输。PC机默认的串口是RS-232标准,但RS-485总线接口具有网络连接方便、抗干扰性能好、传输距离远等优点,它弥补了RS-232 通讯距离短,不能进行多台设备同时互联的缺点。
  二、MSComm 控件介绍
  MSComm控件通过串行端口发送和接收数据,为应用程序提供串行通讯功能。使用MSComm控件时,程序员不必花时间去了解复杂的API函数,而且多个平台均可使用。Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的用于实现Windows下串行通信的ActiveX控件。它提供了两种实现串口通信的方法:事件驱动方法和查询法。
  VB中的MSComm控件提供了功能完善的串口数据的发送和接收功能。 Mscomm控件通信功能的具体实现,实际上是调用了API函数。对于VB程序开发者只需知道Mscomm控件的属性和用法即可以实现串口的操作。Mscomm控件的主要属性和用法如下表1。
  三、VB中使用MSComm控件实现串口通信的过程
  在工程应用编程过程中,使用工控机作为上位机,通过串口对自己的下位机进行控制。在控制界面中首先插入Mscomm控件,其名称可以通过它的属性进行设置,如不设置默认为Mscomm1。编程代码如下:
  (1)串口初始化
  MSComm1.CommPort = COM1 ‘采用COM1端口
  MSComm1.Settings = “9600,n,8,1” ‘对串口通信设置
  MSComm1.InputMode = 1 ‘采用二进传输
  MSComm1.InBufferCount = 0 ‘清空接受缓冲区
  MSComm1.OutBufferCount = 0 ‘清空传输缓冲区
  MSComm1.RThreshold = 9 ‘接收缓冲区收到9字符都会使控件产生 OnComm 事件
  MSComm1.InBufferSize = InBufferSize ‘接收缓冲区默认为1024个字节MSComm1.OutBufferSize = OutBufferSize ‘发送缓冲区默认为512个字节
  MSComm1.PortOpen = True ‘打开端口
  (2)串口发送数据
  Dim send_data(0 to 1) As Byte
  MSComm1.RTSEnable = True
  MSComm1.DTREnable = True
  send_data(0)=&HA1
  send_data(1)=&HB1
  MSComm1.Output=send_data
  MSComm1.OutBufferCount = 0
  (3)串口接收数据
  Dim dd(100) As Byte
  Dim buffer As Variant
  Private Sub MSComm1_OnComm()
  Select Case MSComm1.CommEvent
  Case 2
  MSComm1.InputLen = 9 ‘一次从接收缓冲区读取的字节数
  buffer = MSComm1.Input
  for i = 0 To UBound(buffer)
  dd(i) = buffer(i)
  next i
  ……对所收到的数据处理成所需的数据类型
  End Select
  MSComm1.InBufferCount = 0
  End Sub
  (4)关闭串口
  MSComm1.PortOpen=False ‘关闭通信口
  在程序设计过程中,将上述程序代码添加到设计好的程序界面中就可以实现串口通信,可以用定时器或线程对串口的收发数据进行灵活控制。在控制系统设计中,一般上位机(工控机)串口默认只有RS-232口,要实现RS-485串口通信,需要在硬件电路的连接中使用”RS-232转RS-485”转换器。
  四、结束语
  在VB集成开发环境中,利用MSComm控件实现RS-485串口通信,通过软件的实际运行效果证明这种编程方法简单,通信可靠。对于许多编程者来说,MSComm控件使用方便,容易掌握,利用此控件可以轻松地实现串口通信。

相关论文

串口基于通信方法485RS
基于学习通SPOC的高校保险学课程教学
基于企业内部财务控制制度创新思考
低压配电线路故障处理技术思路与方法
中国古代文学研究方法论
基于协同理论的项目财务管理系统建设
基于当前中药专业教学中存在的问题及
实证会计和分析式会计研究方法的融合
基于民营企业文化建设的问题与对策思
基于案例的行政单位内部控制建设研究
基于现金流量税重构国际税收规则的理