用VB实现多点测温管理软件系统_第1页
用VB实现多点测温管理软件系统_第2页
用VB实现多点测温管理软件系统_第3页
用VB实现多点测温管理软件系统_第4页
用VB实现多点测温管理软件系统_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要本文讨论了单片机与PC机的串口,通过指令和数据的传送来实现控制功能,并利用VB提供的MSComm通信控件非常方便地编写了Windows环境下的串口通信程序,且结合实例给出了具体说明。上位机监控管理软件采用VB编制,用户可以通过向通讯控制总站发送命令,提取下位机温湿度数据,完成温度检测。文中给出了通信协议设计,硬件设计和软件设计。协议中有6种通信命令,适用于各种数据交换。硬件方面设计了时钟电路和波特率配置。软件方面完成了中断子程序、数据交换子程序和上位机串行通讯程序的设计、编写和调试。总体说来,本系统上位机软件功能齐全,系统实用性强,成本低,数据传输率高,容量大,可靠性好。它不仅可以应用于粮库的监控管理,而且也可推广到其他监控领域,因此具有广泛的应用前景。关键词:VisualBasic6.0;单片机;温度曲线;串行通信;MSComm控件AbstractThispaperdiscussedmicrocontrollerandclustersofmouthofPCrealizecontrollingfunctionthroughorderandconveyanceofdatum,Exploito~redbyVBMSCommcommunicationcontrollingpartcanwriteWindowsbunchesofmouthfulsofcommunicationprocedureofenvironmentconvenientlyverymuch.Combineinstanceprovideconcretetoprove.ThesoftwareformasterisprogrammedwithVB,andcustomerscansendcommandstothestationtoobtainthetemperaturedataofgranary.Thepaperdesignstheserialcommunicationprotocol,thehardwareandsoftware,Therearesixcommandsthatcanapplyallkindsofdataexchangeintheserialcommunicationprotocol,Inthehardware,theclockcircuitisdesigned,andthebaudrateisconfigured.Inthesoftware,theprograms,suchastheinterruptionsubroutine,dataexchangesubroutineandthehostserialcommunicationsubroutine,aredesigned,compiledanddebugged.Inaword,thissystempossessesthemeritofpracticability,hightechnology,lowcost,highspeedandlongdistanceindatatransmittingandhighreliability.Itcanbeusednotonlyingranarymanagementbutothermonitormanagementsystem.Ithasbroadapplicationpotentialityandgreatmeaning.Keywords:VisualBasic6.0;microcontroller;temperaturecurve;serialcommunication;controllingpartofMSComm目录TOC\o"1-5"\h\z\o"CurrentDocument"1 绪论 1\o"CurrentDocument"2 系统硬件简介 2单片机技术简介 2单片机技术的发展 2单片机技术的应用 2课题研究的目的和意义 4主控单片机的选择 4热电阻测量模块 4\o"CurrentDocument"通信部分 5\o"CurrentDocument"3 系统上位机软件设计 6\o"CurrentDocument"VisualBasic功能简介和发展 6VB基本概念与VB编程环境 8VB的基本概念 8VB6.0的集成开发环境简介 103.2.3利用VB开发应用程序的一般步骤 123.3设计中VB6.0所采用的控件 13SSTab控件的功能 13MSComm控件特点 13MSComm控件的介绍 133.4上位PC机VB通信程序设计串行通信程序设计方法 143.4.1上位机PC机端通讯软件的实现 15温度数据上传部分 16VB编程程序 16\o"CurrentDocument"4 系统调试 24\o"CurrentDocument"结论 26致谢 27\o"CurrentDocument"参考文献 28附录 29附录A 29部分程序清单 29附录B 34英文原文 341绪论随着电子技术、计算机技术、通信技术的迅速发展,工业测控领域采用先进的技术对现场的工业生产参数进行检测、监测是实现工业自动化的重要标志。目前,多点温度检测技术在现代化工农业领域得到广泛的应用,如粮库、程控交换机室、大型温室等场合都需要大范围集散分布监测点对温度进行监控。近年来单线多点数字化测量技术的发展使计算机检测技术实现了快速、可靠、低成本、数字化与网络化。而建立在该平台上的检测系统可以实现多传感器的数据融合与处理,专家数据库的应用可以使系统达到最佳控制状态。温度测量的领域十分广泛,其实,不仅在工业领域,而且在民用领域、军用领域,温度的测量随处可见。在工业领域,如电机的轴温,胶带滚筒的表面温度,工业冷却循环水温,加热设备的炉温,啤酒的麦芽发酵温度,各种化工原料在化学反应时控制的温度等等,在民用领域,超市的食品架内温度,人们生活空间环境的温度,空调的控制温度,人体的体温检测,冰箱、冰柜的温度测量等等。当然,不同的场合,对测温范围的要求不一,即使相同的测温范围,测量不同的对象,其测量的精度要求也不尽相同,这些是显而易见的,譬如,人体体温测量,测量精度应该要求比较高,达o.i°c左右,但在测量电机的轴温时,可能测量的允差达1C以上。传统的测温系统在测温点上由传感元件,信号调理电路、A/D转换或T/F转换、单片机数据采集等组成一个完整的微机系统;或采用独立式仪表测量单元,并通过串行口与上位机通讯,系统结构复杂,成本较高。本文设计了一个由数字化测温元件组成的单线多点温度监控系统,该系统是由上位机和下位机两大部分组成。下位机(单片机)完成远程数据采集与控制,它是由单片机和LED显示器、报警电路等组成、可以对64个测温点进行数字化测量。温度传感器采集的数据通过单总线方式传送给单片机进行数据处理;上位机具有良好的菜单操作方式,可以在线监控和显示所有测温点实时温度值。并具有数据库管理功能:实时温度曲线和历史温度曲线显示以及数据打印等功能。并为数据处理与融合,以及专家数据库建立了一个智能化应用平台。下位机(单片机)与上位机(PC机)通过RS-232串行口进行数据通讯。系统硬件简介单片机技术简介2.1.1单片机技术的发展所谓单片机(microcontroller)是指在一个集成芯片中,集成微处理器(CPU)、存储器、基本的I/O接口以及定时/计数、通信部件,即在一个芯片上实现一台微型计算机的基本功能。1970年微型计算机研制成功之后,随着就出现了单片机(即单片微型计算机)。美国Intel公司1971年生产的4位单片机4004和1972年生产的雏形8位单片机8008,特别是1976年MCS-48单片机问世以来,在短短的二十几年间,经历了四次更新换代,其发展速度大约每二、三年要更新一代、集成度增加一倍、功能翻一番。其发展速度之快、应用范围之广,己达到了惊人的地步。它己渗透到生产和生活的各个领域,可谓“无孔不入”。尽管日前单片机的品种很多,但其中最具典型性的当数Intel公司的MCS-51系列单片机。MCS-51是在MCS-48的基础上于80年代初发展起来的,虽然它仍然是8位的单片机,但其功能有很大的增强。由于PHILIPS,ATMEL,WELBORD,LG等近百家IC制造商都主产51系列兼容产品,具有品种全、兼容性强、软硬件资料丰富等特点。因此,MCS-51应用非常广泛,成为继MCS-48之后最重要的单片机品种。直到现在MCS-51仍不失为单片机中的主流机型。国内尤以Intel的MCS-51系列单片机应用最广。由于8位单片机的高性能价格比,估计近十年内,8位单片机仍将是单片机中的主流机型。单片机技术的应用随着计算机技术的发展和在控制系统中的广泛应用,以及设备向小型化、智能化发展,作为高新技术之一的单片机以其体积小、功能强、价格低廉、使用灵活等优势,显示出很强的生命力。它和一般的集成电路相比有较好的抗干扰能力,对环境的温度和湿度都有较好的适应性,可以在工业条件下稳定工作。且单片机广泛地应用于各种仪器仪表,使仪器仪表智能化,提高它们的测量速度和测量精度,加强控制功能。如MCS-51系列单片机控制的“船舶航行状态自动记录仪”、“烟叶水分测试仪”、“智能超声波测厚仪”等。单片机也广泛地应用于实时控制系统中,例如对工业上各种窑炉的温度、酸度、化学成分的测量和控制。将测量技术、自动控制技术和单片机技术相结合,充分发挥其数据处理功能和实时控制功能,使系统工作处于最佳状态,提高系统的生产效率和产品质量。从航空航天、地质石油、冶金采矿、机械电子、轻工纺织等行业的分布系统与智能控制以及机电一体化设备和产品,到邮电通信、日用设备和器械,单片机都发挥了巨大作用。其应用大致可分为以下几方面:机电一体化设备的控制核心机电一体化是机械设备发展的方向。单片机的出现促进了机电一体化技术的发展,它作为机电产品的控制器,充分发挥其自身优点,大大强化了机器的功能,提高了机器的自动化、智能化程度。最典型的机电产品机器人,每个关节或动作部位都是个单片机控制系统数据采集系统的现场采集单元大型数据采集系统,要求数据采集的同步性和实时性要好。使用单片机作为系统的前端采集单元,由主控计算机发出采集命令,再将采集到的数据逐一送到主计算机中进行处理。如有些气象部门、油田采油部门以及电厂等均可采用这样的系统。分布控制系统的前端控制器在直接控制级的计算机分布控制系统(DCS)中,单片机作为过程控制中每一分部操作或控制的控制器,进行数据采集、反馈计算、控制输出,并在上位机命令的指挥下进行相应协调工作。智能化仪表的机芯自动化仪表的智能化程度越来越高。采用单片机的智能化仪表可具有自整定、自校正、自动补偿和自适应功能,还可进行数字PID调节,软件消除电流热噪声等等,解决传统仪表所不能解决的难题。单片机的应用使这种性能如虎添翼,如自动计费电度表、燃气表中己有这方面的应用。许多工业仪表中的智能流量计,气体分析仪、成分分析仅等也采用了这项技基于单片机的烘炉温度自动检测系统的研究与设计术。甚至有的保健治疗仪中也采用了单片机控制。消费类电子产品控制该应用主要反映在家电领域,如洗衣机、空调器、保安系统、VCD视盘机、电子秤、IC卡、手机、BP机等。这些设备中使用了单片机机芯后,大大提高了其控制功能和性能,并实现了智能化、最优化控制。终端及外围设备控制计算机网络终端设备,如银行终端、商业POS(自动收款机)以及计算机外围设备如打印机、通信终端和智能化UPS等。在这些设备中使用单片机,使其具有计算、存储、显示、输入等功能,具有和计算机连接的接口,使计算机的能力及应用范围大大提高。本课题以单片机作为控制器之一,进一步研究单片机在自动化检测领域中的应用。课题研究的目的和意义在工业生产中,上位机软件占据着举足轻重的地位。随着4C技术(computer、control、communication、CRT)及监控软件的发展,使用上位机监控管理系统已成为大中型控制系统的流行趋势,以PC机作为上位机应用于控制系统中能提供一种良好的人机界面,减轻操作人员的负担,提高管理水平。近年来,随着计算机技术的飞速发展,给温度的多点测量提供有力的技术支持。目前,计算机应用控制领域采用三种配置:(1)可编程序控制器(PLC),(2)微型计算机,(3)单片机。多点测温系统,作为检测系统的一种,采用单片机作为前段数据采集单元,对温度进行采集和处理。应用微型计算机实现数据保存、分析统计。本课题研究开发的目的,就是要通过采用先进的上位机软件,研究出具有我国自主知识产权的多点测温系统。研制的多点测温系统,可用来连续测量各点的温度变化,准确的绘制出各个时间上的时间曲线。主控单片机的选择主控单片机我们选用新茂的SM8952单片机。SM8952单片机是内嵌8K字节闪存的8位单片微控制器它具有多达32个I/O口,其8K的闪存既可做程序存储空间也可以作数据存储空间或程序数据混合空间这些硬件特征和其强大的指令系统使它应用于不同的场合因此是通用的和性能价格比高的控制器。该单片机还具有稳定性好,抗干扰等优点,非常适合本测温系统设计的使用。热电阻测量模块我们采用的是PT100作为温度传感器。铂电阻温度传感器的特点是:精度高,稳定性好性能可靠。铂在氧化性环境中,甚至在高温下的物理和化学性质都非常稳定。因此铂被公认为是目前制造热电阻的最好材料。铂电阻主要作为标准电阻温度计使用,也常被用在工业测量中。此外,还被广泛地应用于温度的基准和标准的传递。铂电阻温度计是目前测温重复性最好的一种,它的长时间稳定的重复性可达104K,优于其他所有温度计。目前铂电阻的纯度已经达到99.9995%。信号采集方式采用电桥。由于热电阻安装的地方距离测量模块比较远,当环境的温度变化时其连接导线电阻也要变化。因为它与热电阻Rt是串联的,也就是电桥臂的一部分,所以会造成测量误差。采用三线制接线方法就可以避免这种误差的产生。2.5通信部分本系统采用RS-485通信方式,接口选择芯片MAX487。MAX487是MAXIM公司生产的用于RS-485和RS—422通信的差分总线小功率收发器,它含有一个驱动器和一个接收器,具有驱动器/接收器使能功能,输入阻抗为1/4负载(>48kW),节点数为128,即每个MAX487的驱动器可驱动128个标准负载。MAX487的驱动器设计成限斜率方式,使输出信号边沿不至于过陡,以避免在传输线产生过多的高频分量,从而有效扼制了干扰现象。MAX487的接收灵敏度为±200MV,即接收端的差分电压>+200MV时,接收器输出为高电平,<-200MV时接收器输出为低电平,介于土200MV之间时接收器输出为不确定状态,因此,一旦某个节点的接收器在总线空闲、传输线开路或短路时产生低电平,将使串行接收器找不到起始位,从而引起通信异常,为此,本系统在硬件上作了处理:将MAX487的A、B输出端加接上拉、下拉电阻,保证在发出有效数据时所有接收器能接收到完整的数据。MAX487的数据传输速率为0.25Mbps,静态工作电流为120yA,5V单电源工作,在本系统中,MAX487采用半双工通信方式,各节点间的通信通过一对双绞线作为传输介质,因双绞线的特性阻抗为1200,因此系统在MAX487的始端和末端各接一个1200电阻以减少线路上传输信号的反射。由于主机与分机相隔较远,而分机系统上电或复位又常常不在同一时刻完成,如在此时某个MAX487处于发送状态,将占用通信总线而使其它分机无法与主机进行通信,本系统在SM8952的P3.5口与MAX487的DE端之间加接光耦TIL817,保证了系统上电复位时MAX487的DE端为“0”,有效解决了这个问题。系统上位机软件设计工业生产中上位机软件有很多种,本设计采用的是VB6.0作为上位机软件。3.1VisualBasic功能简介和发展VisualBasic(简称VB)是Microsoft公司开发的一种通用的基于对象的程序设计语言。“Visual”指的是开发图形用户界面(GUI)的方法——不需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象add到屏幕上的一点即可。“Basic”指的是BASIC(BeginnersAll-PurposeSymbolicInstructionCode)语言,一种在计算技术发展历史上应用得最为广泛的语言。VisualBasic在原有BASIC语言的基础上进一步发展,至今包含了数百条语句、函数及关键词,其中很多和WindowsGUI有直接关系。专业人员可以用VisualBasic实现其它任何Windows编程语言的功能,而初学者只要掌握几个关键词就可以建立实用的应用程序。VisualBasicScriptingEdition(VBScript)是广泛使用的脚本语言,它是VisualBasic语言的子集,可嵌入HTML语言中,用于网页设计,如ASP(ActiveServerPage)文件。VB简单易学,通用性强,用途广泛。VB可以用于可以开发多媒体、数据库、网络、图形等方面的应用程序。数据访问特性允许对包括MicrosoftSQLServer和其它企业数据库在内的大部分数据库格式建立数据库和前端应用程序,以及可调整的服务器端部件。有了ActiveX(TM)技术就可使用其它应用程序提供的功能,例如MicrosoftWord字处理器,MicrosoftExcel电子数据表及其它Windows应用程序。Internet能力强大,很容易在应用程序内通过Internet或intranet访问文档和应用程序,或者创建Internet服务器应用程序。已完成的应用程序是使用VisualBasic虚拟机真正.exe文件,可以自由发布。VB是伴随Windows操作系统而发展的,在中国使用较广的版本有VB4.0、VB5.0、VB6.0。VB4.0是为配合WIN95的问世于1995年推出的,既可用于编写WIN3.X平台的16位应用程序也可编写WIN95平台的32位应用程序;VB5.0主要用于编写WIN95平台的32位应用程序,较之VB4.0主要扩展了数据库、ActiveX和Internet方面的功能;VB6.0是与WIN98配合于1998年推出的,进一步加强了数据库、Internet和创建控件方面的功能。本系统软件采用VB进行程序设计。因为visualBasic是一种功能强大的高级程序设计语言,它可以实现一些基本的简单情况,也可以完成许多高级任务,在这里关于VB方面的一些知识都将详略的介绍到。整个系统软件设计将被划分为非本质部分程序设计和本质程序设计进行分述。关于本质与非本质的划分是基于这样一个标准:用VisualBasic可视手段对于封皮。菜单及其它部分简单设计称为非本质部分设计;对用VisualBasic进行测温。子程序,温度显示,存盘,读盘,单仓数据监察这些系统所必须的高级功能程序设计称为系统的本质程序设计。本人对于可视化VisualBasic的设计体会是:VB的优点是在非本质程序设计中有重要的反映,淡然在本质程序部分设计中也有很多较之其它语言进行程序设计所没有的重要优点。VisualBasicforwindows是一种具有良好图形用户界面(GUI)的程序设计语言,同时又是一种完美支持面向对象程序设计(00P)的语言。Visual指的是开发图形拥护(GUI)的方法,不需要像C语言那样编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象拖放到窗体上即可。这种直观的编程方法,也叫做可视化变编程。Basic指的是(BasicBeginnersAll-PurposeSymbolicInstructionCode)语言,是-一种在计算机技术发展历史上应用得最为广泛的语言。而VisualBasic则综合运用了BASIC语言的结构话特点和GUI可视化设计工具。既具有windows丰富的图形窗口工作环境,又继承了BASIC语言编程的简便性。与C语言相比,不能说VB就比C语言优秀,作为C语言,其灵活简便,对于运行环境要求不高书共知的,而VB则要求很高的配置与条件。VisualBasic是一种面向对象的程序设计(OOP),因而它具有OOP语言所具有的对象的创建机制,对象的继承性,对象的多态性及对象的可见性等特征。所谓面向对象的程序设计是一种以对象为基础,以事件来驱动对象执行的程序设计技术。OOP把计算过程看作为对象的分类过程加上其状态变换的过程也就是将一个应用程序逐步划分成互相关联的多个对象,并且建立起与这些对象互相关联的事件过程。通过对象对所发生的事件产生响应,并执行相应的事件过程,以引发对象状态的改变,从而最终达到完成计算的目的。面向对象设计是一种全新的程序设计方法,它从根本上改变了传统的程序设计模式,其基本思想是:通过建立于具体实际应用相对应的对象,并通过这些对象的组合来创建具体的应用程序。3.2VB基本概念与VB编程环境VB变成是一种面向对象的程序设计,要熟悉并掌握它必须先掌握其基本该您于编程环境。3.2.1VB的基本概念1、对象对象是代码和数据的组合,可以作为一个单位来处理。对象可以是应用程序的一部分,比如可以是控件或窗体。整个应用程序也是一个对象。在VB中可能用到的几种类型的对象,如表3.1所示:表3.1类型对象示例示例描述命令按钮窗体上的控件,像命令按钮和框架,它们都是对象窗体VisualBasic工程中的母一个窗体都是独立的对象数据库数据库是对象,并且还包含其他对象,如字段、索引等图表MicrosoftExcel中的图表是对象VB中的每个对象都是用类定义的。用饼干模子和饼干之间的关系作比,就会明白对象和它的类之间的关系。饼干模子是类。它确定了每块饼干的特征,比如大小和形状。用类创建对象,对象就是饼干。类是面向对象程序设计的核心技术,可以理解成一种定义了对象行为和外观的模板;把对象看作是类的原原本本的复制品,类具有继承性、封装性、多态性、抽象性。(1)属性属性是对对象特性的描述,VB为每一类对象都规定了若干属性,设计中可以改变具体对象的属性值。比如窗体的背景颜色、高度与宽度。(2)事件(Event)事件是发生在对象上的动作。事件的发生不是随意的,某些事件仅发生在某些对象上。在VB中事件的调用形式是:PrivateSub对象名_事件名(事件内容)EndSub(3)方法(Method)方法指的是控制对象动作行为的方式。它是对象本身内含的函数或过程,它也是一个动作,是一个简单的不必知道细节的无法改变的事件,但不称作事件;同样,方法也不是随意的,一些对象有一些特定的方法。在VB里方法的调用形式是:对象名.方法名2、 属性、方法和事件之间的关系VB对象具有属性、方法和事件。属性是描述对象的数据;方法告诉对象应做的事情;事件是对象所产生的事情,事件发生时可以编写代码进行处理。VB的窗体和控件是具有自己的属性、方法和事件的对象。可以把属性看作一个对象的性质,把方法看作对象的动作,把事件看作对象的响应。日常生活中的对象,如小孩玩的气球同样具有属性、方法和事件。气球的属性包括可以看到的一些性质,如它的直径和颜色。其它一些属性描述气球的状态(充气的或未充气的)或不可见的性质,如它的寿命。通过定义,所有气球都具有这些属性;这些属性也会因气球的不同而不同。气球还具有本身所固有的方法和动作。如:充气方法(用氦气充满气球的动作),放气方法(排出气球中的气体)和上升方法(放手让气球飞走)。所有的气球都具备这些能力。气球还有预定义的对某些外部事件的响应。例如,气球对刺破它的事件响应是放气,对放手事件的响应是升空。在VB程序设计中,基本的设计机制就是:改变对象的属性、使用对象的方法、为对象事件编写事件过程。程序设计时要做的工作就是决定应更改哪些属性、调用哪些方法、对哪些事件做出响应,从而得到希望的外观和行为。3、 事件驱动模型在传统的或“过程化”的应用程序中,应用程序自身控制了执行哪一部分代码和按何种顺序执行代码。从第一行代码执行程序并按应用程序中预定的路径执行,必要时调用过程。在事件驱动的应用程序中,代码不是按照预定的路径执行,而是在响应不同的事件时执行不同的代码片段。事件可以由用户操作触发、也可以由来自操作系统或其它应用程序的消息触发、甚至由应用程序本身的消息触发。这些事件的顺序决定了代码执行的顺序,因此应用程序每次运行时所经过的代码的路径都是不同的。因为事件的顺序是无法预测的,所以在代码中必须对执行时的“各种状态”作一定的假设。当作出某些假设时(例如,假设在运行来处理某一输入字段的过程之前,该输入字段必须包含确定的值),应该组织好应用程序的结构,以确保该假设始终有效(例如,在输入字段中有值之前禁止使用启动该处理过程的命令按钮)。在执行中代码也可以触发事件。例如,在程序中改变文本框中的文本将引发文本框的Change事件。如果Change事件中包含有代码,则将导致该代码的执行。如果原来假设该事件仅能由用户的交互操作所触发,则可能会产生意料之外的结果。正因为这一原因,所以在设计应用程序时理解事件驱动模型并牢记在心是非常重要的。4、交互式开发传统的应用程序开发过程可以分为三个明显的步骤:编码、编译和测试代码。但是VisualBasic与传统的语言不同,它使用交互式方法开发应用程序,使三个步骤之间不再有明显的界限。VB在编程者输入代码时便进行解释,即时捕获并突出显示大多数语法或拼写错误。看起来就像一位专家在监视代码的输入。除即时捕获错误以外,VB也在输入代码时部分地编译该代码。当准备运行和测试应用程序时,只需极短时间即可完成编译。如果编译器发现了错误,则将错误突出显示于代码中。这时可以更正错误并继续编译,而不需从头开始。由于VB的交互特性,代码运行的效果可以在开发时进行测试,而不必等到编译完成以后。3.2.2VB6.0的集成开发环境简介VB集成开发环境(IDE——IntegratedDevelopingEnvironment)由以下元素组成:1、标题栏用于显示正在开发或调试的工程名和系统的工作状态(设计态、运行态、中止态)。2、菜单栏如图3.1:文件迢)编辑⑥视图②工程的格式⑪I调试⑪运行⑥查询⑪图表①工具⑴外接程席㊈•窗口⑩帮助⑩图3.1菜单栏示意图3、工具栏如图3.2:澎〒色k育心9|為电俚開I口CIpII■I霸.图嚼普法汶倉出0.D還5055.40! P「 I图3.2工具栏示意图在编程环境下用于快速访问常用命令。缺省情况下,启动VB后显示“标准”工具栏,附加的编辑、窗体设计和调试的工具栏可以从“视图”菜单上的“工具栏”命令中移进或移出。4、 窗体设计器用来设计应用程序的界面。启动VB后,窗体设计器中自动出现一个名为Forml的空白窗体,可以在该窗体中添加控件、图形和图片等来创建所希望的外观,窗体的外观设计好后,从菜单中选择“文件”-“保存窗体”-在保存对话框中给出合适的文件名(注意扩展名),并选择所需的保存位置-确定。需要再设计另一个窗体时,单击工具栏上的“添加窗体”按钮即可。5、 控件(工具)箱由一组控件按钮组成,用于设计时在窗体中放置控件。除了缺省的工具箱布局之外,还可以通过从上下文菜单中选定“添加选项卡”并在结果选项卡中添加控件来创建自定义布局。6、 弹出式(上下文)菜单在要使用的对象上单击鼠标右键即可打开快捷菜单,其上会出现与当前对象相关的经常执行的操作,以加快操作速度。7、 工程管理器窗口用于浏览工程中所包含的窗体和模块,还可以从中查看代码、查看对象。8、 属性窗口是VB中一个比较复杂的窗口,其中列出了对选定窗体和控件的属性设置值。VB中正是通过改变属性来改变对象的特征,如大小、标题或颜色。9、 对象浏览器列出工程中有效的对象,并提供在编码中漫游的快速方法。可以使用“对象浏览器”浏览在VB中的对象和其它应用程序,查看对那些对象有效的方法和属性,并将代码过程粘贴进自己的应用程序。10、 对象浏览器右击窗体中的对象、从工程管理器中点“查看代码”按钮。11、窗体布局窗口FormLayoutwindow允许使用表示屏幕的小图象来布置应用程序中各窗体的位置。12、 立即、本地和监视窗口这些附加窗口是为调试应用程序提供的,它们只在IDE之中运行应用程序时才有效。2.3利用VB开发应用程序的一般步骤一个VB程序也称为一个工程,由窗体、标准模块、自定义控件及应用所需的环境设置组成。开发步骤一般如下:创建程序的用户界面设置界面上各个对象的属性编写对象响应事件的程序代码保存工程测试应用程序,排除错误创建可执行程序本软件各窗体简单介绍:本系统软件部分包括8个窗体,1个模块;模块中主要包含有一些功能函数的实现。如打开,保存等等。窗体分别为封面窗体,主菜单,数据报表,单仓温度监测,帮助。这些窗体都具有界面美观,操作方便的优点。本系统可实现以下功能:可以设定报警温度。可监视各个时刻的温度。可打印某个时刻的温度报表。可任意查看某一仓温度值。读盘可对以往数据查询。可将当天当时数据以日期命名存盘,便于管理。可方便退出应用系统。帮助子菜单将让你更清楚地了解整个系统的功能。3.3设计中VB6.0所采用的控件本设计在采用VB6.0作为上位机软件的同时,还应用了VB6.0的两个控件。SSTab和MSCOMM控件。3.3.1SSTab控件的功能SSTab控件提供了一组选项卡,每个选项卡都可以作为其它控件的容器。在控件中,同一时刻只有一个选项卡是活动的,这个选项卡向用户显示它本身所包含的控件而隐藏其它选项卡中的控件。3.3.2MSComm控件特点MSComm控件是Microsoft提供的扩展控件,用于支持VB程序对串口的访问,该控制"隐藏"了大部分串口通信的底层运行过程和许多烦琐的处理过程,同时支持查询方法和事件驱动通信的机制,事件驱动通信是交互方式处理串口事务的一种非常有效的方法,特别适合Windows程序的编写.在通信过程中,当发送数据,收到数据或产生传输错误时,触发MSComm控件的OnComm事件,然后可以通过判断CommEvent属性值获得事件类型,再根据事件类型进行相应数据处理。因此用其实现微机串口的数据通信相当简单,以很少的程序代码就可以轻松实现串口的访问和数据通信。3.3.3MSComm控件的介绍一般来说,用VB进行串口通信使用到的大部分都是这个MSComm这个控件,MSComm通信控件提供了一系列标准通信命令的接口,我们可以通过它可以建立串口连接、数据发送、命令发送以及监视和响应在通信过程中的事件和错误。MSComm这个控件在一开始的时候不是默认的出现在Toolbox中的,我们要想使用它,就必须把它从VB中调出来。首先单击Project(工程),选择Components(控件),接着在Control(控制)选项卡中选中MicrosoftCommControl6.0这个控件,点击确定,这时你就能在Toolbox上看到一个小电话的图标,它就是MSComm控件。MSComm控件提供两种处理通信的方法:第一种是当串口发生事件或者错误的时候,会产生一个OnComm的事件,我们可以通过对这个事件的捕捉,进行相应的处理,这种通过对OnComm事件进行捕捉的方法称为事件驱动方式;第二种是定时或者不定时的查询MSComm的属性变化,从而选择相应的处理方式,这种方法我们称为查询方法。说到OnComm事件,这里就的不得不说到MSComm的另一个重要属性--CommEvent属性。当串口发生事件或者错误的时候,MSComm就为它赋不同的代码,同时,产生一个OnComm事件。这时候,我们就可以针对不同的代码,进行相应的处理。下面提供一些CommEvent属性的代码、常数及含义:CommEvent通信事件:代码常数含义ComEvReceive接受到Rthreshold个字符。该事件将持续产生,直到用Input属性从接受缓冲区中读取并删除字符。ComEvSend发送缓冲区中数据少于Sthreshold个,说明串口已经发送了一些数据,程序可以用Output属性继续发送数据。ComEvCTSClearToSend信号线状态发生变化。ComEvDSRDataSetReady信号线状态从1变到0。ComEvCDCarrierDetect信号线状态发生变化。ComEvRing检测到振铃信号。ComEvEOF接受到文件结束符。CommEvent通信错误:代码常数含义ComEvntBreak接受到一个中断信号。ComEvntCTSTOClearToSend信号超时。ComEvntDSRTODataSetReady信号超时。ComEvntFrame帧错误。ComEvntOverrun串口超速。ComEvntCDTO载波检测超时。ComEvntRxOver接受缓冲区溢出,缓冲区中已没有空间。ComEvntRxParity奇偶校验错。ComEvntTxFull发送缓冲区溢出,缓冲区中已没有空间。ComEvntDCB检索串口的设备控制块时发生错误。上位PC机VB通信程序设计串行通信程序设计方法在本温度检测系统中,上位机的主要功能有:串口通信功能设置;接收来自下位机的测温值,并进行实时显示;向下位机发送温度上、下限值;实时温度曲线和历史温度曲线显示;数据库管理功能。利用VB开发通信程序的主要方法有两种:一种是利用VB本身提供的通信控件;另一种方法是利用WindowsAPI应用程序接口。在实践中,利用VB通信控件的方法比调用API动态连接库的方法更为简便,因而本系统主要采用利用VB通信控件进行通信。VB中MSComm串口通信控件在正常的工具栏中没有,需要在菜单"工程"的选项"部件"中添加,选择MicrosoftCommControl6.0即可。3.4.1上位机PC机端通讯软件的实现在Windows环境下,尽管VisualBasic6.0不能对I/O口直接进行访问,但其包含的MSComm部件为实现多机串行通信提供了有力工具。VB6.0具有面向对象的设计方法、友好的用户界面、简单方便的串行通讯和实用性强等优点,无需借用其它语言就可以开发出优秀的控制系统通讯软件。因此本系统采用VB6.0在Windows98环境下实现PC机与MCS-51系列8031单片机之间的串行通讯。VB提供了串行端口控件MSComm来为应用程序提供串行通讯,该控件屏蔽了通信过程中的底层操作,程序员应用时只需设置、监控MSComm控件的属性和时间即可完成对串行口的初始化和数据的输入输出工作。MSComm控件的主要属性如下:Commport设置并返回端口号。设计时端口号可以设置成1到16的任何数。例如:MSCmport=2,即设置当前通讯端口为COM2。Setting 设置并返回波特率、奇偶校验、数据位、停止位。格式为:MSComm.Setting=String,String是一个包含四部分的字符串。第一部分位波特率;第二部分为奇偶校验,N表示不校验,E表示偶校验,O表示奇校验,S表示空格校验,M表示符号校验;第三部分为数据位数,其可选值为4,5,6,7,8;第四部分为停止位位数,其可选值为1,1.5,2;Setting属性的缺省值为“9600,N,8,1”。Portopen设置并返回通讯端口的状态,也可以打开和关闭端口。Input从接收缓冲区返回和删除字符,该属性在运行时为只读。InputLen设置并返回每次Input属性从接收缓冲区中读取的字符数。InputLen属性的缺省值为0时,Input将读取接收缓冲区的全部内容。Output向传送缓冲区写数据,要传送的数据可以是文本数据或二进制数据。CommEvent返回最近的通讯时间或错误。只要有通讯错误或事件发生时都会产生OnComm事件,CommEvent属性中存有该错误或事件的数字代码。3.4.2温度数据上传部分温度数据上传部分我们采用RS485的通信方式,该方式的优点是数据可传输的距离远,由于采用土200mV电势差来表示传输的逻辑,所以具有很强的抗干扰能力。在进行数据上传之前要将MAX487的读写信号线置成写,发送数据结束在将信号线置成读。上传数据帧格式,温度上传的桢格式为:起始字节为9F,通道字节用高四位表示通道号,符号字节用11表示正数,用12表示负数,温度值第一字节的低四位表示温度值的十位,温度值第二字节的低四位表示温度值的个位,温度值第三字节的低四位表示温度值的小数位,校验位为从通道号开始的五个字节的和的低字节,停止字节为6F。串行口的通信波特率为9600bps,时钟发生器用定时器1的工作方式2,采用8位自动加载模式,计数初值为0XFD,波特率不增倍,SMOD=0;下面介绍发送一个字节的方法:先将MAX487置于写状态,然后把要发送的数据送到SBUF里,查询TI的状态,如果为“0”,则继续查询,直到TI为“1”,表示发送的一个字节已经结束,将MAX487置于读状态。向上位机发送温度子程序如表3.2:表3.2传送数据表开始位通道号符号位十位个位小数位校验位停止位9FXXXX000011,120000XXXX0000XXXX0000XXXXSUM6F3.4.3VB编程程序首先打开VB6.0应用程序,如图3.3:选择标准EXE,点击打开进入VB6.0操作界面,点击“Project(工程)”——选择“Components(控件)”接着在“Control(控制)”。选项卡中选中MicrosoftCommControl6.0这个控件,点击确定,这时你就能在Toolbox上看到一个小电话的图标,它就是MSComm控件。图3.3VB新建工程图strset=“9600,N,8,1”m_I_RecvCont=0m_b_SendData=FalseMSCommTemp.CommPort=Int(ComTemp.Text)MSCommTemp.Settings=strsetMSCommTemp.InputMode=comInputModeBinaryMSCommTemp.InputLen=0MSCommTemp.Rthreshold=1MSCommTemp.PortOpen=TrueLabinfo.Caption=“系统信息:串口打开成功!”MSCommTemp.InBuffercount=0M_b_Temp_Open=True上面这段程序是用VB6.0编程语言对MSComm控件的设置。波特率为:9600奇偶校验位为:N数据位为:8停止位为:1PrivateSubMSCommTemp_OnComm()采用MSComm控件中OnComm事件IfArr(0)=&H9FThenm_i_RecvCount=0LabInfo.Caption="系统信息:正在接收数据..."EndIf这段程序表示,数组Arr(0)接收到下位机传送的代码如果是“&H9F”则表示系统通讯成功,正在接收数据。IfArr(7)=&H6FThenm_i_sum=0Fori=1To7m_i_sum=m_i_sum+Arr(i)Nextichecksum=m_i_sumAnd255checksum=m_i_sumAnd127IfArr(1)>8ThenExitSubIf(Arr(2)=&HB)Thendisplay(Arr(1))=Arr(3)*10+Arr(4)+Arr(5)*0.1display(Arr(1))=display(Arr(1))*(-1)Elsedisplay(Arr(1))=Arr(3)*10+Arr(4)+Arr(5)*0.1EndIf这段程序表示,数组Arr(7)接收到下位机传送的代码如果是“&H6F”则表示系统通讯结束。并且只接收1—8八个通道的数据。如果通道位的代码大于8,则程序结束。通过数组Arr(2)的代码来判断接收到的温度数据的正负。如果接收到的代码是“&HB”则表示接收到的温度数据为负数,相反为正数。如图3.4:判断是甲喘昨4数据传送流程图图3接收適1HPrivateSubPicture1_Paint()DimIAsIntegerPicture1.Scale(0,110)-(500,0)ForI=10To100Step10Picture1.Line(0,I)-(10,I)Picture1.CurrentY=Picture1.CurrentY+3Picture1.PrintINextIPicture1.CurrentX=0:Picture1.CurrentY=Text1.TextEndSub这段代码是在SSTab控件上画上一个picturebox,并根据接收到的温度数据画出相应的曲线。如图3.5:100_90_80_70_6050-40—30图3.5温度曲线示意图第一邇道[第二通道[第三通道[第四道道[第五通道[第責通道[100_90_80_70_6050-40—30图3.5温度曲线示意图上位机采集上来的数据在Text.text文本框中显示,如图3.6:图3.6温度数据显示图读存盘处理程序的编写:在读存盘处理程序编写过程中,关键涉及两个问题要加以讨论与解决,一个是通用对话框,一个是文件的读写操作即属于文件管理的内容。1、通用对话框对话框是VisualBasic应用程序与拥护进行信息交换的窗口,通过对话框可以输入必要的信息和数据。包括三种设计方法:Msgbox和InPutBox及用CommonDialog控件设计标准窗体对话框。Msgbox功能是把消息传递给用户,同时接收用户在对话框中的选择,使程序根据用户的选择来作出相应的响应。Msgbox(prompt,buttons,title,helpfile,Context])可看作输出对话框,在交互或程序中,能反馈一些信息,进行提示拥护,其中prompt:显示的消息字符串表达式。Buttons:显示按钮数目和形式以及对话框风格的数字表达式表示Title:对话框标题的字符串表达式。InPutBox:一般用作程序的输入框,接收用户的输入,并根据接收到的消息,作出相应的处理。InPutBox(prompt,title,default,xpos,ypos,helpfile,context)用CommonDialog控件创建,包括打开文件,保存文件等标准对话框,在应用程序中可以用不同的显示方法来实现显示对话框,以便给应用程序提供信息数据,然后根据接收来的信息作出不同的处理,可以在程序中通过调用CommonDialog控件的属性来接收用户在对话框中输入的信息。用法:object.showopen显示open对话框2、文件操作所谓文件一般是指存储在计算机外部介质上一些信息组成的集合,要求到存储在外部介质上的数据信息,必须先按所提供的文件名找到指定的文件,然后再从该文件中读取数据信息。用户要向外部介质上存储数据信息,也必须先建立一个文件,然后再向该文件输出需要存储的信息。文件存取的方式有顺序文件和随机文件两种。顺序文件的数据是一个接一个顺序存放的,而且只提供第一个记录的存储位置,随机文件的每个记录均有固定的长度,每个记录都有一个记录号,在存放数据时,只要指明是第几个记录号,就可以把数据存入指定的位置;读取数据时,只需要给出某一个记录的记录号,便能直接读取记录,随机文件可以同时作输入输出操作,速度快。对随机文件操作包括建立随机文件,打开随机文件,关闭随机文件和读写随机文件,以及对记录的删除和增加。建立和打开文件:openfilenameforrandomasnum写文件 :Put#文件号,记录号,记录名称读文件 :Get#文件号,记录号,记录名称PublicSubopen1()Dimopen1AsStringDimiAsIntegerOnErrorGoToopenerrorForm2.dlogopen.InitDir="d:\我的文档\form\"Form2.dlogopen.Filter="allfiles(*.*)|*.*|datafiles(*.dat)|*.dat"Form2.dlogopen.FilterIndex=2Form2.dlogopen.ShowOpenopen1=Form2.dlogopen.FileNameIfopen1=""ThenGoToopenerrorElseOpenopen1ForRandomAs#1Get#1,1,mydate1Get#1,9,mytime1Fori=1To650Get#1,Temp(i)NextiGet#1,,tempmaxClose#1EndIfExitSubopenerror:MsgBox"未选数据文件!",vbExclamation,"读盘错误"ExitSubEndSub系统调试VisualBasic6.0编程环境提供了许多运行和调试应用程序的工具,如启动工具如,设置断点单步执行等,程序的可视化设计和代码编写完成后,可以选用不同的执行方式,以对它进行执行,调试。VisualBasic本身不能诊断或者更改程序中的错误,但能够提供一些调试工具来帮助用户分析程序的运行是如何进行的,分析如何从一个过程转到另一个过程,分析变量和对象属性在程序运行过程是如何改变的。有了这些工具的帮助,用户在调试程序时就可以深入观察程序的执行过程,以了解发生了什么事或错误,是如何发生的。VisualBasic的调试支持包括断点,中断表达式,监视表达,显示变量和属性的值。这些调试功能可以帮助用户处理逻辑错误,其调试工具可以从“Debug菜单上调用,也可以从调试工具栏中选择。在进行上位机软件调试中,本设计还用到了串口调试助手。它可以在一台机器上通过PC机的两个串口,互相发送信息。在用PC机上两个串口进行连接时,需要将两个九针串口的2,3针互换,把5针相连接,如图4.1:图4.1串口连接图在进行VB程序调试时也可以用串口助手来模拟单片机发送数据,下图是用串口助手模拟单片机发送的数据。9F010A0308056F串口助手的串口选择coml,波特率选择9600,校验位选择N,数据位选择8,停止位选择1。如图4.2:SConMssistantV2?2ForWIN9X/NT/200083A1FF5ooo_uo_y6oOu3A1Fo_u_u_u_ySConMssistantV2?2ForWIN9X/NT/200083A1FF5ooo_uo_y6oOu3A1Fo_u_u_u_y3A1FF583o_uo_y6_uooA1FF583Ao_u_y6oooo1FF583A1o96ooo_uoFF583A1F_y6n-oooo_yF583A1FF_uon-o_u_y683A1FF5o_uooo_y6o80JA1FF58oooo_y6_uo3A1FF5Ou3oon-_y&oooA1FF580UAoo_y6oooo1FF583A1o_y6oooooFF583A1F_y6o_uo_uo-yF5Ou3A1FF_u_u_u_u_u_y6583A1FF5o_uo_uo_y6o83A1FF58ooo_u_y&oo3LA1FF583ooo96ooo6F05080A019F6F050803-0A019F6F0508030A01FF583A1FF_y6oo_u0096F583A1FF56oon-ooy6u030805OA030801OA039F01OA6F9F01056F9F08056F030805OA03089F010A6F9F01056F9F08056F030805OA030801UA039F01OA6F9F01眞空接收医|停生显示厅自动涪空(7十六进制显示眼再显委数呃更改I 选择发送文啊发送文件计数洁零c'Acomdata选择发送文啊发送文件计数洁零手动发送就十六进制发送手动发送r自动发送凋期改变后重选〕目动发送周期:1909毫秒-ta|STATUS:COMIOFENED>9600,N,8,1图4.2串口助手调试图结论历时三个多月的毕业设计即将结束。在这期间我查阅了大量的与其相关的资料,这不但开阔了我的视野,又丰富了我的知识,同时也使我的自学能力大大提高。除此之外我也学会了怎样调试程序,怎么样检查自己设计中存在的错误。通过三个多月的设计以及大量的实验,本设计基本上达到了先前提出的设计技术指标,可以与硬件可靠通讯得到温度数据,软件运行稳定,温度数据统计结果和温度曲线符合真实情况。并且利用标准电阻箱进行了测试。但是由于时间关系和本人的能力与精力有限,如果要把本课题的整个系统做得十分完整,本人认为本课题还有以下几项工作要进行:关于上位微机软件的编制,由于在本系统中己经将通信接口作为一个选件来考虑,从系统的完整性来看,应将上位管理微机的软件编制工作纳入其中,当然,目前国内外也有不少只告诉通信的标准以及通信的数据帧格式。而上位管理微机的软件有使用测量仪器的末端用户自己解决。从整个测温系统来着,总体功能是较完善的,但唯一不足的是由于条件有限,没有实现打印报表功能。致谢通过几个月的学习和实践,终于完成了本次设计,在此期间,通过对上位机软件的了解,VB6.0及其控件的学习,我进一步掌握了电子专业的技术知识,并且使所学到的知识得到了理论与实践的相结合,为以后的学习和工作打下了良好的基础。再本次设计过程中,我衷心感谢我的导师陈亮老师,陈老师在毕业设计期间给予我悉心的指导和帮助,引导我从毕业设计初期对课题的毫无所知到逐步的深入学习、不断研究,热心的帮助和鼓励我解决设计上遇到的一些难题,培养了我正确的学习方法和研究问题的思路,以及发现问题解决问题的能力,为今后的工作、学习打下了坚实而牢固的基础。在此对陈老师表示衷心地感谢,同时,感谢信息科学与工程分院的各位领导和老师的关心和支持,以及多年来对我孜孜不倦的培养和教诲,引导我学会了丰富的科学文化知识和解决问题的能力,使得我四年的大学生活充实和快乐,能在四年后顺利的完成学业。参考文献黄淼云,张学忠,王福成著.《VisualBasic控件应用编程实例教程》•第1版•北京希望电子出版社,2002李广弟,朱月秀,王秀山著.《单片机基础》.第2版•北京航空航天大学出版社,2001赵新民著.《智能仪器设计基础基础》.第1版.哈尔滨工业大学大学出版社,1999李建华,郭明著.《RS-232和调制解调器高级通信编程》•第1版•人民邮电出版社,2001附录附录A部分程序清单DimI,jAsIntegerPrivateSubPicture1_Paint()DimIAsIntegerPicture1.Scale(0,110)-(500,0)ForI=10To100Step10Picture1.Line(0,I)-(10,I)Picture1.CurrentY=Picture1.CurrentY+3Picture1.PrintINextIPicture1.CurrentX=0:Picture1.CurrentY=Text1.TextEndSubPrivateSubPicture2_Paint()DimIAsIntegerPicture2.Scale(0,110)-(500,0)ForI=10To100Step10Picture2.Line(0,I)-(10,I)Picture2.CurrentY=Picture2.CurrentY+3Picture2.PrintINextIPicture2.CurrentX=0:Picture2.CurrentY=Text2.TextEndSubPrivateSubPicture3_Paint()DimIAsIntegerPicture3.Scale(0,110)-(500,0)ForI=10To100Step10Picture3.Line(0,I)-(10,I)Picture3.CurrentY=Picture3.CurrentY+3Picture3.PrintINextIPicture3.CurrentX=0:Picture3.CurrentY=Text3.TextEndSubPrivateSubPicture4_Paint()DimIAsIntegerPicture4.Scale(0,110)-(500,0)ForI=10To100Step10Picture4.Line(0,I)-(10,I)Picture4.CurrentY=Picture4.CurrentY+3Picture4.PrintINextIPicture4.CurrentX=0:Picture4.CurrentY=Text4.TextEndSubPrivateSubPicture5_Paint()DimIAsIntegerPicture5.Scale(0,110)-(500,0)ForI=10To100Step10Picture5.Line(0,I)-(10,I)Picture5.CurrentY=Picture5.CurrentY+3Picture5.PrintINextIPicture5.CurrentX=0:Picture5.CurrentY=Text5.TextEndSubPrivateSubPicture6_Paint()DimIAsIntegerPicture6.Scale(0,110)-(500,0)ForI=10To100Step10Picture6.Line(0,I)-(10,I)Picture6.CurrentY=Picture6.CurrentY+3Picture6.PrintINextIPicture6.CurrentX=0:Picture6.CurrentY=Text6.TextEndSubPrivateSubPicture7_Paint()DimIAsIntegerPicture7.Scale(0,110)-(500,0)ForI=10To100Step10Picture7.Line(0,I)-(10,I)Picture7.CurrentY=Picture7.CurrentY+3Picture7.PrintINextIPicture7.CurrentX=0:Picture7.CurrentY=Text7.TextEndSubPrivateSubPicture8_Paint()DimIAsIntegerPicture8.Scale(0,110)-(500,0)ForI=10To100Step10Picture8.Line(0,I)-(10,I)Picture8.CurrentY=Picture8.CurrentY+3Picture8.PrintINextIPicture8.CurrentX=0:Picture8.CurrentY=Text8.TextEndSubPrivateSubTimer1_Timer()j=j+5Picture1.Line-(j,Text1.Text)Picture2.Line-(j,Text2.Text)Picture3.Line-(j,Text3.Text)Picture4.Line-(j,Text4.Text)Picture5.Line-(j,Text5.Text)Picture6.Line-(j,Text6.Text)Picture7.Line-(j,Text7.Text)Picture8.Line-(j,Text8.Text)Ifj>=500Thenj=0Picture1.ClsPicture2.ClsPicture3.ClsPicture4.ClsPicture5.ClsPicture6.ClsPicture7.ClsPicture8.ClsForI=10To100Step10Picture1.Line(0,I)-(10,I)Picture1.CurrentY=Picture1.CurrentY+3Picture1.PrintI

NextIPicture1.CurrentX=0:Picture1.CurrentY=Text1.TextPicture1.CurrentX=0:Picture1.CurrentY=Text2.TextPicture1.CurrentX=0:Picture1.CurrentY=Text3.TextPicture1.CurrentX=0:Picture1.CurrentY=Text4.TextPicture1.CurrentX=0:Picture1.CurrentY=Text5.TextPicture1.CurrentX=0:Picture1.CurrentY=Text6.TextPicture1.CurrentX=0:Picture1.CurrentY=Text7.TextPicture1.CurrentX=0:Picture1.CurrentY=Text8.TextEndIfEndSubPrivateSubForm_Load()strset="9600,N,8,1"m_i_RecvCount=0m_b_SendData=FalseMSCommTemp.CommPort=Int(ComTemp.Text)MSCommTemp.Settings=strsetMSCommTemp.InputMode=comInputModeBinaryMSCommTemp.InputLen=0MSCommTemp.RThreshold=1MSCommTemp.PortOpen=TrueLabInfo.Caption="系统信息:串口打开成功!"MSCommTemp.InBufferCount=0EndSubTrueEndSubTruePrivateSubMSCommTemp_OnComm()Dimbuffer()AsBytePrivateSubMSCommTemp_OnComm()Dimbuffer()AsByteDimiAsIntegerDimjAsIntegerDimnegativeAsByteDimtempAsByteDimdisplay(0To9)AsSingleDimcountAsIntegerDimchecksumAsByteDimm_i_sumAsIntegerDimm_Start_TimeAsLongDimiLoopAsIntegerchecksum=0OnErrorResumeNextSelectCaseMSCommTemp.CommEventCasecomEvReceivem_Start_Time=GetTickCount()While((GetTickCount()-m_Start_Time)<30)DoEventsWendbuffer=MSCommTemp.InputIf(UBound(buffer)=2)ThenIf(buffer(0)=&HCDAndbuffer(1)=&HCD)ThenCallMsgBox("下载成功!",vblnformation,"操作提示")EndIfEndIfIf(UBound(buffer)<7)ThenExitSubForiLoop=0To7Arr(iLoop)=buffer(iLoop)NextiLoopIfArr(0)=&H9FThenm_i_RecvCount=0LabInfo.Caption="系统信息:正在接收数据..."EndIfIfArr(7)=&H6FThenm_i_sum=0Fori=1To7m_i_sum=m_i_sum+Arr(i)Nextichecksum=m_i_sumAnd255checksum=m_i_sumAnd127IfArr(1)>8ThenExitSubIf(Arr(2)=&HB)Thendisplay(Arr(1))=Arr(3)*10+Arr(4)+Arr(5)*0.1display(Arr(1))=display(Arr(1))*(-1)Elsedisplay(Arr(1))=Arr(3)*10+Arr(4)+Arr(5)*0.1EndioIfLabInfo.Captn="系统信息:接收数据成功!"Arr(20)=0EndIfm_i_RecvCount=m_i_RecvCount+1If(m_i_RecvCount>21)Thenm_i_RecvCount=21EndSelectEndSub附录B英文原文Develop

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论