手把手教你从零开始用labview编写智能车上位机程序(1)labview,智能,手把手,程序,编写软件安装和基础知识准备其几天把我的上位机软件发布在里这里,发现大家对这个还是很感兴趣的,因为上位机软件对于做摄像头的来说是必备的工具(也许有人说他不需要,那我很佩服他的判断能力和程序调试能力,他肯定是天才级别的人物,希望我能拜他为师,呵呵!)。不过这种东西还是自己编写的用起来顺手。想显示什么就显示什么。选择labview编写是因为labview容易上手,我从完全不会到编写到完成那个上位机软件也就用了一个星期而已。如果学VC,MFC的话,你估计对用上1个月也许还做不出什么。但是labview功能也很强大,可是我们用到的并不多,网上教程多,可是我们能用上的也并不多,学起来麻烦。我下面就专门针对这个labview的智能车上位机软件的编写来讲解吧!首先发布一个关于labview的广告,大家了解一下labview主要是干什么的。LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。与C和BASIC一样,LabVIEW也是通用的编程系统,有一个完成任何编程任务的庞大函数库。LabVIEW的函数库包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储,等等。LabVIEW也有传统的程序调试工具,如设置断点、以动画方式显示数据及其子程序(子VI)的结果、单步执行等等,便于程序的调试。虚拟仪器(virtualinstrumention)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向。粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。另一种方式是将仪器装入计算机。以通用的计算机硬件及操作系统为依托,实现各种仪器功能。虚拟仪器主要是指这种方式。下面的框图反映了常见的虚拟仪器方案。虚拟仪器的主要特点有:尽可能采用了通用的硬件,各种仪器的差异主要是软件。可充分发挥计算机的能力,有强大的数据处理功能,可以创造出功能更强的仪器。用户可以根据自己的需要定义和制造各种仪器。虚拟仪器实际上是一个按照仪器需求组织的数据采集系统。虚拟仪器的研究中涉及的基础理论主要有计算机数据采集和数字信号处理。目前在这一领域内,使用较为广泛的计算机语言是美国NI公司的LabVIEW。虚拟仪器的起源可以追溯到20世纪70年代,那时计算机测控系统在国防、航天等领域已经有了相当的发展。PC机出现以后,仪器级的计算机化成为可能,甚至在Microsoft公司的Windows诞生之前,NI公司已经在Macintosh计算机上推出了LabVIEW2.0以前的版本。对虚拟仪器和LabVIEW长期、系统、有效的研究开发使得该公司成为业界公认的权威。普通的PC有一些不可避免的弱点。用它构建的虚拟仪器或计算机测试系统性能不可能太高。目前作为计算机化仪器的一个重要发展方向是制定了VXI标准,这是一种插卡式的仪器。每一种仪器是一个插卡,为了保证仪器的性能,又采用了较多的硬件,但这些卡式仪器本身都没有面板,其面板仍然用虚拟的方式在计算机屏幕上出现。这些卡插入标准的VXI机箱,再与计算机相连,就组成了一个测试系统。VXI仪器价格昂贵,目前又推出了一种较为便宜的PXI标准仪器。虚拟仪器研究的另一个问题是各种标准仪器的互连及与计算机的连接。目前使用较多的是IEEE488或GPIB协议。未来的仪器也应当是网络化的。LabVIEW(LaboratoryVirtualinstrumentEngineering)是一种图形化的编程语言,它广泛地被工业界、学术界和研究实验室所接受,视为一个标准的数据采集和仪器控制软件。LabVIEW集成了与满足GPIB、VXI、RS-232和RS-485协议的硬件及数据采集卡通讯的全部功能。它还内置了便于应用TCP/IP、ActiveX等软件标准的库函数。这是一个功能强大且灵活的软件。利用它可以方便地建立自己的虚拟仪器,其图形化的界面使得编程及使用过程都生动有趣。图形化的程序语言,又称为“G”语言。使用这种语言编程时,基本上不写程序代码,取而代之的是流程图或框图。它尽可能利用了技术人员、科学家、工程师所熟悉的术语、图标和概念,因此,LabVIEW是一个面向最终用户的工具。它可以增强你构建自己的科学和工程系统的能力,提供了实现仪器编程和数据采集系统的便捷途径。使用它进行原理研究、设计、测试并实现仪器系统时,可以大大提高工作效率。利用LabVIEW,可产生独立运行的可执行文件,它是一个真正的32位编译器。像许多重要的软件一样,LabVIEW提供了Windows、UNIX、Linux、Macintosh的多种版本。手把手教你从零开始用labview编写智能车上位机程序(3)labview,智能,手把手,程序,编写程序结构这一篇,我将给大家讲解一下labview中程序执行的顺序。最终目标是大家能够知道第二篇中那个程序里的框框是干什么的,为了简单,所以不会全讲,剩余的到以后需要使用的时候再说。在labview中,默认情况下,程序的执行顺序是沿着数据流动的方向运行的。我们把第二篇中的那个串口接收程序简化一下就成了上面的这个样子。首先是配置串口,配置好的串口的数据流到缓冲区,我们设置好一个4096字节大小的缓冲区。于是得到了来自于串口的4096个字节的串口数据,然后我们再用“串口读取”从中取出这4096字节个数据,然后把这4096字节是数据输出到“接收数据”的那个框里,于是我们就可以看到从串口收到的字符了。但这样的话,你会发现程序只能运行一次,然后就停止。我们如何才能让程序不停的循环这个步骤,当我们想让他停的时候他才停呢?我们可以在函数面板的空白处点击右键,如下图所示找到while结构构然后就会出现一个可以拖动的方框,拖动他把你想不停执行的部分包含在这个框里面然后就会变成这样但是还没完,在这个框里面的右下角有一个红色的点,在他的左面有一个可以连接的“布尔”型连线,右击这个线,创建-》常量于是他的上面就连接了一个“F”的常量,表明这个循环不会停止。也就是说这个while大方框里面的程序会不停的循环运行。现在我们的串口程序每从串口接收到4096个字节的数据就把它显示在那个“接收数据”方框里,不断循环。但是我们现在还面临一个问题,那就是。每当接收到4096个字符串后,把他们显示在程序中时,以前的数据就全部没有了,我们如何才能让以前的数据都保存在里面呢?在while循环里还有一种结构,叫移位寄存器,右键点击while循环的那个框,选择“添加移位寄存器”。如下图在while方框上出现了两个三角形的符号,这就是移位寄存器。移位寄存器的意思大概是把一次循环中计算的数据放在右边的那个三角形里,在下一次循环时,从左边的那个三角形里取出来进行运算,其实就跟C语言里的变量类似,通过这种方式我们可以把上一次循环中的数据用在下一次循环中(我讲的不是很准确,应该就是这么用吧。其实还有其他方法,也可以使用局部变量实现这个功能)。再介绍一个函数--“连接字符串”,位置如下下面我们就把它连接成下面这个样子这样就可以把从串口接收到的数据完整的显示出来了,前面板如下至于我给的那个程序里面的if结构的用法,就更简单了,使用“ctrl+H”看看帮助就知道了,其实这个功能要不要无所谓。为了使我们这个程序尽可能简单,暂时我就不介绍这个了。