当前位置:文档之家› 说把手教你编写LabView上位机程序

说把手教你编写LabView上位机程序

说把手教你编写LabView上位机程序
说把手教你编写LabView上位机程序

手把手教你从零开始用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)的结果、单步执行等等,便于程序的调试。

虚拟仪器(virtual instrumention)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向。粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。另一种方式是将仪器装入计算机。以通用的计算机硬件及操作系统为依托,实现各种仪器功能。虚拟仪器主要是指这种方式。下面的框图反映了常见的虚拟仪器方案。

虚拟仪器的主要特点有:

尽可能采用了通用的硬件,各种仪器的差异主要是软件。

可充分发挥计算机的能力,有强大的数据处理功能,可以创造出功能更强的仪器。

用户可以根据自己的需要定义和制造各种仪器。

虚拟仪器实际上是一个按照仪器需求组织的数据采集系统。虚拟仪器的研究中涉及的基础理论主要有计算机数据采集和数字信号处理。目前在这一领域内,使用较为广泛的计算机语言是美国NI公司的LabVIEW。

虚拟仪器的起源可以追溯到20世纪70年代,那时计算机测控系统在国防、航天等领域已经有了相当的发展。PC机出现以后,仪

器级的计算机化成为可能,甚至在Microsoft公司的Windows诞生之前,NI公司已经在Macintosh计算机上推出了LabVIEW2.0以前的版本。对虚拟仪器和LabVIEW长期、系统、有效的研究开发使得该公司成为业界公认的权威。

普通的PC有一些不可避免的弱点。用它构建的虚拟仪器或计算机测试系统性能不可能太高。目前作为计算机化仪器的一个重要发展方向是制定了VXI标准,这是一种插卡式的仪器。每一种仪器是一个插卡,为了保证仪器的性能,又采用了较多的硬件,但这些卡式仪器本身都没有面板,其面板仍然用虚拟的方式在计算机屏幕上出现。这些卡插入标准的VXI机箱,再与计算机相连,就组成了一个测试系统。VXI仪器价格昂贵,目前又推出了一种较为便宜的PXI标准仪器。

虚拟仪器研究的另一个问题是各种标准仪器的互连及与计算机的连接。目前使用较多的是IEEE 488或GPIB协议。未来的仪器也

应当是网络化的。

LabVIEW(Laboratory Virtual instrument Engineering)是一种图形化的编程语言,它广泛地被工业界、学术界和研究实验室所接受,视为一个标准的数据采集和仪器控制软件。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”看看帮助就知道了,其实这个功能要不要无所谓。为了使我们这个程序尽可能简单,

暂时我就不介绍这个了。

labview控制程序流程——labview事件结构

labview控制程序流程——labview事件结构 1 事件结构及它的图形化表示法事件被用来通知用户有异步活动发生。图 形化语言的事件响应包括:用户界面事件、外部I/O 事件和程序其它部分的事件。对事件的处理程序也被称为:事件驱动程序。事件驱动程序可以分为若干 个分支,每个分支处理不同的事件响应。所以对事件的响应结果也可以控制程 序的流程。事件驱动机制来自于可视化的操系统,可视化操作系统对用户事件 提供了简洁、有效的响应方式,最常见的事件来自于鼠标和键盘。虚拟仪器借 助于操作系统的事件处理机制实现了图形化语言的事件响应能力。在没有引入 事件结构之前,LabVIEW 是借助于轮询的方式来查询用户操作,由于轮询的方 式会占用一定的CPU 资源,甚至可能遗漏事件,所以这种处理方式并非理想。事件结构的出现避免了对CPU 资源的占用,同时也避免了事件的遗漏。事件 结构在函数选板》编程》结构子选板中可以找到,并可以将其直接拖拽到程序 框图中,图形化表示的事件结构,参见下图。图 1 图形化的事件结构与Case 结构和循环结构类似,事件结构也包含了一个主框架,这个框架内将用来放置 事件处理的事件驱动程序代码。如果事件处理任务众多,会有众多事件分支存在,在结构上类似Case 的多帧结构(选择器标签)。当在程序框图上拖放一个 事件结构时,我们只能看到上图所示的一帧已经预先注册的超时事件(Timeout),超时事件分支。它具有定时延迟的基本功能(不包括While 循环),参见下图。图 2 具有定时延迟的基本功能当然也可以采用另一种表示方法,参 见下图。图 3 利用事件结构内部节点获得中止时间通过这个例子也好理解内部 节点中时间的含义(是事件响应的停止时间)。超时事件超时事件是一种特殊 的事件,当然也可以看成是默认的事件分支。如果存在其它事件源时,超时事 件完全可以被忽略或取消。看下面一个例子。图 4 仅有的两个事件之一超时事

