行业动态

当前位置:首页>>新闻中心>>行业动态 发布时间:2017-07-27 06:36:09

基于串行通信的电子秤实时数据采集技术研究

时间:2017-07-27 06:36:09 来源:本站 点击数:685

在计算机与外部设备通信的过程中,计算机通过串行接口实时采集外部设备发送来的数据 是非常重要的通信方式之一,本文以计算机通过串行接口实时采集电子秤的数据为例,详细论述了计算机串行通信的基本原理、电子秤的通信协议以及电子秤数据解码,重点论述了利用串行口控件 MSCOM实现实时采集电子秤数据的通用方法。

1. 

随着计算机的普及与外围设备技术的发展,计算机与外围设备之间的通信显得越来越重要,串行口通 信是目前计算机与外围设备之间的重要的通信方式之一。由于串行通信是在一根传输线上一位一位的传送 数据,其优点是使用的传输线少,速度快,适合于远距离传输。但对于那些与计算机相距不远的人一机交 换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等外部设备,采用串行方式交换数据也 很普遍。在计算机对外部设备的实时控制中,大多采用计算机的串行接口与外部设备进行通信,所以串行 接口是计算机应用系统中常用的接口,而相应的接口应用程序也成为近年来研究的热点。本文旨在通过计 算机串行接口实时采集电子秤的数据的实现,论述串行口通讯的原理以及如何利用串行口通信控件 MSCOM开发计算机的基于串行口的应用软件。

本文在Visual Basic 6.0开发环境中利用Microsoft Communication控件实现计算机与电子秤的串行通 信。成功地实现了计算机实时采集电子秤的数据,并通过对采集到的数据进行解码处理并实时地将数据显 示于计算机应用软件上。

2.串行通讯的基本原理

2.1串行通信原理

串行通信是指外部设备和计算机之间使用一根数据信号线,数据在一根数据信号线上按位进行传输,每 一位数据都占据一个固定的时间长度。但是由于高速率的要求,处于计算机内部的CPU与串口之间的通讯 仍然采用并行的通讯方式,所以串行口的本质就是实现CPU与外围数据设备的数据格式转换(或者称为串 并转换器)和控制信息(起始位和终止位插入和删除,即当数据从外围设备输入计算机时,数据格式由 (Bit)转化为字节Byte)数据,并将相应的控制信息删除;反之,当计算机发送数据到外围设备时,串 口又将字节数据转化为位串数据,并将控制信息插入到位串数据队列。

为实现串行通信,计算机的串行口内部结构设计如图1所示,它是个双缓冲的串行接口,包括一个发 送缓冲区SBUF)和一个接收缓冲区(SBUF)可以同时进行数据的发送和接收,当计算机需要向外部设备发送数据时,CPU首先将数据送入SBUF中,然后串行口一位一位向外发送,当一个字节全部发送后,串 行口发出中断请求,CPU向缓冲区SBUF发送下一个字节的数据;计算机接收数据时,串行口一位一位将从 外部接收的数据送入缓冲区,当一个字节的数据全部接收完以后,向CPU发出一个中断请求,CPU将缓冲 区的数据取走,然后接收下一个字节数据。计算机的串行口与特定的定时器绑定在一起,通过该定时器可 以设置计算机串行口发送和接收的波特率,以适用不同的外部设备。

云网客1.jpg

串行口的典型代表是RS-232C及其兼容接口,有9针和25针两类。现在的台式PC机一般有三个RS 232串行口 COM1COM2COM3,通常COM1COM2都使用的是9D形连接器,而COM3 使用DB25针连接器。其中九针的串行口各针定义如表1所示.

云网客2.jpg

当计算机通过串行口与外部设备进行通信时,首先将计算机串行口 TXB引脚与外部设备串行口的RXB 引脚相连,然后将计算机的串行口RXD引脚与外部设备的串行口 TXD引脚相连[1]。计算机串行口与外部设备串行口连接方式如图2所示。

云网客3.jpg

在本文中,以XK3100 B2+的电子秤为例,该电子秤带有一个9针的RS-232C串行接 口,能与计算机进行串口数据通信,并实时传送检测数据到计算 机。连接时,将连接电子秤串行口和计算机串行口的两个接头按 2332的方式连接,如需要做到实时接收数据,还要将电 子秤的发送模式调到数据稳定后自动发送状态。

VB6.0环境下,米用Microsoft Communication控件来实现计算机与电子秤之间串行通信,进行串行 通信时只需了解以下四根线的代号及作用。以下四根线的高电平/低电平状态分别对应MSComm控件的相 应属性的True/False值。

DTR线:计算机中数据发往电子秤,表示计算机是否已准备好。

RTS线:计算机中数据发往电子秤,表示计算机是否允许电子秤发回数据。

DSR线:电子秤中数据发往计算机,表示电子秤是否已做好操作准备。

CTS线:电子秤中数据发往计算机,表示电子秤是否允许发送数据。

2.2通信方式

