基于VB 6.0串口通信的气压测高系统数据采集实现

发布者:光速思考最新更新时间:2011-05-26 关键字:VB6.0  串口通信  气压测高系统 手机看文章 扫描二维码
随时随地手机看文章
  串口通信在系统控制的范畴中一直占据着极其重要的地位,在规格上越来越完善,应用也越来越广泛,使用串行通信的方式可以达到系统控制的目的。以往,要实现计算机的串口通信需要做大量复杂的工作,如今,Visual Basic 6.0(VB 6.0)在开发可视化环境下的监控系统时有其独特的优势,VB 6.0提供了串行通信控件,可以轻松实现串口数据的交换。本文介绍了基于VB 6.0的ActiveX控件——Microsoft Communication(MSComm)通信控件,实现了PC机对气压测高系统的串行通讯功能,完成了对多台气压测高设备进行数据采集。

  1 气压测高测试系统的基本构成

  气压测高系统的基本构成如图1所示,由PC机、气压测高基准站以及气压测高接收机三部分组成。PC机通过RS 232接口以及USB-RS 232接口与一个气压测高基准站和多个气压测高接收机相连接。气压测高基准站和每个气压测高接收机通过选用不同的串口端口来区分,这样PC机就可以对基准站和每个接收机进行通信,实现对气压测高基准站以及接收机的数据采集。


  采集到的数据主要用于以下分析:

  (1)分析不同地点的气压值、温度值以及大地高度值。

  (2)比较同一地点不同气压测高接收机测量的气压值、温度值以及大地高度值。

  2 气压测高接收机的简介

  气压测高接收机采用主要器件为:瑞士Intersema公司生产的集成压阻式压力传感器和ADC接口的SMD混合集成模块——MS5534C,微控制器选用ATmega8L单片机。气压测高接收机的硬件示意图如图2所示。其工作流程为:气压测高基准站将气象资料(基准站的气压、温度和高度)发送给ATmega8L,同时,ATmega8L采集MS5534C测得的接收机所在位置的气压和温度,利用相关的公式,解算出当地的大地高度,并发送给PC机。


  3 VB 6.0中MSComm通信控件

  VB 6.0增加了面向对象程序设计功能,它不仅可以方便快捷地编制适用于数据处理、多媒体等方面的程序,并且提供了一个ActiveX控件——Microsoft Communication ControlVersion 6.0,称为MSComm控件,可以方便地开发出使用计算机串口的计算机通信程序。MSComm控件提供了两种处理通信的方式:一种为事件驱动方式,该方式相当于一般程序设计中的中断方式。当串口发生事件或错误时,MSComm控件会产生OnComm事件,用户程序可以捕获该事件进行相应处理。另一种为查询方式,在用户程序中设计定时或不定时查询MSComm控件的某些属性是否发生变化,从而确定相应处理。

  利用MSComm控件实现计算机通信的关键是理解并正确设置MSComm控件众多属性和方法。以下是MSComm控件的常用属性和方法:

  Commport:设置或返回串口号,类型short

  Settings:以字符串的形式设置或返回串口通信参数。

  Portopen:设置或返回串口状态。

  InputMode:设置或返回接收数据的类型。

  Inputlen:设置或返回一次从接收缓冲区中读取字节数,类型short。

  Input:从接收缓冲区中读取数据并清空该缓冲区,该属性设计时无效,运行时只读。

  Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。

  Rthreshold:当接收缓冲区中字符数达到该值时,MSComm控件设置Commevent属性为ComEvReceive,并产生OnComm事件。

  Sthreshold:当发送缓冲区中字符数小于该值时,MSComm控件设置Commevent属性为ComEvSend,并产生OnComm事件。若Sthreshold属性设置为0,则不产生OnComm事件。

  CommEvent:串口事件,该属性设计时无效,运行时只读。一旦串口发生通信事件或产生错误,依据产生的事件和错误,MSComm控件为CommEvent属性赋不同的代码,同时产生OnComm事件。用户程序就可在OnComm事件处理程序中针对不同的代码,进行相应的处理。

  4 利用VB 6.0实现数据采集的串行通信

  在VB 6.0编程环境下,新建工程并引用MSComm控件,在窗体中添加所需控件,构建一个合理的收发界面。在窗体中还需要添加以下几个基本控件:

  (1)MSComm控件,主要用于软件对串口的访问。由于需要实现多台气压测高接收机的测试,需要添加多个控件。

  (2)定时器控件,用于使PC机定时向各气压测高接收机发送命令,使其定时回传实时数据。

  (3)非周期命令发送按钮,用于非周期性指令的传送启动。

  (4)数据保存按钮,用于将采集到数据保存为文本文件,便于数据后处理。

  (5)用于数据接收数据和发送数据的文本框。

  首先,应对窗体中MSComm控件初始化设置:


  每个气压测高接收机回传数据时即可以在PC机上引发各自的OnComm()事件,相互之间不存在数据干扰问题,数据采集后分别保存为文本文件,为后期数据处理提供原始数据。

  5 结  语

  本文介绍了VB 6.0的串行通信控件,分析了串口通信系统硬件构成和主要程序解决过程,有效提高了气压测高系统的测试效率,确保了数据采集的实时性和正确性。通过应用表明,数据采集准确,系统性能稳定,数据后处理方便。

关键字:VB6.0  串口通信  气压测高系统 引用地址:基于VB 6.0串口通信的气压测高系统数据采集实现

上一篇:基于EZ-USB的电脑眼接口设计
下一篇:针对高速串行接口设计的高效时钟解决方案

