地下电磁波仪串口通信软件的研制与应用

 

摘要  地下电磁波法近年来得到了长足的进步,但其通信技术(软件方面)一直沿用过去的老方法:在 DOS 界面下,利用一些专用软件来实现的。随着新的工作平台的出现,人们迫切地要求在新界面中开发和应用通信技术。本文作者利用 Visual Basic 6.0 的编程环境,实现了 Windows 下微机与地下电磁波仪器之间的数字通信。通讯软件是以控件的形式完成的,减少了不同编程语言间的挚肘。在控件中应用了新的技术:通信环境的配置、接收数据的解读、调制解调控件的使用和数据通信事件驱动等。

关键词 : 串口通信 地下电磁波法 Visual Basic 6 0

一、串口通信的原理

通信系统包括传送端、接收端、转换数据的接口、传送数据的通道:传送端为地下电磁波仪器、接收端是安装地下电磁波法处理系统的微机系统、中间的节点就是我们的数据接口和通道。 同时在编程中应用了控件MSComm,简化了编程的复杂性,直接调用它的成员,继承其成员的属性特征,分享他丰富多彩的函数功能。

   9 针端口的管脚编号及意义   1

 

 

英文缩写

    

Pin1

微机

CD

载波探测 (Carry Detect)

Pin2

微机

RXD

接收字符 (Receive)

Pin3

仪器

TXD

传送字符 (Transmit)

Pin4

仪器

DTR

数据端状态 (Data Ready)

Pin5

仪器、微机

GND

地线 (Ground)

Pin6

微机

DSR

数据备妥 (Data Set Ready)

Pin7

仪器

RTS

要求发送 (Request to Send)

Pin8

微机

CTS

消除已发送 (Clear to Send)

Pin9

微机

RI

响铃探测 (Ring Indicator)

见表 1 的描述: Pin2 —接收字符、 Pin3 —传送字符,同时数据的方向都是指向对方,这给了我们一个启示:利用两管脚的跳线,可以实现同机通信。当然这是在调试阶段专用的一个临时举措,却十分方便和实用。

二、字符和字节的接收与解码

微机接收的是一些字节或字符,在未解开之前是不可读的(不可辨识),所谓“乱码”。将接收内容读出来必须有两个条件:遵守发送方的约定、按字符或字节的方式解读。所谓遵守约定,就是与发送方的通信参数一致。具体在我们的通信中,使用的是: 1200 E 7 1

上述的参数意义依次为: 波特率—数据传输的速度,其物理定义是每秒钟所能产生的最大电压状态改变率,或者说一秒钟可振荡的次数。这是因为在串口的异步通信中,发接双方没有一个基准的同步脉冲来参考,也就是说双方不知道对方的高低电位究竟代表几位,这就需要有一个双方认可的标准,它就是波特率。若双方波特率不一样将产生错误。 校验位—物理定义为:用来检查传输正确性的一个核对码。一般有三种情况,无校验、偶校验和奇校验。我们在传输中用的是偶校验( Even Parity ):检查字符的第一位的奇偶性。它的作用也是为了保证数据传输的正确。 ③数据传输单位—JIS码使用的是7位形成一个字符,它可以表示所有的ASCII码127个字符。 停止位,1。

对接收内容的解读,首先应确定按字符还是字节来接收的。在数字通信中字符和字节有不同的概念和意义:字符是一个或两个字节组成,二两个不同的字节又可以组成新的字符。在本软件中采用的是:以字节为接收单位、接收缓冲区的字节来启动接收事件。其目的是为了提高软件的稳定性,加强接收数据的质量监控,确保通信成功。其次是对接收数据内容的解读,也是通信工作的一部分,没有正确的解读,也不可能得到正确的数据。