VB6.0环境下,计算机与外部设备有两种通讯方式

1、事件驱动,它是一种功能强大的处理问题的方法。在实际工作中,往往要处理许多通信中的相关事件,例如:当线路数据到达计算机端或RTS信号线状态发生变化时,要求我们使用相应的事件来跟踪和处 理,该控件是使用OnComm事件来实现的,主要包括检测、数据处理和通信错误等方面的问题,CommEvent 值返回最近的通信事件或错误的数字代码。

2、查询方式。由程序设计者负责读取CommEvent的值并处理所发生的错误或事件。通常简单的应用 程序设计可采用这种办法。

2.3串行通信控件的属性

利用串行通信控件设计通信程序,关键是准确理解和设置串行通信控件的属性。在VB6.0AcdveX MSCOMM.VBX提供了 27个关于通信控件方面的属性,下面就部分属性分别予以描述:

CommPort属性:设置并返回通讯端口号。

RThreshold 属性:在 MSComm 控件设置 CommEvent 属性为 comEvReceive 并产生 OnComm 之前,设置并返回的要接收的字符数。

CTSHolding属性:确定是否可通过查询Clear To Send (CTS)线的状态发送数据。Clear To Send是调制解调装置发送到相联计算机的信号,指示传输可以进行。该属性在设计时无效,在运行时为只读。 SThreshold属性:MSComm控件设置CommEvent属性为ComEvSend并产生OnComm事件之前,设置并返回传输缓冲区中允许的最小字符数。

CDHolding属性:通过查询Carrier Detect (CD)线的状态确定当前是否有传输。Carrier Detect是从调制解调装置发送到相联计算机的一个信号,指示调制解调装置正在联机。该属性在设计时无效,在运行时 为只读。

DSRHolding属性:确定Data Set Ready (DSR)线的状态。Data Set Ready信号由调制解调器发送到相连计算机,指示作好操作准备。该属性在设计时无效,在运行时为只读。

Settings属性:设置并返回波特率、奇偶校验、数据位、停止位参数。

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

EOFEnable属性:确定在输入过程中MSComm控件是否寻找文件结尾EOF)字符。如果找到EOF 字符,将停止输入并激活OnComm事件,此时CommEvent属性设置为comEvEOF

3.电子秤的串口通信协议

本文使用的电子秤是XK3100-B2+型,其串口数据通信协议规定

如下:

①数据传输速率可设置为9600bp4800bps2400bps

②数据格式:电子秤采用通用的RS232 UART信号,每10BIT为一个数据帧,帧格式如表2所示.

云网客4.jpg

云网客5.jpg

4.电子秤实时数据釆集的实现

VB6.0环境下通过串行通讯实现电子秤实时数据采集。

4.1数据的采集

在设计好计算机与电子秤的物理连接后,接着设计应用软件实时采集电子秤的称重数据,在VB6.0 新建一个标准EXE”工程,然后选择工程/部件菜单项,在部件对话框中选择“Microsoft Comm Control 6.0”,即可添加MSComm控件;再在窗体中依次布置如表3所示的控件并设置其属性。

为了只要打开此窗口即可接收数据,在Form窗口的程序代码如下:

Private Sub Form_Load()

MSComm 1. CommPort = 1 ‘使用

串口 1

MSComm 1.PortOpen = True ‘打 开串口 1

MSComm 1 .RThreshold = 1 ‘接收 数据后产生OnComm事件 End Sub

在设置完上面的程序后就可以进行数 据采集,根据电子秤的协议规定电子秤一 次传输的是6帧数据,而在接收数据后是 采用的16进制将数据存放的,将它存放到字符串HData中,以便在下个步骤中对数 据进行处理并显示于计算机的屏幕中。

云网客6.jpg

4.2数据解码处理

根据电子秤发送的第二帧数据D3D4位的取值决定电子秤的称重模式,其称重模式分别是00 重模式;01计数模式;10百分比模式.根据第二帧数据的不同取值,分别对字符串进行处理,如表4 示。然后将第三帧(显示数值的最低字节)、第四帧(显示数值的中间字节)、第五帧(显示数值的最高字节)解码成十进制数;并根据第六帧数据的值确定本次称重是以公斤00H)为单位还是磅01H) 单位。最后将解码后的数据显示于计算机屏幕上。数据解码流程示意图如图3所示。

云网客7.jpg

当一次称重过程结束,可以继续下一次的称重,在程序设计过程中必须用程序设置计算机接收的波特 率。以保证计算机的接收的波特率和电子秤发送波特率相一致,不然会造成数据的丢失。

5.结束语

本文主要论述了基于串行通信的电子秤实时数据采集原理和实现方法,重点探讨了如何利用高级语言 通过串行接口控制外部设备以实时采集数据,并将采集到的数据解码成用户所需的数据。很好地解决了电 子秤数据的实时采集,该方法具有很好的实用性和通用性,不同的电子秤只需修改解码参数就可以适用。