labview程序结构的使用 (1)

百度文库- 让每个人平等地提升自我! 西安文理学院 机械与材料工程学院实验报告课程名称:虚拟仪器 实验项目:程序结构的使用(一)专业:测控技术与仪器 班级:2012级02班 姓名:罗蒙 学号:0703110217

一、程序设计思路 本次实验通过四个程序设计,来完成labview的熟悉以及子基本程序结构的创建和使用方法 1.题目要求: 认识和熟悉while循环:创建一个while循环,每隔一秒产生一个随机数,并用波形图表显示随机数历史值 设计思路: 创建while循环,随机数产生控件,波形图表,连线。 2.题目要求 认识和熟悉 For循环以及移位寄存器:创建一个For循环,产生100个10-100随机数,将数据在博兴图中显示,并求出最小值,最大值,平均值。 设计思路: 创建For循环,设定循环次数,产生随机数,使用移位寄存器存储生成数据,并对其进行比较,输出。 3.题目要求: 认识和熟悉条件结构:创建一个条件vi,要求用户输入口令,口令正确时,显示密码匹配,否则程序立即停止。 设计思路: 创建条件结构,真分支下密码匹配,显示字符串“密码匹配”,假分支下,添加程序跳出指令,程序停止 4.题目要求 创建一个虚拟温度计VI,用0~100的随机数模拟采集实际温度。要求允许用户控制温度采集的开始停止;温度控件显示模式(摄氏温度或华氏温度)有摇杆控制,用户可设置温度报警上限,如果超过报警上限,则点亮报警灯(红色)设计思路: 使用多种语言结构,实现vi的创建,实现虚拟温度计的设计。

二、前面板设计 图1-1-1 图1-2-1 图1-3-1 图1-4-1 三、程序框图设计 图1—1—2 图1—2—2

清华版labview教程

第二章程序结构 2.1循环结构 2.1.1While 循环 While 循环可以反复执行循环体的程序,直至到达某个边界 条件。它类似于普通编程语言中的 Do 循环和 Repeat-Until 循 环。While 循环的框图是一个大小可变的方框,用于执行框中的 程序,直到条件端子接收到的布尔值为 FALSE。 ●该循环有如下特点: ●计数从0开始(i=0)。 ●先执行循环体,而后i+1,如果循环只执行一次,那么 循环输出值i=0。 ●循环至少要运行一次。 条件端子 循环变量 图2-1While 循环示意图 练习2-1使用While循环和图表 目的:用 While 循环和图表获得数据,并实时显示。 创建一个可以产生并在图表中显示随机数的VI。前面板有 一个控制旋钮可在0到10秒之间调节循环时间,还有一个开关 可以中止VI的运行。学习怎样改变开关的动作属性,以便不用 每次运行VI时都要打开开关。操作步骤如下: 前面板 图2-2练习2-1的前面板 1.选择FileoNew,打开一个新的前面板。 2.选择ControlsoBoolean,在前面板中放置一个开关。

设置开关的标签为控制开关。 3.使用标签工具创建 ON 和 OFF 的标签,放置于开关旁。 4.选中ControlsoGraph,在前面板中放置一个波形图(是chart,而不是graph)。设置它的标签为随机信号。这个图表用于实时显示随机数。 5.把图表的纵坐标改为0.0 到 1.0。方法是用标签工具把最大值从10.0改为1.0。 6.选择ControlsoNumeric,在前面板中放置一个旋钮。设置旋钮的标签为循环延时。这个旋钮用于控制While 循环的循环时间。 流程图 7.开流程图,按照下图创建流程图。 图2-2练习2-1的流程图 a.从 FunctionsoStructures 中选择 While 循环,把它放置在流程图中。将其拖至适当大小,将相关对象移到循环圈内。 b.从Functionso Numeri c中选择随机数(0-1)功能函数放到循环内。 c.在循环中设置Wait Until Next ms Multiple函数(FunctionsoTime & Dialog),该函数的时间单位是毫秒,按目前面板旋钮的标度,可将每次执行时间延迟0到10毫秒。 d.照上面所示的流程图连线,把随机数功能函数和随机信号图表输入端子连接起来,并把启动开关和While 循环的条件端子连接。 8.返回前面板,调用操作工具后单击垂直开关将它打开。 9.把该 VI 保存为 LabVIEW\Activity目录中的Random Signal.vi。 10.执行该 VI。While循环的执行次数是不确定的,只要设置的条件为真,循环程序就会持续运行。在这个例子中,只要开关打开(TRUE),框图程序就会一直产生随机数,并将其在图表中显示。 11.单击垂直开关,中止该VI。关闭开关这个动作会给循环条件端子发送一个FALSE值,从而中止循环。 12.用鼠标右键单击图表,选择Data

LabVIEW程序实例

1、Build a VI that generate a random number between zero and ten,and then divides it by an input number and diaplays the result on the front panel.If the input number is zero,the VI lights an LED to flag a “divide by zero”error 2、3-1,P43 3、Try create a VI to compute n! 4、求500个随机数中的最大值和最小值。 5、3-3,P44 6、3-4,P46 7、3-5,P49 If implement this equation using regular G arithmetic functions,the block diagram looks like the one in the following illustration.Please imolement the same equation using a Formula Node,and add event to control when the VI executes.

8、设计一个简单信号源,能选择正弦波、三角波和方波并用Waveform Graphe显示。 9、4-1,P68 10、4-5,P72 11、(1)显示一个二维数组的行数和列数(2)查找一个二维数组中最大值,以及最大值在数组中的位置。

12、5-2,P89 13、6-1,P100 14、6-3,P103 15、7-4,P120 16、7-5,P121 17、双边傅里叶

LabVIEW程序设计步骤

LabVIEW程序设计步骤 下面通过一个设计实例来详细介绍虚拟仪器软件LabVIEW的程序设计步骤。 设计目标:假设有一台仪器,需要调整其输入电压,当调整电压超过某一设定电压值时,需通过指示灯颜色变化发出警告。 1 建立新VI 启动LabVIEW程序,单击VI按钮,建立一个新VI程序。 这时将同时打开LabVIEW的前面板和后面板(框图程序面板)。在前面板中显示控件选板,在后面板中显示函数选板。在两个面板中都显示工具选板。 如果选板没有被显示出来,可以通过菜单查看(View)/工具选板(Tools Palette)来显示工具选板,通过查看(View)/控件选板(Controls Palette)显示控件选板,通过查看(View)/函数选板(Functions Palette)显示函数选板。 也可以在前面板的空白处,单击鼠标右键,以弹出控件选板。 ) 2 前面板设计 输入控制和输出显示可以从控件选板的各个子选板中选取。 本例中,程序前面板中应有1个调压旋钮,1个仪表,1个指示灯,1个关闭按钮共4个控件。 1)往前面板添加1个旋钮控件:控件(Controls)→新式(Modern)→ 数值(Numeric)→旋钮(Knob),如图2-14所示,标签改为“调压旋钮”; 2)往前面板添加1个仪表控件:控件(Controls)→新式(Modern)→数值(Numeric)→仪表(Meter),如图2-14所示,标签改为“电压表”。 3)往前面板添加1个指示灯控件:控件(Controls)→新式(Modern)→布尔(Boolean)→圆形指示灯(Round LED),如图2-15所示,将标签改为“上限灯”。 … 图2-15 添加指示灯、按钮控件…

labview程序结构的使用

西安文理学院 机械与材料工程学院实验报告课程名称:虚拟仪器 实验项目:程序结构的使用(一)专业:测控技术与仪器 班级:2012级02班 姓名:罗蒙 学号:0703110217

一、程序设计思路 本次实验通过四个程序设计,来完成labview的熟悉以及子基本程序结构的创建和使用方法 1.题目要求: 认识和熟悉while循环:创建一个while循环,每隔一秒产生一个随机数,并用波形图表显示随机数历史值 设计思路: 创建while循环,随机数产生控件,波形图表,连线。 2.题目要求 认识和熟悉 For循环以及移位寄存器:创建一个For循环,产生100个10-100随机数,将数据在博兴图中显示,并求出最小值,最大值,平均值。 设计思路: 创建For循环,设定循环次数,产生随机数,使用移位寄存器存储生成数据,并对其进行比较,输出。 3.题目要求: 认识和熟悉条件结构:创建一个条件vi,要求用户输入口令,口令正确时,显示密码匹配,否则程序立即停止。 设计思路: 创建条件结构,真分支下密码匹配,显示字符串“密码匹配”,假分支下,添加程序跳出指令,程序停止 4.题目要求 创建一个虚拟温度计VI,用0~100的随机数模拟采集实际温度。要求允许用户控制温度采集的开始停止;温度控件显示模式(摄氏温度或华氏温度)有摇杆控制,用户可设置温度报警上限,如果超过报警上限,则点亮报警灯(红色)设计思路: 使用多种语言结构,实现vi的创建,实现虚拟温度计的设计。

二、前面板设计 图1-1-1 图1-2-1 图1-3-1 图1-4-1 三、程序框图设计 图1—1—2 图1—2—2

LABVIEW中的条件结构

LABVIEW中的条件结构 选择结构相当于文本语言中的条件语句。LabVIEW 8 中新增加的Diagram Disable Structure,Conditional Disabled Structure 类似 C 语言中的条件宏定义语句。 一. 程序框图禁用结构(Diagram Disable Structure)在调试程序时常常会用到程序框图禁用结构。程序框图禁用结构中只有Enabled 的一页会在运行时执行,而Disabled 页是被禁用、即不会执行的;并且在运行时,Disable 页面里 的SubVI 不会被调入内存。所以,被禁用的页面如果有语法错误也不会影响 整个程序的运行。这是一般选择结构(Case Structure)无法做到的。图1、2:使用程序框图禁构例如图1、2 中的示例,如果我们在运行程序的时候暂时不 希望将test 写入到文件里,但又觉得有可能以后会用到。此时,就可以使用程 序框图禁用结构把不需要得程序禁用掉。需要注意的是程序框图禁用结构可以 有多个被禁用的框架,但必须有且只能有一个被使用的框架。在被使用的框架 中,一定要实现正确的逻辑,比如上图的例子中,在被使用的框架中一定要有 连线把前后的文件句柄和错误处理联接好。二. 条件禁用结构(Conditional Disabled Structure)条件禁用结构则根据用户设定的符号(symbol)的值来决定执行哪一页面上的程序。其他方面与程序框图例如图1、2 中的示例,如果我 们在运行程序的时候暂时不希望将test 写入到文件里,但又觉得有可能以后会 用到。此时,就可以使用程序框图禁用结构把不需要得程序禁用掉。需要注意 的是程序框图禁用结构可以有多个被禁用的框架,但必须有且只能有一个被使 用的框架。在被使用的框架中,一定要实现正确的逻辑,比如上图的例子中, 在被使用的框架中一定要有连线把前后的文件句柄和错误处理联接好。二. 条 件禁用结构(Conditional Disabled Structure)条件禁用结构则根据用户设定的

LabVIEW程序设计模式(四)—状态机和事件结构的结合

LabVIEW程序设计模式(四)—状态机和事件结构的结合 LabVIEW程序设计2009-05-04 14:25:19 阅读497 评论0 字号:大中小订阅 上两节分别解决了基本状态机的第(1~5)个问题,但是是否具备一种模式能够综合队列型状态机模式和用户界面事件型模式的优点呢?这样可以同时避免基本状态机的第(1~5)个问题。答案是肯定的,本节将介绍如何将状态机与事件结构结合起来形成一种新的、稳定的模式。 状态机模式的基本构成元素是while循环和case结构,而事件结构模式的基本构成元素是while循环和event结构,因此新的模式应该由while循环、case 结构和event结构组成。而while循环的目的是为了保证程序的持续运行,因此必须在最外层,这样就只剩下了图20所示的两种组合方式。 在第一种方式中,每次循环的运行需要经过一个事件结构才能够实现case 中各个分支的运行,那么到底需要多少个分支呢?一般而言不同的事件都会有不同的事件处理函数(这些函数可以在case结构中共用),显示这是无法满足要求的,它从本质上而言仍然是一种事件结构。 在第二种方式中,程序的主体是一个状态机结构,不同的是在某一个状态分子中有一个事件结构。我们可以回忆状态机模式中的“空闲Idle”状态,这正是长时间占用CPU资源的源头,如果在Idle中加入一个事件结构后就有效地规避了这个问题。 图20 三种结构的组合方式 因此图20中的第二种结构综合了状态机和事件结构的优点,有效地克服了基本状态机的第(1~5)个问题。此外,在【应用2_自动贩卖机】例程中,按钮1USD、2USD和5USD的作用是相同的,唯一不同的是它们的代表的币值不同。如果我们希望系统共用“币值相加”这个功能,即当这三个按钮任何一个被按下后都调用同一个函数(该函数的功能是将系统中原来的货币值与新加入的币值相加得到新的值)。这样,需要有一种途径把1USD、2USD和5USD代表的币值作为参数传递给函数。 图21所示为带参数的状态机结构,在消息队列的状态机模式中,加入了一个变体型的变量作为状态传递的参数。实际上,可以把红色的部分做成子vi,不仅节省了背面板空间而且能够进行错误处理。程序中应该设置一个专门的错误处

LabVIEW程序设计步骤

LabVIEW 程序设计步骤 下面通过一个设计实例来详细介绍虚拟仪器软件LabVIEW 的程序设计步骤。 设计目标:假设有一台仪器,需要调整其输入电压,当调整电压超过某一设定电压值时,需通过指示灯颜色变化发出警告。 1 建立新VI 启动LabVIEW 程序,单击VI 按钮,建立一个新VI 程序。 这时将同时打开LabVIEW 的前面板和后面板(框图程序面板)。在前面板中显示控件选板,在后面板中显示函数选板。在两个面板中都显示工具选板。 如果选板没有被显示出来,可以通过菜单查看(View )/工具选板(Tools Palette )来显示工具选板,通过查看(View )/控件选板(Controls Palette )显示控件选板,通过查看(View )/函数选板(Functions Palette )显示函数选板。 也可以在前面板的空白处,单击鼠标右键,以弹出控件选板。 2 前面板设计 输入控制和输出显示可以从控件选板的各个子选板中选取。 本例中,程序前面板中应有1个调压旋钮,1个仪表,1个指示灯,1个关闭按钮共4个控件。 1)往前面板添加1个旋钮控件:控件(Controls )→ 新式(Modern ) → 数值(Numeric ) → 旋钮(Knob ),如图2-14所示,标签改为“调压旋钮”; 2)往前面板添加1个仪表控件:控件(Controls )→ 新式(Modern ) → 数值(Numeric ) → 仪表(Meter ),如图2-14所示,标签改为“电压表”。 3)往前面板添加1个指示灯控件:控件(Controls )→ 新式(Modern )→ 布尔(Boolean ) → 圆形指示灯(Round LED ),如图2-15所示,将标签改为“上限灯”。 4)往前面板添加1个停止按钮控件:控件(Controls )→ 新式(Modern )→ 布尔(Boolean ) 图2-15 添加指示灯、按钮控件 图2-14 添加旋钮、仪表控件

相关主题
文本预览
相关文档 最新文档