在电波仪器中使用的数据是:无间断字符串结构。对多频率扫描的野外观测数据,数据串很长。在软件编程中,任何字符串变量的长度都是有限的,无法满足这样的字符结构(几乎是无限长的字符变量)。因此,在软件中我们是定义一个富文本框控件(RichEditBox)来接收缓冲区的内容,其容量可达32K。同时加入刚接收到的接收缓冲区数据,并同步刷新显示。

三、通信软件的编制与应用

Visual Basic 6.0 是一个可视化的软件开发环境,在其设计中有很多内置的或外挂的控件,由开发者来选用,调制解调控件就是其中之一。在我们的通信软件中,它是调用的主要控件。

1、              调制解调控件的作用和功能

MSComm控件的目的是为了让用户设计一个系统与串口进行沟通、数据传输。因此信息会在通过端口流动,为此控件提供了两种处理信息的方法:事件驱动和查询(Polling)。在通信软件中采用的是事件驱动:如果接收缓冲区有数据(只要有一个数)立刻驱动接收扫描事件,并不间断地接收数据。

在我们编制的通信软件中使用主要属性有:

CommPort—通信端口号。一般在新机器中使用了USB口,COM1为通信端。在老型号的机器中,COM1是鼠标或键盘,COM2通信口。

Setting—通信口的参数:波特率、奇偶校验、数据传输单位和停止位。在我们的软件中,速率是1200,字符校验方式是偶校验,7位数据位,1位停止位。

我们编制的通信软件主要是接收信息,因此在位接收方主要注意的是仪器发送时的参数设置,必须与发送的设置一致,否则将导致通信失败。

InputMode—数据传输的模式。这里有两种模式可选择:文本和二进制格式。

InputBufSize—接收缓冲区的大小。

Input—接收缓冲区。发送的信息最先到达这里,再通过接收方的软件一系列的动作,将其消化吸收,处理加工成一份整齐的且有规定格式的数据文件。

InputLength—每次读取接收缓冲区字符或字节的长度。

其他的各种属性值所使用的频率不大,暂不赘述。

软件中使用通信控件时,都是通过上述属性(Property)来具体实现的,因此属性就是控件的生命。例如接收缓冲区的字符并传给一个文本来显示,可以如此来安排程序语句:

txtReceive.Text=MSComm.Input

上面这句程序语句的含义为:MSComm控件的接收缓冲区(Input)的数据赋值到文本框txtReceive中作为它的文本变量Text来显示。

其他属性的使用可类推。

2、              通信软件对 MSComm 控件的使用

我们编制的通信软件主要是围绕着 MSComm 控件来做的,因此控件的使用是软件的主要任务。对控件使用的成功与否是关系到通信能否实现。

对此为说明其逻辑关系,可以用一个逻辑框图来说明。 框图的中心是通信控件MSComm,它将控制着一系列的通信传输动作。

 

 

 

 

 

 

 

 

             1 、通信控件的功能流程框图

3、              串口通信的软件实现

一般在使用串口都是异步的,所以串口通信有时也称异步数字通信。从软件编制的角度来讲,实现通信,除了硬件方面的基本保证之外,作者以为主要的任务是接收信息的辨识和驱动机制、以及错误陷阱的设计。

在电磁波法仪器的野外数据采集是一个无间隔的自由串,在编程中专门为此做了试验,以确定字节和字符的细微区别。在我们的通信程序中,使用的字节方式解读接收十六进制的信息。这是因为字节将全面地接受所有的信息,包括一些不可见的数字符号,如回车、换行符号等,可以较详细地了解数据的全貌,减少漏码现象发生。

通过解读代码,将在预定的显示框中出现人们可识别的数字,但是挤在一起的看似如同电报码类的数据。下面的工作和译电码无大的区别,根据发送的协议规定分开就是了:主要有两部分,头文件部分(前64位)和观测数据部分(65位以后)。

4、              软件的流程和特点

我们编制的通信软件虽然是对地下电磁波法的专用模块,但其编程方法是通用的,控件也是公开发行的,对其他的通信工作也有借鉴作用。 软件的流程见图2。

主要特点有这样几方面:

稳定的程序结构 。软件的稳定是编程人员不懈追求的最高境界,我们在编程中也是有着同样的愿望,以期减少以后维护的难度,为客户提供高质量的产品。

 

 

 

 

 

 

 

 

 

 

 

 

                图2、通信软件流程框图

在我们编制的通信模块控件中,影响其稳定的主要因素是通信端口各管脚的电压不稳,同时对方的数据在发送前并未加一些防错措施(如CheckSum技术),致使接收方的接收难度加大。从接收到的错误信息来观察,主要有这样几类:对方发送错码,如有中断的信号;两次数据通信之间出现的电冲击信号(操作电波仪器时引发)等。这些都不是接收方软件能解决的问题,即所谓“不可修改的错误”,惟一的办法就是尽量地降低发生的概率。为此在程序中安排了一些错误陷阱,增强捕捉错误的能力。

准确的驱动机制 。通信的速度相对微机的CPU来说是很慢,当我们接收时,一部分数据已经接收到并显示在指定的区域,而另一些数据还在路上走,所以需要有一个“接待站”随时监视接收缓冲器新的信息,并刷新显示区的内容。因此我们在软件中引入了事件驱动的机制

建立一个良好的驱动要求有几方面的设置:①确定接收缓冲器中的等待数据。语句为 MSComm.Rthreshold=1(可视具体要求来确定其数值),当缓冲区中有一个字节就启动接收事件。②在收到数据的同时,必须与前面已经收到的数据相接,并同步刷新显示的结果。。

友好的用户界面。 界面的友好应具备两个条件,操作尽可能的简单,提供的帮助尽可能的丰富全面。控件几乎没有什么操作:启动控件就进入了对缓冲区的查询等待;对方的数据一来就立刻显示在屏幕上。惟一的操作时开启和关闭几个按钮。

对在线帮助文档的编制目前正在进行中。

5、              操作软件的步骤和要点

该通信软件是以控件的形式发布的,所以可外挂在很多语言编制的软件单元中,其操作简单易行,下面逐一说明。

方法、成员属性和事件的使用。

作为一个控件,必须由若干个方法来组成控件的主要动作,完成其功能。本软件在编制中安排了: ReadFile Savefile Packup Inital 等几个主要的方法。使用的调用语法为:           控件调用名 . 方法名

事件只有一个: MSComm_OnComm

软件一经装载 (Loading) ,将立刻启动事件,接受缓冲区随时准备接收数据,同时捕捉错误的陷阱也同步运行,监视通信的全过程。

安排一个属性变量值: Serial1 ,数据文件的序号。

数据通信模块的操作。

    联接必要的电缆和接线,发送方式五针圆母头;接收方位九针母头。

    在菜单上点击电波数据通信项,进入通信子菜单。

    操作电波仪的面板,进入通信状态,选定文件名或号码。

      当发送方出现文件号时,按下回车。

    接收方—微机的屏幕上将出现传输的内容,然后按“整理数据”键,整理之后的数据将出现在规定的区域和文本框中。

    按“数据存盘” 键。将显示存盘的文件名和路径。

    确认正确无误后,按“进行下一个”键。第一轮数据传输结束。

    转到上面的第三项操作,开始新一轮数据通信。

在通信的过程中,应该记录下每一次数据的文件名,以备后用。

后记

利用 VB 的软件环境制作专用的通信控件,对我们来说是一个新的尝试。如果各位用户在使用中有问题希望及时地反馈给我们,以便进一步维护和改正。

 

 

参考文献:

1 、“ Visual Basic RS-232 串口通信控制”范逸之,中国青年出版社, 2002

2 、“钻孔电磁波法” 吴以仁等,地质出版社, 1982

3 、“ JW-4 地下电磁波仪使用说明书”高文利 , 物化探所内部出版 , 2002.

(英文说明)

 

Subject   The Development and Application of Software of Communication Between Computer and Instrument of Under-Ground EM Wave

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值