推荐阅读最新更新时间:2024-05-02 21:24

STM32串口通信数据乱码的相关问题
STM32串口通信以及温度采集搞定,其中主要遇到STM32系列单片机时钟树的问题,串口通信遇到串口调试助手能够接收到数据但出现乱码现象,开始一直以为是串口配置和程序代码问题,因为是第一次上电在线调试STM32板子,后面主要查串口波特率配置和收发函数程序段,如下图: 波特率设置成115200没问题,试着降低波特率改成9600和4800但问题依旧没有解决,紧接着如下处理: 将重定向函数注释,单独写串口发送字节和字符串函数,依旧失败。最后锁定到系统时钟配置上,由于手上的STM32开发板改用了12M的晶振,根据单片机时钟树的理解和解读,一般采用外部时钟HSE,系统时钟配置成72M,8*9=72,,12*6=72,对于 SYSCLK
[单片机]
STM32<font color='red'>串口通信</font>数据乱码的相关问题
STM32l151低功耗芯片串口通信(HAL库)
参考原子的stm32f系列的串口通信实验,移植到stm23l系列的程序代码。 1、采用串口中断方式,串口接收到消息产生中断,因此需要使能RXNE寄存器。HAL库函数的调用方式是__HAL_UART_ENABLE_IT(&UartHandle1, UART_IT_RXNE); UartHandle1是UART_HandleTypeDef类型,具体参考stm32lxx_hal_uart.h文件。 2、关于串口初始化,由于HAL库中的串口初始化函数HAL_UART_Init();会调用HAL_UART_MspInit();后者是一个关于串口1和串口2的I/O端口模式选择及初始化的函数。 为了使程序能顺利进入中断,可在Ms
[单片机]
AVR串口通信程序RS232头文件
下面是ATMEGA128的头文件 /************************这是串口0******************************/ /*串口0的初始化*/ void Uart0_init(void) { UCSR0B = 0x00; //禁止发送和接收 UCSR0A = 0x02; //倍速异步模式USX0=1 UBRR0L=(Crystal/8/Baud0-1)%256; //根据数据手册的计算法 UBRR0H=(Crystal/8/Baud0-1)/256; //如果不是倍速则(Crystal/16/Baud0-1) UCSR0B=(1 RXEN0)|(1 TXEN0)|(1 RX
[单片机]
PIC18F452+Proteus双机通信 串口通信 键盘更改波特率源程序
系统功能 1、实现双机之间的通信 (1)在主机上通过4*4键盘上的键值“1”“2”“3”设定波特率(2400、4800、9600),发给从机,两者正常通信; (2)从机将采集到的压力信号传到主机,主机通过LCD显示在第一行,我们可以观察到主机的LCD显示的数和从机的保持一致。 (3)主机通过获取按键“5”“6”“7”,改变从机的ADC采样率分别为“10s”“20s”“30s”,由于ADC采样率不易直接观察改变,可将采样率的值通过从机的三个不同颜色的小灯显示。 2、从机通过ADC采样获取压力传感器模拟输出端口的电压值,并将电压值转化为压力值,通过自身的LCD显示; 3、主机获得从机采集的压力值之后,和初始设定的压力值(我设置
[单片机]
PIC18F452+Proteus双机通信 <font color='red'>串口通信</font> 键盘更改波特率源程序
AVR单片机USART串口通信基本应用
/********************************************* File name : usart.c Chip type : ATmega16 Program type : Application Clock frequency : 11.0592MHz Memory model : Small 注意:发送采用查询方式,接收采用中断方式,在初始化程序中,需要将TXD设置成输出方式,RXD设置成输入方式,并使RXD的内部上拉有效 *********************************************/ #include mega16.
[单片机]
51单片机基础之串口通信
原理: 这里需要解释一下,串口通信是需要占用定时器1的,所以使用了串口通信就不能使用定时器1,除非是代码优化。 这个需要配置几个寄存器,都比较简单,TMOD寄存器设置定时器计数器的工作方式,SCON则是设置串口通信的工作方式,PCON则是波特率加倍操作,都是比较简单的。 计时器初始值的设置有专门的工具 链接:https://pan.baidu.com/s/1BSi8YCaRWtBGLaV2gslpSw 提取码:1234 使用方法: 设置定时器工作方式,单片机晶振,所需波特率,是否开启倍频,最好让误差为零。 代码: #include reg51.h typedef unsign
[单片机]
51单片机基础之<font color='red'>串口通信</font>
串口通信数据校验问题
Modbus协议 Modbus协议最初由Modicon公司 开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。此协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 当在网络上通信时,Modbus协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消 息,决定要产生何种行动。如果需要回应,控制器将生成应答并使用Modbus协议发送给询问方。 Modb
[单片机]
用WINSOCK编程实现WIFI与串口通信
    波仕电子的WF232L是一种WIFI与串口(RS-232、RS-485/422)的转换器,能够把IEEE802.11b/g的无线信号转换出串口。TCP#amp;DUP.exe测试工具可以显示WIFI与串口之间的通信数据,本文介绍的用WINSOCK编程实现WIFI与串口通信可以将源代码嵌入到用户自己的应用程序中。也可以用于VB的WINSOCK编程的参考。       WF232L的使用必须与无线AP(无线路由器)配合。WF232L的DB-9针串口有2个用处:1、在设置模式下用于对WF232L产品进行设置,2、在透明传输模式下作为WiFi转换出来的串口。用WINSOCK编程实现WIFI与串口通信显然必须在透明传输模
[网络通信]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved