文档库 最新最全的文档下载
当前位置:文档库 › LabVIEW 初学者常见问题及解答

LabVIEW 初学者常见问题及解答

LabVIEW 初学者常见问题及解答
LabVIEW 初学者常见问题及解答

LabVIEW 初学者常见问题及解答

1、Labview如何实现由一个事件引发其他三个事件的顺序发生,且这三次事件间的时间间

隔为50ms?

A:可以引用状态机来设计程序,将触发事件作为状态机的状态控制参数,后面发生的三个

事件依次作为状态机的三个顺序状态,设置状态切换时间间隔为500ms.

2、labview在主程序通过局部变量不能实时看子vi的参数

A:通过局部变量只能得到子vi运行完之后的结果。可以用control reference 方式,在子

vi加一个属性节点引出一个reference。

主程序里把需要显示的控件创建一个reference连到子vi的reference输入端口。另外也可

以用vi server方式实现。

3、如何在一个graph或chart显示多个Y轴刻度,并且使每个通道对应每个刻度?

A:在前面板上,右键点击刻度,然后选择duplicate scales,就会创建一个新的刻度。然

后再点击右键,选择swap sides,就可以让刻度显示在图的左边或右边。然后右键右上角

的plot legend上的曲线plot,选择Y scales然后就可以选择与该曲线相应的Y轴SCALES。

多条曲线对应多条Y轴的刻度时,是同样的方法。

4、如何从labview中打开一个pdf文件?

A:最简单的方法:用system exec.vi实现,在system exec.vi的command line 端口创建

一个常量,输入adobe reader 的路径,再加上文件名等几个参数就可以实现上述要求。举

例如下:如果要拉开位于c盘的1234.pdf文件可以这样写“C:\Program files\Acrobt 7.0

\Acrobat\Acrobat.exe”/t “C:\1234.pdf” “username”其中C:\Program files\Adob

e\Acrobt 7.0\Acrobat\Acrobat.exe是Adobe Reader 的安装路径,/t是命令参数,C:\12

34.pdf则是要打开的文件名,最后的username是用户的名字。

5、采集数据在graph如何显示系统时间,并且随着采集点数时间不断刷新。A:有两种方式,一种是采集波形数据然后输出给graph,在graph上选择显示绝对时间,并

且去掉ignore time stamp选项。第二种是采集数据文件,然后用获取时间的vi获取当前时

间,然后把采集的数据文件和当前vibuild成波形文件再给graph.graph的设置和前种方法

一样。这样就可以显示出时间虽采集点不断刷新的效果。

6、report generation里的standard和HTML究竟是什么意思?

A:STANDARD和HTML是LV本身就有的报表类型,无须安装其他的文本编辑工具就可以打印。

STANDARD是LV内建的一种报表格式,可以打印但不能存盘,也就是说我们的报表没有电子

版。HTML是网页格式的文件,可以用浏览器打开,其实相当于LV帮我们编写HTML代码,这

种格式是不能直接打印的,需要先指定网页路径才能打印出来。还要注意,如果是一段程

序是用了report generation的vi,在打包成exe文件或llb文件时,需要加入两个动态vi:

_excel dynamic vi和_word dynamic vi。如果生成的报表采样了模板需要自支持文件里

添加相应模板。

7、如果要将channel名字,测的是什么信号,采样率是多少这样的数据和采得数据一起存

入文件应该用什么方式比较好?

A:推荐一种以前基本被忽略的文件结构——TDM FILE格式来存,这种文件格式基于二进制

的方式,而在存储过程中可以加入很多的外部信息进去,例如free text;free interger

等等,所以存这样的应用还是挺合适的。

8、vi property 下execution中选项reetrant execution,选用和不选用有什么区别?

A:如果主程序执行同一个子vi,是同时两次或多次执行时,在不选用时,就会依次使用这

个子vi;如果选用,则这个子vi就会并行执行,提高程序运行速度。

9、为什么把LABVIEW程序框图解密以后,就可以一直打开程序框图,如何才能实现每次打

开vi都是加密的?

A:如果在LABVIEW解开程序的框图的密码,关闭以后该程序,不退出labview,这个程序如

果再次被打开会一直可以查看他的框图程序,原因是lv 没有关闭,所以密码会一直存在内

存当中,所以再次打开会依然看到程序框图,如果要实现每次打开都是加密的,

只要在一

次打开后,把labview也关掉,下次再想要查看程序框图就需要输入密码。10、使用vi server技术,如何实现从一个vi打开运行并读取另一个vi中控件的值?

A:

1)调用Open vi reference.vi ,输入子VI的路径到其VI PATH的端口;2)调用Ivoke Node.vi并设为Open FP;

3)调用Ivoke Node.vi并设为Run VI;

4)调用Ivoke Node.vi并设为Get control Value[Variant];对Control Name端口填入

子VI循环的停止按钮控件名称;Get Control Value [Variant]输入端的值通过Variant T

o Data .vi设为控件相对应的控件类型后,输出到前面板,这就可实现取VI控件的值;

5)最后调用Close Reference.vi关闭VI Server。

11、连续采集程序分成配置task状态和采集状态两大部分。在配置状态中得配置出有效的

task。根据需要在适当的时候进入采集状态。在采集状态中使用start task 和read两个

vi并且循环执行。当程序开始后立刻报错。

A:因为采集状态中使用start task和read 两个vi并且循环执行,当采集已经开始后再使

用start task就会重复开始相同的资源,导致资源冲突产生错误。建议start 部分单独作为

一个状态,在循环执行的状态中只使用read.vi。

12、LV7.1在前面板突然找不到Scrollbar了,现在想看或者操作屏幕之外的控件显示件非

常麻烦,怎么能够找到Scrollbar?

A:在File\VI Property\Window Appearance\Customize里有Show scrollbar的选项。

13、LV7.1如何实现将Chart的时间坐标与计算机系统时间一致?

A:Chart属性Format And Precision选Absolute Time,显示方式改System Time Format

和System Data Format。程序框图里Get Data/Time In Seconds获取当前时间,转换为双

精度浮点型后输入到Waveform. Chart的属性节点Xscale. Offset。属性节点Xscale. Form

at设为模式7。

14、LV7.1如何设计时间输出格式为小时:分:秒.毫秒?

A:用Get Data/Time In Seconds用来获得当前时间,另一个是Format Data/Time String

函数,这个函数用来定义输出时间的格式,再time format string端口上输入字符串%H:%

M:%S%.3u,然后time stamp连接Get Data/Time In Seconds的时间输出即可。关于时间格

式的定义可以在help里看到。

15、为什么用子程序调用时pop up前面板,前面板总是自主程序后面?

A:在window appearance里面选择default floating 和modal这三项,将主程序的选项设

在较低的优先级而子程序设得高一点应该可以了。

16、如何读出excel里的数据来作分析?

A:使用Excel Get Data.vi并在参数data type上使用二维字符数组可把Excel 内数据以字

符串的方式读出。

17、如何对Excel文件作数据续存?

A:使用Excel Get Last Row.vi先将Excel内已有数据的最后一行的行数得出,再于该行开

始续存数据。

18、如何将文件保存为Excel格式

A:1) 用ActiveX技术,将LV作为一个ActiveX服务器。可以参考National Instrume

nts\Labview 7.1\examples\apps\freqresp.llb VI库里面的Frequency Response.vi例子

程序。2)使用Report Generation工具包,它屏蔽了底层的ActiveX,使用比较简单,不过

需要购买。3)保存为文本方式,后缀为.xls,这样子也可以用Excel打开,不过不能用E

xcel修改保存,要不然会自动修改为Excel文档,以后也不能用LV对其进行操作。

19、如何在table中既显示小数又显示整数

A:table中显示的是字符串,显示小数还是整数是在转换成字符串而未放入table之前的过

程中完成的,因此可以将整数小数分别转换成字符串后再合并输出到table中即可。

20、如何制作一个边框是透明的string控件

A:选择一个classic simple string控件,使用工具模板的染色工具,在弹出的对话框中

选择右上角“T”;一样的transparent,然后给这个控件染色就可以了。

21、循环采集并对采集的结果判断,前面板放置一个布尔报警灯,只保存报警的数据,并

可回放,怎么实现?

A:存储vi外加一个case结构,并以布尔报警灯作为判断,如果为真值,存储,为false,

不存。回放有两种形式,即:可以把试验数据存储,然后回调。也可以把graph 存为图片。

22、怎样把While loop的循环次数i写入T able的行头ColHdrs[]呢?

A:创建Table的属性节点,属性ColHdrVis=T显示行头,ColHdrs[]连接一个字符串数组,

需要将循环次数i加1,然后通过Number To Fractional String转化为字符类型,精度为

0。添加移位寄存器,赋初值为空字符串数组,build array上端输入接移位寄存器,下端

接数字,右端接ColHdrs[]和移位寄存器另外一端。

23、串口程序打包安装到一台没有LV环境的机器下,串口不可用,为什么?A:LV7.1的版本,在Application Builder中Installer页面选择:Advanced/Serial Port

Support。

24、使用CLF节点调用DLL中的函数,如果原函数中指定的数据类型为结构,那么在CLF配置

过程中该如何指定数据类型?

A:可以选择数据类型(TYPE)为Adapt To Type,然后在输出或输入端口连接一个Cluste

r,这个Cluster的定义和原函数中结构的定义一样。选择Adapt To Type后,连接到端口的

数据类型是什么,与函数接口的数据类型就是什么。

25、在子vi运行过程中,如何将数据实时传递到调用它的主vi中,而不是等待子VI运行结

束后才在主VI中获得子Vi的输出数据?

A:使用带控制参量的属性节点可以实现在子VI中修改主VI属性的目的,由于控件的值(V

alue)也是控件的属性之一,因此可以使用控制参量是新以上要求。在子VI中,使用带有

控制参量的属性节点,将要传递到主VI的数据写入这个属性(Value)中,将控制参量要设

置为Control,并且在子VI的连接器中进行定义;在主VI中,为接收子VIshuju 的控件建立

一个控制参量,将这个控制参量连接到子VI,即可达到在主VI中实时获取子VI数据的要求

26、事件结构中两种事件类型,一个是通知事件(Notify),另一个是过滤事件(Filter

),这两种事件的区别是什么?

A:对于通知事件,程序可以感知事件的发生并且响应该事件,然后再处理在事件结构中定

义的任务;对于过滤事件,程序感知事件发生后首先处理在事件结构中定义的任务,然后

根据时间结构中的设定(Discard?)决定是否响应该事件。举例来说,时间为Panel Clo

se,在事件发生时弹出一个对话框。如果是通知事件,首先响应事件关闭了前面板,因此

没有办法处理“弹出对话框”的任务;如果是过滤事件,首先处理“弹出对话框”的任务

,然后根据事件结构中的Discard的值判断是否关闭前面板,若Discard为T,则不关闭,若

为F,则关闭。

27、LV7.1主程序已经完成,想在主程序运行之前,先执行一个别的界面,当退出该界面的

时候,再显示主界面,如何实现?

A:可以在主程序框图之前,将主程序前面板隐藏,调用子程序,推出子程序后,再显示主

程序前面板。这可以通过VI属性节点来实现,先调用一个属性节点,右键选择Select Cla

ss/VI Server/VI,然后在属性中选择Front Pannel Window/State属性,分为设为Hide和

Standard。Demo程序见项目进程管理中AE-01labview编程技术讨论的“主界面隐藏”。

28、将LV7.1前面板控件(graph)的内容保存成图像文件,在LV中如何编程实现?

A:右键控件创建Invoke Node,选择方法为“Get Panel Image”;另外,调用Graphics

&Sound/Graphics Formats下面的VI,将第二步获得的图像写入相应格式文件中。

29、在LV程序中使用matlab,生成exe文件以后,发现文件可以运行但是无

法弹出运行界面

A:在lv中如果使用了MATLAB的话,生成EXE文件的时候需要加一个名为马特script.dll的

文件作为支持文件,此外在目标PC上必须安装MATLAB软件。

30、LV7.1使用VI Server的方式,在一台机器上调用另一台机器上的VI并运行,需要做哪

些设置?(两台机器在同一个网络中)

A:1)在Tools/Options/VI Server:Configurtion下选择Protocols为TCP/IP,这样才能

在网络中使用VI Server,否则只是在本机上使用VI Server。2)在Tools/Options/VI S

erver:TCP/IP Access下设置可以访问的VI Server的主机IP。如果不进行设置,远程机器

将无法调用需要的VI。

31、在LV7.1中如何在运行程序后,前面板上去掉windows的关闭按钮

A:可以在LV的前面板FILE/VI properties/windows appearance/customize,去掉allow

user to close window对钩,保存设置,运行后可以实现效果。

32、LV7.1中如何清除前面板的Graph,即在每次运行时,让Graph重新显示数据而不显示历

史数据。

A:在Graph里面可以通过创建Local Varible并对其赋空来解决。而在Chart 里可以通过创

建History Data属性节点并对其赋空来解决。

33、LV7.1中怎样将一个数组中所有满足条件的元素的索引值提取出来,保存成一个新的数

组?

A:使用移位寄存器、Build Array和Select函数就可以做到,具体方法:1)使用FOR循环

,在循环边框上添加一个移位寄存器,并初始化为一维空数组,类型为I32;2)在循环内

部使用Select函数,每次循环都判断数组中的一个元素,并将判断结果(布尔量类型)送

入Select的“s”输入端;3)每次循环都使用Build Array函数将左端的移位寄存器直接

连接到Select函数的“f”输入端,这样Select函数的输入端就是所有满足条件的元素的索

引值;4)将Select函数的输出端连到右端的移位寄存器上。这样程序结束后,For循环的

右端移位寄存器的数据就是需要的索引值。

35、移位寄存器和反馈节点的区别?

回答:反馈节点箭头的起始端相当于移位寄存器的右端,箭头的末端相当于寄存器的左端

。区别在于移位寄存器的左端元素可以通过下拉下拉方式增加,而反馈节点的端口是无法

增加的。

36、如何让子VI的前面板也显示出来?

A:右键点击子VI,选择SUBVI NODE……然后再选择第2项SHOW……就是当子VI被调用时,

显示前面板。

37、弹出窗口无法进行任何操作,并且被主界面挡住,如何解决?

A:主界面VI properties中windows appearance里customs设定windows behavior为norma

l了,因此主界面保持在最前端,应该设为default。

38、在程序中实现按对应键弹出窗口,在窗口已打开情况下继续可打开其他窗口?

A:在程序框图内使用并行循环。每一个可能要运行的子VI(打开其窗口)及其运行条件(

按键)各占一个循环。各个循环相互独立,互不干扰。在考虑同时关闭各个窗口时,需要

使用全局变量。

39、在调度Vi的时候,经常无意地把面板上的一些控件移动了位置。还要花很大功夫去重

新布置这些面板控件。有没有办法让已经设计好的控件的位置固定不动?

A:首先我们可以通过Operate菜单中的Change To Run/Edit Mode命令,设置VI为运行或编

辑模式。面板控件的移动只在编辑模式下有效。在运行模式下是不能移动任何控制的位置

的。第二种方法是,选择指定的控件(可多选),然后在菜单的Reorder下拉菜单下,选择

LOCK命令,来锁住指定的控件。这样,除非使用Unlock命令解锁。否则是无法移动指定控

件的位置。

40、为什么子VI节点的输出端口没有数据传递出来?

A:这类问题的主要原因是子VI中存在着循环。如果子VI中的循环不能推出,子VI节点就一

直在运行。对于LV的数据流编程机制来讲,一个节点没有执行完,它的所有输

出端口就不

会有有效数据输出。解决方法:一是把子VI中的循环提出到主VI里来。二是使用全局变量

,并在主VI中使用并行循环来控制子VI 的结束。

41、怎样在LABVIEW中实现全屏显示?

A:1)要全屏显示,在File/VI Properties/Window Size/Size the front panel to the

width and height of the entire screen打上钩,就可以了。

2)是否控件显示方法,第一,要完全不显示时,可以把控件放在界面看不见的地方他就不

显示了;第二种方法,你可以使用控件的属性进行控制控件的Visible,具体方法是在程

序框图里点击鼠标右键/Create/Properties Node,选择Visible,并将其改为Change to

Read,对Visble设置为True或False就可以控制控件是否显示了

42、LV如何对Excel文件作数据续存?

A:使用Excel Get Last Row.vi先将Excel内已有数据的最后一行的行数得出,再于该行开

始续存数据。

43、LV当用鼠标点击Graph时,该Graph的大小变化了,当鼠标离去后Graph 的大小恢复到原

来情况?

A:可以应用一个Event Structure来做,添加两个事件(一个是鼠标点击,另一个是鼠标

离去)。通过在这两个事件中分别赋给Graph的PlotArearSize属性节点不同的值,来改变

Graph的大小。

44、如何用LABVIEW编程检测U盘?

A:需要调用Windows API函数GetDriveTypeA,其函数返回值盘符类型的数据类型为长整形

,输入参数为检测盘符。调用CLFN.vi选择\windows\ system32\kernel32.dll,选择GetD

riveTypeA,设置Return Type为Numeric Signed 32-bit Integer;再添加参数nDrive,设

置参数类型为STRING和格式为C String Pointer。运行时在输入端填上要检测的U盘盘符,

返回结果为时表示为DRIVE_REMOVABLE即为可移动的U盘

45、如何用Labview与可编程仪器通信,该仪器没有GPIB接口,但有COM 口,能否用LV操

作?

A:可以通过Labview的串口通信来解决仪器控制问题,参看FIND EXAMPLE 的BASIC 2 PORT

SERIAL WRITE AND READ.VI

46、如何将EVENTSTRUCT中捕获的时间传递到STATE DIAGRAM?

A:使用VENTSTRUCT捕获面板事件后,将不同的事件对应于不同的字符串和其他,再通过Q

UEUE将VENTSTRUCT中的字符串传递到STATEDIAGRAM中,再根据得到的字符串进行相应的处

理。

47、使用WRITE TO BINARY FILE函数向二进制文件中写入一个1D数组,为什么在READ F

ROM BIANRY FILE读取时,会多出4个字节数据呢?

A:写入时加入了头信息,多出的4个字节就是头信息,代表了数组或字符串的长度。在WR

ITE TO BINARY FILE 中的APPEND ARRAY OR STING SIZE这个输入端口中设置,其默认值为

T,代表加入头信息;如果将其改为F,就不会多出4个字节了。

48、卸载Labview7.1时出现错误1603,接着出现错误1722和1721,程序询问是否继续卸

载操作,怎样消除该错误并正确卸载7.1?

A:该错误通常出现在试图卸载某些共享组件的时候。按照以下步骤可以解决该问题。

1)注意当错误发生时是在卸载哪一部分组件。一般讲在卸载LV核心部分或LV RUNTIME

ENGINE的时候容易出现。

2)当出现错误代码1603,弹出对话框提示继续卸载操作时候,点击YES 3)如果卸载完成之后提示需要重新启动计算机,点击NO。

4)对于卸载过程中产生的错误,从CD相应的文件夹中手动运行相应的组件,路经如下:

\components\lvcorefull\lvcorefull.msi或components\lvruntimeeng\lvruntimeeng.ms

i点击修复按钮。

5)修复之后再次运行这些MSI,选择卸载按钮。这样就可以完全卸载。49、Labview7.1在编写大型程序时希望优化计算机的内存使用,那么需要考虑哪些内容?

A:1)、将VI分解为SUBVI,当SUBVI不再被执行的时候,LV能够释放它的内存。

2)、尽可能少使用全局变量或局部变量,这两者会造成LV为数据备份。

3)、在需要时才在打开的前面板上显示大型数组和字符串,因为前面板的显示控件需

要复制他们显示的数据。

4)、属性节点会造成SUBVI的前面板滞留在内存中,这样会增加内存的使用。因此,如

果SUBVI的前面板不被显示,不要在SUBVI中使用属性节点。

5)、尽量在数组中使用相同的数据类型,并在传输数据进入子VI使用强制小数点位置

。当LV改变数据类型,输出需要一个新的缓存。

6)、当设计流程图,要注意任何输入大小与输出的大小不同的地方。EG:频繁的增加

数组或者字符串的大小将造成数据的多次复制。造成内存增加,并造成内存碎片。

50、在Labview7.1中生成可执行文件后运行出现如下错误:“Executable version(7.1

.1) doesn’t match resource file(7.1)”怎样消除错误?

A:这种情况是由于LV7.1.1Run-time Engine安装损坏或者版本不兼容造成的。解决如下:

1)到控制面板---添加或者删除程序

2)选择National Instruments Software点击更改

3)在National Instruments Software对话框选择LV7.1.1Run-time Engine点击修复

附注:安装了LV Run-time Engine7.1.1后,在MAX的software里一般看不到LV7.1.1Run-t

ime Engine7.1.1,只能在控制面板里看到。

51、VISA Set I/O Buffer Size

A:可以完成对缓存的设置,放的位置一定要跟在串口配置VI的后面,MASK的设置要对,如

果不设置,默认值为4096Bytes,如果需要用串口读取的数据比这个大,就会造成数据丢失

52、如何将CVI驱动程序(fp文件)转换成LV的驱动程序?

A:Labview自带这个功能。在TOOLS的Instrumentation 中的Import Instrument from CV

I Fp菜单里。

53、Labview7.1如何创建控件以自定义图片方式显示?

A:在前面板放上要创建的控件类型,选中它后点击EDIT---CUSOMIZE CONTROL进入编辑面

板,用工具栏的控件变成CUSTOMIZE MODE,EDIT—Import Picture From File选择要显示

的图片,右击前面板的控件点Import Picture。切回Edit Mode。右击控件选择Import Pi

cture然后选择方式。同样操作其他图片。

54、如何把Labview前面板控件当前值通过程序设为下次打开时的默认值?A:方法如下

1)手动操作:对控件点击鼠标右键----Data Operations---Make Current Value Defa

ult。

2)通过文件或注册表方式先把控件当前值存下来,再下次打开时再从文件或注册表把值

读回来。

3)使用VI Server技术在保存控件当前值为默认值,但这种方法只能处于编辑状态使用

,在生成exe文件后不能使用。操作如下

(1)调用Invoke Node设VI的Edit Mode值为TRUE

(2)调用Invoke Node设Make Current Value Default

(3)调用Invoke Node设Save Instrumentt的Path to saved file 为需要设置默认

值的VI路径

55、使用串口过程中发生如下错误:

1)Unable to open session to “ASRL1::INSTR”

2)Return Value :0XBFFF0072

3)Status Name :VI_ERROR_RSRC_BUSY

4)The resource is valid, but VISA can not currently access it.

A:这是由于访问COM口的软件引起的,有可能是运行LV程序打开了VISA 的对话而没有关闭

它;或者打开了一个永远不能关闭的超级终端连接。或者是其他的软件正在使用该串口或

者串口挂起了,这是需要关闭所有的程序。若果还是没有解决,最后方法:禁止COM口以释

放资源;步骤如下:打开控制面板,点击系统图标,选择设备管理器,展开端口,选中要

操作的串口,右击选择属性,在常规选项里选择不再使用该设备。或者直接右击选择停用

。设定完毕重新启动,然后选择再启用该串口。

56、在使用Open/Create/Replace File.vi选择create or replace 方式时,如果文件已

经存在,需要Replace,怎样才能不弹出对话框直接Replace?

A:两种方式:1)双击打开Open/Create/Replace File.vi的程序框图,把里面的If func

tion is 2(create or replace with protection) ask user’s permission to 的

CASE结

构删除。2)在Open/Creat/Replace File.vi前加一个判断文件存在的结构,判断存在时运

行Delete.vi

57、LV在做网络发布的时候,能否在由LabVIEWWEBServe生成的HTML 中嵌入其他语言写的

脚本文件?或者在其他网络服务器上使用由LV生成的HTML?

A:这两种情况都是不允许的,原因在于NI的Web Server不允许这样的操作。LV的Web Ser

ver无法将非LV环境下生成的脚本信息传送到客户端浏览器,也无法访问客户端浏览器中非

LV环境下生成的脚本信息;同样是处于NI Web Server的问题,其他的Web Server(Apach

e,IIS等)也无法使用由LV的Web Server生成的HTML文件实行对VI控制。

58、如何较精确的判断延时时间?

A:需要使用迅捷VI(Elapsed Time.vi)而不能使用Wait。因为Wait是会受到系统运行的

影响,而且重复延时后会产生积累误差。而Elapsed Time使用的系统时间(精确到Ms),

不会产生累积误差。

59、如何动态添加Tree控件内条目?

A:查找Directory hierarchy in tree control.vi例程,打开init-open-close 子vi内的

Directory to tree子vi内add Item.vi。使用该属性节点进行添加删除操作。重点在于pa

rent tag端口的使用。如果添加的为最上层的条目,则parent tag为空字符串。如果是子

层条目,则parent必须为上一层条目的tag。

60、在Labview7.1中如何使用Database Connectivity更新ACCESS数据库中数据类型为OL

E的字段?

A:使用带参数更新数据库的方式更新OLE数据类型的数据。具体方法如下:1)使用DB To

ols Open Connection.vi打开数据库;2)使用DB Tools Create Parameterized Query.v

i建立一个带参数更新数据库的Refnum,在SQL query输入“update表名称set列名称=(?

)”,由于OLE数据无法用文本方式直接体现,“(?)”在这里就代表OLE的数据类型;

3)使用DB Tools set Parameter.vi,在Value处输入OLE数据就可以,比如数组;4)使

用两次DB Tools Free Object.vi释放Refnum,才可以得到Connection Reference,才可以

再使用其他DB Tools VI;5)断开连接。

61、Labview7.1,Time Loop结构主程序内调用了两个不同功能的子程序,当子程序被调

用时弹出子VI前面板。子程序内均使用了Time Loop,设置均一样,但是调用任一子VI后另

一个再也调用不了了。

A:两个子VI均使用了同一个设置的Time Loop结构,这是由于两个子VI的Time Loop的Loo

p name名称相同造成的。

62、在Labview7.1中如何设定和显示Cursor

A:举例对于waveform. graph,我们可以调出它的属性节点,然后在属性节点中选择Curso

r list,程序就会以簇数组的形式列出所有的游标,先索引出来某个游标,然后再利用簇

函数就可以修改了,如果要改变游标的坐标,可以Index Array 索引出某个游标,然后Bu

ndle by name就可以修改,再replace array或者其他数组函数,将改变后的簇数组写入另

一个cursor list的属性节点即可。

63、利用Build Application生成exe文件,如果原程序用到了current vi’s path,那么

就会出现原先默认能找到的文件现在程序自己找不到了?

A:当使用current vi’s path这个函数时,它会将文件名和该vi所在的路径返回,如果刚

编写vi还没有保存,那么运行它会返回一个无效值,如果已保存了该vi,那么就能返回完

整路径,例如一个名为:“Application.vi”的vi被保存在C:\Program File\Applicati

on这个文件夹下面,current vi’s path函数返回的路径就是C:\Program File\Applica

tion\ Application.vi;如果生成exe,并且与Application.vi保存在同一个目录下,那么

运行的时候会返回C:\Program File\Application\ App.exe\Application.vi,所以我们

需要多用一个Strip path function才能得到和原来一样的路径。

64、如何自定义窗口标题字符,而不是用默认的Vi 名称?

A:如果只是设置一个非VI名称的默认标题,可以在VI Property>>Window Appearance中设

置,去掉Same As VI name前面选中符号,然后在Window title中输入需要显示的字符;如

果希望在程序中修改标题,可以使用VI Server中属性FP.Title

65、Labview中使用NI-VISA软件控制USB设备

A:为了使用NI-VISA,在Windows环境中,可以通过INF文档做到这一点。NI-VISA3.0包含

VISA Drive Development Wizard(DDW)将为USB设备创建一个INF文档。1)、选择Start

Programs National Instruments VISAVISA Drive Developer Wizard,打开DDW。可以用

这个向导为PXI/PCI或USB设备创建一个INF文档,点击Next。此时出现VISA DDW基本设备信

息窗口。2)进行这一步时,需要清楚USB供应商ID和产品ID。这两个数据都是16位十六进

制数字,由供应商提供。点击Next。出现输出文档属性窗口。3)USB Instrument Prefix

是一个描述符,用来识别本设备所用的相关文档。在USB Instrument Prefix 中输入相应信

息,并在“output file directory”中选择存放这些文档的目录,然后点击Finish。INF

文档就创建好并保存在您指定的位置了。假定Windows XP操作系统。

复制INF文档并将其放入INF文件夹,这个文件夹的位置通常是:“C:WINDOWSINF”。这个

文件夹可能是隐藏的。

右击C:WINDOWSINF文件夹中INF文件,然后点击Install。这个过程为您的文件创建了PNF

文档。现在就可以准备安装USB设备了。

连接USB设备。Windows探测到您的USB设备后,立即会打开“添加新硬件向导”。遵照屏幕

上有关向导程序的指定行事。如果您准备为该设备选择驱动程序,就请浏览INF 文件夹,并

选择您使用DDW创建的INF文档。就可以在MAX和LV中编成控制了。66、利用Labview的迅捷VI读出.lvm的数据,但是无法正常在waveform. graph中正常显示。

A:读出的二维数组是以列为单位存放数据的,而waveform. graph显示2D 数组是以每行作为

一条曲线进行输出的,所以,利用Transpose 2D Array 将行列转制就可以了。Waveform.

chart与graph刚好相反,是以每列数据作为一条曲线进行输出的,所以不加

转制就可以用

chart代替工人阿婆和也可以正常显示。

67、Labview7.1DataSocket协议传输数据怎样保证客户端完整地从服务器接收数据而不丢

失?

A:数据丢失的原因是读取数据的速度比发布慢使得数据被覆盖,处理方法有两方面:

1)提高客户端运行速度,保证服务器发布新数据前已经读完。

2)设立数据缓存区。服务器的在DataSocket Server Manager设置,默认是25M。客户

机的要将Datasocket Open函数模式参数选为BufferedRead或BufferedRead/Write,然后通

过属性节点设置缓存大小。同时也可以用属性节点作缓存区诊断。

68、如何将MAX配置文件保存下来?

A:在MAX里,当配置完成后,在菜单栏,选择FILE---Export,选择保存位置已经类型,点

击Next,选择需要保存的文件,接着点击Export,finish。载入时,选择Import 69、Developer Suit中State diagram toolkit是做什么用的?

A:状态框图使用一个图形化状态框图标识,定义多个状态及其转移逻辑,并包含有自动生

成LV代码的工具,在对于搭建大程序的构架上是很有用的一个工具

70、LV7.1用局部变量的时候只能将机械动作改成Switch,而不能用Latch,例如用Stop按

钮停止两个并行的循环,怎么做?

A:在用Latch方式时,系统读这个控件一次后自动改为默认值,所以用Latch 方式时用局部

变量,在两次读出的值即使时间间隔很短也不能保持一致,所以就不能用了。此时,可以

用Switch方式,并在程序开始时初始化按钮就可以了。

71、在ActiveX容器中播放Flash的动画,如何实现在LV中响应Flash中的按钮动作?

A:通过调用ActiveX,可以在LV中播放*.swf的动画。响应FLAH中控键动作的办法是用一个

事件结构,在ActiveX容器中特定区域响应鼠标动作。

72、在调试LV7.1程序的时候,程序总是进行到无法响应得状态,然后只能强行关闭,因此

无法正常运行?

A:在VI前面板有个长度很大的字符串Indicator,因此程序在刷新屏幕的时候

很消耗资源

,将这个Indicator设为隐藏,问题就解决了。同样的问题也会出现在数据量很大的Graph

,Chart,甚至探针上。

73、Labview7.1中一个while循环嵌套另一个While循环,如何通过一个布尔量停止这两个

循环?

A:创建一个布尔量的局部变量,用这个局部变量控制一个循环,用布尔量控制另一个循环

,注意机械特性是不能带锁存的(Latch)。

74、采集3路信号,需要根据一列的数据的值来对整个数组进行排序,保证每一排的数据仍

然对应。

A:

75、每次运行时CPU使用率都达到100%,为什么?

A:循环里面没加延时就会有这种现象发生

76、仪器驱动器的概念和VISA的特点?

A:仪器驱动器是指使用标准化的I/0函数仪器设备进行通信的程序,主要用于对仪器进行

程控操作。在LV编程语言中,仪器驱动器是指由VISA标准和仪器程控指令共同构成的仪器

控制程序的应用接口(API)。仪器驱动器采用VISA标准编程,从而可避开许多复杂而低级

的仪器程控命令。VISA是虚拟仪器体系结构的简称,它的特点有1)面向对象编程;2)VI

SA是当前所有仪器接口类型功能函数的超集,且十分简洁。3)VISA作为标准函数,与仪器

的I/O接口类型无关;4)VISA程序与操作系统与编程语言无关。

77、如何选择告诉CAN卡和低速CAN卡的使用?

A:高速CAN 和低速CAN设备是不能允许于同一个CAN网络中。如果CAN 设备是Serials 2 的

CAN设备那么是有两个PORT分别可以做高速CAN和低速CAN的,而且是通过软件来设置的,直

接在MAX里找对应的CAN设备选择相应的PORT的属性就可以更改是高速还是低速CAN。如果S

erials1的就需要一个端子,从一个CANport分出两个Port分别作高速CAN 和低速CAN,也是

在MAX设置的。

78、如何使用Read Text File函数从文本文件中逐行读取数据?

A:在Read Text File函数的输入输出端口无法设置读取行的功能。只有用鼠标右击该函数

,从弹出的快捷菜单中选择Read Lines才能实现读取行的操作。将这个函数放到一个循环

里,就可以实现逐行读取的目的了。

79、用Labview写的串口程序,生成EXE文件后不能在没有Lv的机器上运行,这台机器已经

装好了相应的LAB VIEW Run-Time,为什么?

A:如果串口程序使用VISA写的,就需要在目标及其上安装相应的VISA驱动。可以在目标及

其上单独安装VISA驱动,也可在Labview中使用打包功能将VISA驱动和应用程序一起做成一

个安装文件,统一安装到目标机器上

暗黑2-一些新人常见问题备查

1 为什么有些无形(Eth)装备比有形贵 注意:不是所有装备都无形的比有形贵的! 无形比有形多50%ed(防御/伤害) 无形比有形需求低(敏捷、力量需求都比有形少10) 为了省属性点,副手用无形统盾做精神 无形装备能自动恢复 自动恢复数量-泰坦的复仇 自动恢复耐久-沙暴 无形装备有无法破坏属性 如拿无形武器做的死亡呼吸 稀有——无形物品的出现机率是5% 次元算够稀有的了,出现无形次元就更稀有了(只要不拿去敲怪就不会坏,用着还很拉风) 如果是防具(如jp权冠)就郁闷吧。 pet(雇佣兵)用不会消耗耐久度(不会坏) 无形比有形好看........ 无形cta比有形贵的原因 2 减抗 除了pal的信念(审判)灵气和nec的降低抵抗能破免疫外(对免疫只有1/5效果,有一部分还是不能破),其它减抗装备(权冠、新月),冰支配都不能破免疫<还有伤害加深、衰老破物免> 遵从、权冠、新月等物品带的减抗作用是谁用谁受益,其它人无法受益(所以kcama、电sor不用给pet新月了) 最多只能把敌人的抗性减到-100 3 装备等级 装备的等级不会影响什么 不过 th们都认为88、99lv的好看的所以能卖贵点

4、RR时bb怎么过3bb? 1级bb不用完成3bb任务,只要key(40级人物)完成了3bb任务能进毁灭王座就可以了 1级bb组队后一直站在act5城里等司机带key去杀巴而就行了,key pass他们也跟着一起pass。 ps除了act3到act4时1级bb要离开城里进红门外,其它关都不必离城,让一个未完成任务的人和司机做任务pass就可以了。 6、密人,加好友 密人 /w *acc ni hao ma? /m *acc ni hao ma? /m char ni hao ma? /w(空格)*账号(空格)说话内容 /m(空格)名字(空格)说话内容 5 游戏里密人、加好友 /f a <账号>, /f add <账号> 将某账号加为好友。双方互相加入好友后,朋友上线/离线/进入退出游戏将会收到相应的提示。 /f d <账号>, /f r <账号>, /f del <账号> 删除某好友 /f l, /f list 列出所有好友状态 /f m <信息> 将信息发给所有互相加好友并且在线的朋友。 /whois, /whereis, /where 查找玩家登陆状态/是否登陆/在游戏里还是在频道。 6 雇佣兵(pet) act2雇佣兵 普通难度 pet类型 - 防御型(deffensive)光环种类 - 反抗(Defiance)作用 - 增加防御 pet类型 - 战斗型(combat)光环种类 - 祈祷(Prayer)作用 - 增加生命回复速度 pet类型 - 进攻型(offensive)光环种类 - 祝福瞄准(Blessed Aim)作用 - 增加攻击准确率 恶梦难度 pet类型 - 进攻型(offensive)光环种类 - 力量(Might)作用 - 增加对敌人的物理伤害 pet类型 - 战斗型(combat)光环种类 - 荆棘(Thorns)作用 - 反弹敌人的近战物理伤害

labview简介

LabVIEW是一种程序开发环境,类似于C和BASIC开发环境,但LabVIEW与其它计算机语言的显著区别是:其它计算机语言都是采用基于文本的语言产生代码行,而LabVIEW使用图形化编程语言G语言编写程序,产生的程序是框图的形式。像C或BASIC 一样, LabVIEW也是通用的编程系统,有一个可完成任何编程任务的庞大的函数库。LabVIEW的函数库包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储等等。LabVIEW也有传统的程序调试工具,如设置断点、以动画形式显示数据及其通过程序(子VI)的结果、单步执行等等,便于程序的调试。 虚拟仪器,简称VI,包括三部分:前面板、框图程序和图标/连接器。程序前面板,如图一所示,用于设置输入量和观察输出量。它模拟真实仪器的前面板。其中,输入量被称为Controls(控件),用户可以通过控件向VI中设置输入参数等;输出量被称为Indicators(指示器),VI通过指示器向用户提示状态或输出数据等。用户还可以使用各种图标,如旋钮、开关、按钮、图表及图形等,使前面板易看易懂。每一个程序前面板都有相应的框图程序与之对应。框图程序,如图二所示,用图形编程语言编写,可以把它理解成传统程序的源代码。框图中的部件可以看成程序节点,如循环控制、事件控制和算术功能等。这些部件都用连线连接,以定义框图内的数据流动方向。图标/接口器件可以让用户把VI程序变成一个对象(VI子程序),然后在其他程序中像子程序一样地调用它。图标表示在其他程序中被调用的子程序,而接线端口则表示图标的输入/输出口,就像子程序的参数端口对应着VI程序前面板控件和指示器的数值。 图一图二 虚拟仪器和传统仪器的差异很大,具有很强的优势。独立的传统仪器,例如示波器和波形发生器,性能强大,但是价格昂贵,且被厂家限定了功能,只能完成一件或几件具体的工作,因此,用户通常都不能够对其加以扩展或自定义其功能。仪器的旋钮和开关、内置电路及用户所能使用的功能对这台仪器来说都是固定的。另外,开发这些仪器还必须要用专门的技术和高成本的元部件,从而使它们身价颇高且很不容易更新。基于PC机的虚拟仪器系统,诞生以来就充分利用了现成即用的PC机所带来的最新科技。这些科技和性能上的优势迅速缩短了独立的传统仪器和PC机之间的距离,包括功能强大的处理器(如Pentium4)、操作系统及微软Windows XP、NET技术和Apple Mac OSx。除了融合诸多功能强大的特性,这些平台还为用户提供了简单的联网工具。此外,传统仪器往往不便随身携带,而虚拟仪器可以在笔记本电脑上运行,充分体现了其便携特性。需要经常变换应用项目和系统要求的工程师和科学家们需要有非常灵活的开发平台以便创建适合自己的解决方案。可以使用虚拟仪器以满足特定的需要,因为有安装在PC 机上的应用软件和一系列可选的插入式硬件,无需更换整套设备,即能完成新系统的开

电话销售新手常见的20个疑难问题解答!

电话销售新手常见的20个疑难问题解答! 打电话给客户,客户反感,这个好像是一个比较普遍的现象,怎么样不反感呢?有一个比较简单但很有效的方法: 就是每次准备与客户沟通前要想清楚自己这一次沟通要达到什么样的目的,比如:我只是想让客户知道我们产 品是什么,这一点明确了,就围绕这个设计说辞;还比如:我这次就是想和客户确定是否可以面谈,那么,同样,就围绕这个目的设计说辞。这样有一个好处,就是能够清晰简洁地表达你的意思。因为,客户反感主要是搞了半天不知道你在说什么。 大多数业务员有一个误区,就是每一次与客户沟通都是希望这一次就能让客户购买,其实这是不可能的,商务是需要一点点推进的,这一次我达到什么目的,下一次我准备达到什么目的,这样,逐步推进,每一个环节都在做简单的事情,每一个环节的沟通都会很有效。 要做到这一点,建议大家一定要做交流记录,做交流记录除了上述的好处以外,还有会留下你与客户沟通的痕迹,事后,无论这位客户是否购买了,你都可以从这些记录中总结出一些经验和方法。 说白了,销售其实就是把这些简单的事情做好,做到位,并且是坚持做,没有那么难的。 以下就是电话销售新手常见的20个问题解答: 【电话销售新手问1:电话营销,我成功吗?】 电话营销,让人熟悉,而又陌生,熟悉是因为我们常用电话,陌生的是对方得知你的目的是要推销某种商品,而发出的低沉而又不 算友好的声音,甚至于她会匆匆挂上电话,面对这种声音这种情况我们该如何处理! 答:从自己开始! 首先,从会问这个问题的自己开始,陌生开发的电话需要很专业的处理,有时候是我们的自信心不够,有些时候跟客户也需要学会调侃。 【电话销售新手问2:电话销售中,如何建立信任度?】 在电话销售中,双方彼此都是通过电话交流与沟通.但未见其人,也未曾参观过,客户就会缺发安全感啊,这时我该如何办呢? 答:电话销售建立信任要通过,语气、用词。 电话销售建立信任要通过,语气、用词,对公司产品的了解,对对方的尊重,自己的专业度等方面。后面的问题,要解决最好是多通电话,和对方沟通的时候要表现出真诚,发自内心,特别重要的是要学会倾听,不要老是想自己要讲什么。和当面沟通一样,要鼓励 对方多讲话。 【电话销售新手问3:电话销售与网上销售谁更好?】 什么是电话销售?电话销售与网上销售谁更好? 讲师黄天倚答: 电话销售简单的说就是通过电话来寻找客户,销售自己的产品。电话销售和网上销售两者没有什么关系。网上销售是让顾客主动找 到我们。电话销售是通过电话开拓顾客,并且销售产品。电话销售是通过电话向客户推广产品,网上销售是等待客户自己下定单,本质上 来讲是完全不同的两马子事,很难讲到底哪个好! 【电话销售新手问4:因为我的年龄小,所以别人不信任我,怎以办?】 讲师黄天倚答:倚老卖老,倚小卖小! 倚老卖老就是说:你的资格、经验、阅历是顾客为什么要听从你的意见的理由倚小卖小就是说:你可以跟你的顾客展现出你需要得到帮助的一面,在这个世界上,任何人只要是正常健康的,都愿意去帮助别人!黄老师在大学时代就开始卖百科全书,从几百到几万不等。那个时候黄老师没有任何的销售经验,第一是*勤快!当别人7.8月份在吹冷气的时候黄老师却在烈日下扛着象砖头一样重的百科全书去 扫写字楼。那个时候经常讲的一句话就是我是一个销售的新人。今天您可以先看一下买不买都没有关系。当然你买了我很高兴,您不买 至少也可以给我一些建议,告诉我如何可以把推销这份工作做的更好!就那一个暑假,黄老师没有任何底薪,一个月就赚了9000块以上。*的就是倚小卖小。今天黄老师可以倚老卖老!跟顾客说还是经验比较重要:)

销售新人常见问题

销售非常锻炼人,并且入职门槛低,因此成为很多大学生入职工作的第一选择,但销售工作并没有想象中那么简单。新人初次接触销售工作时总会出现各种各样的问题,这些问题就像一根“骨刺”,如果不想法剔除,会使自己在踏入职场的第一步就遭受重挫,久而久之则会影响今后职业生涯的发展。 以下几种是销售新人在业务、人际交往、工作态度等方面常出现的问题,通过分析、诊断,希望可以帮助销售新人对工作形成正确的认知,助力他们迈向成功。 忙碌却没有产出 【案例】 Joy大学毕业后进入MC公司华北区销售部工作,主要负责北京市场五家合作伙伴的管理。她善良、为人热情、乐于助人,是新入职团队中的美女销售。 Joy每天的日程表并不是非常满,除了开早会和走访,没有更多工作内容,但仅是这样就让 她每天忙到筋疲力尽。然而,每到月底计算考核奖金时,Joy的达成率排名总是很靠后,和 她一同入职的新人平时并没有像她这样忙碌,但业绩都比她好。Joy开始怀疑自己的能力和 分管区域的好坏。 【诊断】 为帮助Joy走出困境,我认真地观察了她几天,大致了解了她业绩不佳的原因。我将Joy 叫到会议室,交给她一份任务:把工作的八小时分成八个单位,一小时一个单位。每四个小时记录并回顾一次自己的工作内容,每天记录两次,连续记录一周(销售人员都可以用这样的方法来分析自己,一定要细分到每一小时记录一笔)。 一周后,Joy拿着记录来找我,并根据记录对自己的日常工作进行了分析:自己每天80%的工作时间被其他同事和领导给占用了,如市场部要求回传店面照片,协助培训部复印培训资料,帮助售后部处理客户投诉等,而纯为自己业绩工作的时间只有20%。虽说她做的内 容都与自己管辖的五家合作伙伴有关,但这些工作对提升业绩没有直接的帮助。 【对策】 其实类似Joy这样的新人大有人在,他们每天都忙忙碌碌并且常常加班,但业绩平平。这类营销新人有一个共性:时间和精力没有全部投入到有“产出”的工作内容中。经过分析,我给Joy提供了一张全新的工作日程表: 1.用60%的时间在合作伙伴的公司里,而不是坐在办公室里,这样做其他部门的同事也就不会抓她协助干东干西了。 2.用20%的时间与其他新人做横向的沟通,不能只顾低头干活,也要抬头看路。 3.用10%的时间与上司和产品中心的同事沟通,了解并掌握一手的资讯。

labview问题集合

Labview初学者常见问题以及解答(上) 1、Labview如何实现由一个事件引发其他三个事件的顺序发生,且这三次事件间的时间间隔为50ms?回答:可以引用状态机来设计程序,将触发事件作为状态机的状态控制参数,后面发生的三个事件依次作为状态机的三个顺序状态,设置状态切换时间间隔为500ms. 2、labview在主程序通过局部变量不能实时看子vi的参数回答:通过局部变量只能得到子vi 运行完之后的结果。可以用control reference 方式,在子vi加一个属性节点引出一个reference。主程序里把需要显示的控件创建一个reference连到子vi的reference输入端口。另外也可以用vi server方式实现。 3、如何在一个graph或chart显示多个Y轴刻度,并且使每个通道对应每个刻度?回答:在前面板上,右键点击刻度,然后选择duplicate scales,就会创建一个新的刻度。然后再点击右键,选择swap sides,就可以让刻度显示在图的左边或右边。然后右键右上角的plot legend 上的曲线plot,选择Y scales然后就可以选择与该曲线相应的Y轴SCALES。多条曲线对应多条Y轴的刻度时,是同样的方法。 4、如何从labview中打开一个pdf文件?回答:最简单的方法:用system exec.vi实现,在system exec.vi的command line 端口创建一个常量,输入adobe reader 的路径,再加上文件名等几个参数就可以实现上述要求。举例如下:如果要拉开位于c盘的1234.pdf文件可以这样写“C:\Program files\Acrobt 7.0\Acrobat\Acrobat.exe”/t “C:\1234.pdf” “username”其中C:\Program files\Adobe\Acrobt 7.0\Acrobat\Acrobat.exe是Adobe Reader 的安装路径,/t是命令参数,C:\1234.pdf则是要打开的文件名,最后的username 是用户的名字 5、采集数据在graph如何显示系统时间,并且随着采集点数时间不断刷新。回答:有两种方式,一种是采集波形数据然后输出给graph,在graph上选择显示绝对时间,并且去掉ignore time stamp选项。第二种是采集数据文件,然后用获取时间的vi获取当前时间,然后把采集的数据文件和当前vibuild成波形文件再给graph.graph的设置和前种方法一样。这样就可以显示出时间虽采集点不断刷新的效果。 6、report generation里的standard和HTML究竟是什么意思?回答:STANDARD和HTML 是LV本身就有的报表类型,无须安装其他的文本编辑工具就可以打印。STANDARD是LV内建的一种报表格式,可以打印但不能存盘,也就是说我们的报表没有电子版。HTML是网页格式的文件,可以用浏览器打开,其实相当于LV帮我们编写HTML代码,这种格式是不能直接打印的,需要先指定网页路径才能打印出来。还要注意,如果是一段程序是用了report generation 的vi,在打包成exe文件或llb文件时,需要加入两个动态vi:_excel dynamic vi和_word dynamic vi。如果生成的报表采样了模板需要自支持文件里添加相应模板。 7、如果要将channel名字,测的是什么信号,采样率是多少这样的数据和采得数据一起存入文件应该用什么方式比较好?回答:推荐一种以前基本被忽略的文件结构——TDM FILE格式来存,这种文件格式基于二进制的方式,而在存储过程中可以加入很多的外部信息进去,例如free text;free interger等等,所以存这样的应用还是挺合适的。

摄影新手拍摄常见的问题及解决办法

摄影新手拍摄常见的问题及解决办法 1. 太早放弃 这一点很多人都犯过。他们在相机和摄影技巧课程/书籍上花了大把的钱,旅行去一个很棒的拍摄地点,然后很快就——因为有点累、饿或者无聊——放弃了。还有很多人没有在一个地方花太多精力,也许是觉得第一张照片就足够好了。但经验告诉我们,最好的照片往往出现在尝试过所有视角之后。 如今网络上已经有不计其数的照片,如果你想得到一些不同的结果,就必须付出更多时间和精力。你比别人多坚持一会儿,就能成为更好的摄影师。 2. 用广角镜头拍人像 当你打开便携数码相机时,镜头一般都位于广角端。大部分单反相机镜头为了容易装进摄影包,在收起时也位于广角端。因此广角就成了很多人的默认选择。但是广角镜头的畸变并不是非常适合人像摄影,特别是拍人物特写时。除非你刻意追求这种效果,否则请记得把镜头转到长焦端。长焦镜头往往能拍出更有魅力的人像照片。 3. 拍出晃动模糊的照片 这一点也许人人都应该检讨一下。在1/8s甚至1/80s这种快门速度下,相机对晃动非常敏感。初学者往往意识不到,而略有经验的摄影师则认为自己端得很稳。如非刻意,抖动模糊的照片通常都不受欢迎。很多摄影比赛和杂志都不会用模糊的照片。 拍出清晰照片最重要的一点就是保证相机稳定,而最好的方法就是用三脚架。但是我们都不能总是随身带着三脚架,这也没有关系。现在很多镜头都有防抖功能,而且相机的高感效果也在不断提高。所以除了寻找支撑物尽量保持稳定之外,也不要害怕提高ISO感光度。 4. 拍建筑时靠得太近 在近处拍摄建筑,为了取到全景就需要仰起相机,或者使用广角镜头。这样做会让垂直线变成向一个点汇聚的斜线,或者出现很明显的畸变。如何才能做到让平行线在照片中也是平行线呢?理论上讲,你需要让相机焦平面与建筑物平面保持平行。这其中涉及很多摄影技术和方法。 一般来说,你可以把相机举高而不是仰拍。如果在建筑物对面有其他建筑可以登上拍照,一定要利用起来。为了减少畸变,尽量从远处用长焦距拍摄,而不是在近处用广角。但是一定要注意不要让无关的东西进入画面。 5. 照片中没有明确的主体 最后,多数照片永远不会被注意到,就是因为它们没有明确的主体,或者有太多的杂乱元素,令人不知所云。这是由于我们观察世界,与相机记录景象之间的不同造成的。我们会专注于自己想看的东西,忽略其他东西,但相机会忠实地记录下镜头前的一切。 要避免这个问题,最常用的方法是靠近拍摄。一般人会希望拍下整个场景,所以用最广的焦距,站在最远处拍摄。结果照片很小,也没有什么冲击力。大胆地靠近拍摄吧。另外,也要学习运用光线和色彩来突出主体。养成检查背景的习惯,明白自己都在拍些什么。 在摄影实践中,经验不足的初学者,常会出现一些失误。下面哈尔滨完美动力小编简单的和大家一下几个常见的问题及解决办法!仅供参考! 1、用广角镜头拍出的照片四角发黑 主要是由于闪光灯覆盖面与广角镜头的视场角不匹配。老式闪光灯设计的闪光覆盖面大都只能与35mm的小广角镜头配套,28mm广角镜头的视场角比35mm镜头大12度,因此使画面四周受不到光而发黑。防止的办法有二条,一是在灯光上加散光罩,使闪光成为散射光,以扩大覆盖面;二是用白纱布蒙住灯头,让光线散射,使整个画面都能均匀受光。 2、画面影调模糊

LabVIEW

第一章LabVIEW简介 LabVIEW是美国国家仪器公司(National Instruments Co)开发的一种图形化的编程环境。其名称含义为实验室虚拟仪器工作平台(Lab oratory V irtual I nstrument E ngineering W orkbench)。作为一种方便的数据采集和仪器控制开发软件,它可工作于Macintoshe 、Sun SPARC工作站、HP9000/700系列工作站以及PC机等各种机型,可运行于Windows 3.1、Windows9x/2000、Windows NT、UNIX等多系统下,是一种灵活有效的仪器控制和数据分析软件系统。 LabVIEW程序使用虚拟仪器(V irtual I nstrument,缩写为VI)的概念。它是指一台计算机和连接外部的端口(计算机的COM口,LPT口或内插板)在软件控制下可完全模拟替代传统的仪器。因VI功能完全是由软件定义,故在硬件系统不变的情况下,用户可通过软件开发自行改变或扩充仪器的功能,实现自己的特殊要求,或用一套硬件系统实现多种仪器的功能,从而使虚拟仪器VI不但比传统仪器更灵活有效,而且也更经济。VI的核心就是LabVIEW程序,所以在LabVIEW中,所有程序均称之为VI程序,不管它是否通过端口和外界进行通讯。每个VI程序均可作为一个功能模块被重复使用,因而使用LabVIEW来开发和扩展程序极为方便。 LabVIEW编程语言同常规的程序语言不同,它采用更易使用和理解的图形化程序语言-G语言(Graphical programming language)。G语言使用图标代替常规的一条或一组语句来实现一个功能,通过各功能图标间的逻辑连接实现程序功能。 其编程过程不是书写一行行语句,而是连接一个个代表一定功能的图标,其程序编制过程简单,不涉及复杂功能实现的算法,易于掌握。同时,因为其编程过程基于可重复使用的功能模块,故可方便地使用由专业人员编制提供的专业级别的功能模块,开发出专业水平的程序。所以,LabVIEW在世界范围内的众多领域如航空、航天、通信、汽车、半导体、化学和生物医学等得到了广泛的应用,从简单的仪器控制、数据采集到复杂的测试和数据处理,从工厂、科研院所到大学里的实验室,到处都可以发现LabVIEW的应用。在西方国家(如美国)的许多大学已将LabVIEW作为本科的教学内容,成为工程师素质培养的一个方面。由于LabVIEW虚拟仪器的强大功能,使得使用一套硬件系统就可进行多种不同要求的研究,故而可以用更小的消耗进行更多的研究,尤其适合在我国资金较少的科研单位用于研究工作。 LabVIEW6.-中,包含许多专家编写的VI供用户使用。在数据采集方面有许多采集卡(DAQ)的支持模块,使采集程序的编制不必涉及低层控制;有各种数字、模拟信号I/O模块;有对GPIB(General Purpose Interface Bus,IEEE488标准)、VXI(VME bus eXtensions for Instrumentation ,扩展IEEE1014标准)和Serial端口的支持和控制等VI。在数据处理控制方面有各种数字信号处理和产生、频谱分析、滤波、平滑窗口、概率统计等VI。 本LabVIEW简介部分主要介绍LabVIEW语言的基础知识,包括界面、菜单、工具、模板、器件、函数等,通过这一部分的学习,读者即可使用LabVIEW编程并在实际工作中进行应用。LabVIEW进阶部分将深入探讨LabVIEW的编程环境、编程技巧以及优化策略等和更多的功能,考虑到篇幅限制,本书不与介绍,感兴趣的同学可参看下列参考书继续学习,

《率土之滨》新手三大常见问题详解

《率土之滨》新手三大常见问题详解由网易发行的“实时多人战略手游”《率土之滨》,是一部充满策略和对抗强度的三国战争 作品。很多新手玩家从进入游戏后就时常脱节,从配将到发展也始终模棱两可,永远都处在向别人询问结果的路上。今天小编从三大常见问题为各位讲解一番,希望能对各位童鞋有所启发。 《率土之滨》 《率土之滨》以三国为游戏大背景,数万名玩家将一同置于超过200万格的大地图上,玩家通过发展内政、招募将领来提升自己的实力,在战斗中扩大版图,最终一统九州。本作没有剧情,没有规定发展方向,完全由玩家自主决定服务器内世界走向。也正是如此高度的自由,让这款策略游戏更富有吸引力。 选州位置隐藏的真相 玩家在进入游戏后要选择自己的领地位置,俗称选州。游戏内有13个州,其中玩家只能选择其中九个州进入:幽州、冀州、并州、凉州、青州、徐州、扬州、益州和荆州。剩下中央红色区域的四州:司隶,雍州,兖州,豫州,属于资源争夺州,仅作为公共争夺区而不开放入住。

九州出生地和四个资源州 由于游戏后期主流是州与州之间的对战,因此选择一个好的州非常重要。从资源州来看,除幽州之外,其余8州都不同程度和资源州接壤,这意味着大部分玩家都可以更快占有资源,在前期还未形成州战的趋势下得以尽快发展。然而从入住州角度来看,情况就复杂的多: 幽州,背靠地图最北边,这里相对资源较少,想进入资源州必须跨过并州或者冀州。但天然的地理优势(游戏设定)使得这里易守难攻,是建造分城发育的种田党(尤其是壕)最爱。当然州战开始后十有八九会被并、冀夹击,因此小编不推荐新手和平民入坑。 并州和冀州,由于较靠近版图中间区域,游戏后期堪称兵家必争之地,且是仅有的会被三方围剿的两州,因此频繁的战斗在所难免。中期合作夹击幽州再相互吞并可谓家常便饭,想感受游戏紧张刺激的好战分子可以关注。 扬州和益州,这里广阔的土地面积不仅带来丰富的资源旷地,还有不少城池关卡供玩家日常取乐,新服前期非常适合新手发育。但随着玩家发展进入中期频繁会战,作为边缘战略要地它们受关照程度只高不低,是有组织有纪律老司机的聚集地。 荆州、凉州和徐州,由于靠近最丰富的2个资源州,加之两侧州又大势力倍出,在较为富足的同时也有些尴尬,往往在各方势力汇集之前成为战场。但乱世出英雄,这里总能诞生不少大神 玩家,因此小编推荐有能力or想磨练技巧的童鞋一试。 青州,适合任何玩家参与。这里不仅毗邻游戏最大的资源州,且西北侧三足鼎立互相制衡,南方又有小州可以缓冲。如果能平稳度过中期,还是可以期待的,当然满腹心机的老玩家们是否同意可就是未知数了。

钓鱼新手常见的各种问题

钓鱼新手常见的各种问题 钓鱼作为一项休闲户外运动,吸引了众多爱好者。每逢节假日,越来越多的钓友走出忙碌喧嚣的都市,投入到生机勃勃的大自然的怀抱。钓鱼人越来越多,“怎样钓好鱼”、“怎样钓更多的鱼”便成了众多初学者研究的话题。下面整理了钓鱼新手常见的各种问题,欢迎阅读。 初学钓鱼常见问题: 1、鱼不吃钩 打窝两三个小时后,浮标还是纹丝不动,这是很多钓友常常遇到的事。还有些情况就是打下窝子后,不久发现窝内有鱼星泛起,这肯定是窝内有鱼,但鱼就是不吃钩。鱼不咬钩是有气候、季节、气压等多方面的原因,需要分析和查找。只要找到问题的症结,对症下药,一切便迎刃而解,一般可从以下几个方面进行查找。 (1) 钓饵是否对路。平时用某一种钓饵总能上鱼,这次仍用这种钓饵,鱼却怎么也不咬钩。其实这并不奇怪,鱼的口味是会发生变化的,就像我们人类夏季喜欢吃素,冬季爱吃荤腥一样,这与气候、气压、水情、季节等许多因素有关。至于鱼的种类不同,食性各异,就更不必说。如果你对所钓水域的情况熟悉,可先从钓位、水情等其他方面查找原因;如果是生口鱼的钓场,又确实有鱼,则钓饵对不对路,应是首要的一条,可以考虑换饵。

(2)钓点是否合适。如果钓位选择不当,此处无鱼,当然无鱼上钩。或者钓点选的不是地方,或过浅过深;或水下有暗草,钩饵落不了底;或大水面的平直地段,鱼不在这里停留,更非鱼道鱼窝。当开钓一两个小时,钓点内毫无反应,两旁邻近的钓友也无鱼上钩时,就有考虑另选钓位的必要。 (3)气压是否适宜。天气的好坏,决定气压的高低,气压的高低决定着鱼的摄食态度。如闷热天气、下雾天气、连续阴天、雷雨之前,气压就会降低,使水中的溶解氧下降,水中鱼缺氧上浮,根本不想进食,不是在水底不动,就是浮到水面吸氧。即使把最好的钓饵送到鱼的嘴边,也无济于事。如果遭遇这样的天气,还有刮大风的天气,鱼也趴在水底不动弹,也不咬钩。这样的天气,最好的办法就是“打道回府”。 (4)水情。水位频繁地涨落,鱼向水体中间聚集不咬钩,将钓位选在深水区,偶有所获;流水中垂钓,流速过快,鱼不在这里停留,只有选择流速较缓处下钩;水色过于浑浊,钓饵难以被鱼发现,使用白色、黄色或香味浓重的钓饵,效果会好一些;水质过肥、鱼不爱咬钩,用普通钓饵很难奏效,可用味道浓烈的饵来刺激鱼的食欲,方能引起鱼儿的兴趣。 (5)是否有外界的影响。淡水鱼类都害怕干扰。岸边喧嚷的人声,来回走动的脚步声,频频挥竿发出的声响,身影、竿影的晃动以及白色衣服的反光等等,都会惊跑鱼群。特别是渔民用丝网捕鱼或是拉网

labview结构的使用

结构的使用 本页关键词:labview labview 下载labview8.2 labview教程labview论坛labview 8.20 labview 7.0 labview 序列号labview7.1 labview 8.0 结构的使用 条件结构 条件结构是执行条件语句的一种方法。这类似于文本编辑语言中常见的If…Then…Else语句。它位于程序框图中,函数→编程→结构→条件结构。如图所示: 条件结构包含有两个或者更多的子框图,每一个子框图包含一段程序代码,由此对应一个程序分支。多个子框图就像一摞卡片重叠在一起,任何时候只有一个是可见的,执行哪一个取决于于选择端子外部接口相连的某个整数,布尔数,字符串或者枚举指,用户也可以直接输入所有可能出现的值。 1.选择端口的输入值 条件结构选择端口的输入值是由与它相连的输入控件对象决定的,数据类型可以是布尔量,整形,字符串型或者枚举型。条件结构顶部中间是各分支的选择标识,它自动调整为输入的数据类型,可以在工具模板上使用标签工具直接键入单个数值或某个数据范围。数值之间用逗号来分开,例如:“..0,2,4..10”表示选择条件为:≤0,2,4,5,6,7,8,9,10。 对于字符型和枚举型数值在条件标识上会自动加上双引号,当键入的选择器标识值与连接选择端口的数值类型不同时,选择器标识变为红色标识有错误。如图:

设置默认分支的方法是,选择一个分支结构,在快捷菜单中执行“本分支设置为默认分支”,它的作用是当选择端口的值与选择器标识值没有一个匹配时,就执行默认分支。如图: 2.条件结构的数据通道 条件结构的数据通道就是数据的输入和输出端口。将结构内外的端子相连后,边框上就会出现一个小矩形框,这就是数据通道,用于传输数据。向条件结构的一个分支提供数据时,这个数据对于所有的分支都是有效的,也就是其他分支都可以使用这个输入数据。条件结构的输出通道有些不同,当在一个分支中创建输出通道后,所有分支的同一位置都会出现一个白色小方框,它要求每一个分支都必须为这个通道予以连接,通道变为实心后程序才可以运行。也可以在通道的快捷菜单中选定“未连线时使用默认”为没有连接的分支定义一个默认输出值,这时输出通道变为灰色。如图: 条件结构应用举例 例一:

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、双边傅里叶

新手常见FQ问题解答

新?常见F&Q问题解答 收集问题,有问题的请跟帖提问。 怎么退出杀劫 看图,那个是杀劫选项,点进去选择退出。 怎么隐藏周围玩家 A LT+4是隐藏周围所有玩家 A LT+5隐藏周围玩家,只显?队长。 怎么设置默认技能?使?默认技能快捷键是什么? 战?中A LT+W打开技能栏,找到想要设置的技能后右键选定。 使?默认技能的快捷键是A LT+S 怎么强化装备

怎么获得装备材料,和怎么转化装备材料。 1.分解装备宝鉴。 这个貌似看不清,装备材料转换?的五?符,在杂货店购买。

2.做装备材料收集任务,镇魂,图腾可以获得装备材料包。 装备材料收集任务?怎么做? 在做?的时候,请你带上你的宠物,每个名字的怪都是2只,分别是岩?,烁?,??,泥?,如岩?,?和宠要同时各?削?个岩?,1回合内死亡,否则复活满?。只要每回合同时削死同?个名字的2个怪就O K了,顺序随意。 武器装备不??被我分解了怎么办? 不?担?,分解的不是你的装备,分解的是宝鉴,如果不??分解了宝鉴,可以通过?劫副本(?前更新为只有副本掉落了。3.22修改)来获得宝鉴。?前只有这个地?可以获得。 为什么我的宝鉴开不了装备了? 没?都有三套装备,?如普通披风宝鉴,我们把三个属性的装备都开出后,就?法再开出装备了,只有分解,?前是这样的,20级30级以后是怎么的还有待确认。如果你点开宝鉴,没有装备可以开的话,就分解吧。 关于宠物融合的问题:

㈠主宠10级,副宠必须必须是1级绿?宝宝!!!必须必须,因为我刚融合,我的B B2级了,说必须1级,我蛋疼了。 ㈡融合后,主宠有?率技能副宠技能,但是技能不会出现在当前技能栏?,如果想使?你还需要使?灵兽要诀进?步那个啥。(脸?,没钱没灵兽要诀,?直没试验过,融合到融合了3次。) 关于类似于昆仑风寒、星落这样的持续伤害技能: 风寒和星落是2个技能,2个单独存在的持续性减伤状态,所以不要?味的只使??个技能攻击,当队伍中有2个昆仑的时候,可以分??下,?个??风寒,?个??星落,覆盖性的上装备。最?化的输出。其余职业应该也类似,我只练了?个昆仑。 为什么我的聊天框?的所有东西我都点不到?包括发出的宠物,装备,?物,还不能滚动查看聊天内容了。 在聊天框右下?,有打开穿透、调节透明度、频道选择等选项,你是不??按到了打开穿透那个设置了,点?下关闭穿透,就可以了。 宝宝:技能,:?个是佩戴技能,?个是技能囊。 佩戴技能和佩戴装备?样需要部位,?前20级前只有2个位置。也就是可以佩戴2个技能。 技能囊?的技能不起作?。 抓到的宝宝,佩戴有?个,技能囊?有2个(其中以个已经佩戴,想要另外?个也起作?,?要诀打上去,?了要诀,会在技能囊?随机挑个技能放在佩戴技能的空位上,或者顶掉已经佩戴的技能。) 为了?便理解?装备和宝宝技能类?:宝宝融合(消耗融合?)增加宝宝的技能囊?德技能===类似于,你使?装备图鉴,增加装备种类 宝宝替换(消耗要诀)更换或者添加已经装备的技能从技能囊?。====类似于你在装备集?更换装备或者装备你未装备的部位。

labview学习感受

学习labview有快半年了,做个总结。回顾一下自己的摸索过程。 幸运的是有个项目用到Labview,因此边学边用,由于有前一项目的经验作参考,可以说是在模仿中学习。从学习到使用给我最大感受是labview编程容易上手,帮助文档方便,就是太贵了,比较少企业会使用,特别是小企业。虽然这样,还是很推崇学习labview的。废话少说,转入正题。 其实总结自己的摸索过程也等于是在做项目总结。首先从使用的模块做总结: 1、毫无疑问的串口通信; 2、与数据采集相对应的TDMS数据存储模块; 3、报表输出(word,excel,html); 4、连续的波形显示以及从TDMS里读取显示; 5、待解决的xcontrol控件; 模块分析:1、对于串口通信:主要是要设置成有数据即读取,而不能等到接收缓冲区满时再读取。2、TDMS数据存储,关键点是数据量大的时候如何压缩存储,以及利用TDMS本身的属性设置(可以参见TDMS属性设置帮助),减小存储文件的大小。否则如果数据发送速率快的话,文件大小是很可观的,压缩数据的方式有很多种,我采用的是读取采样间隔长度的数据,提取最大最小值的方式。具体如下: 1) 中间数组存储采样间隔长度的数据;2) 提取中间数组的最大最小值;3)删除中间数组的采样间隔长度;4)将删除后剩余的数组重新赋值给中间数组,给下一次使用。3、报表输出比较简单,la bview已经将要用到的程序封装成一个个VI,只需要调用这些VI,

拼凑成你需要的报表模板形式即可。这一块参考的是方慧敏写的报表输出demo程序。4、 最近开始了上下位机的联调,涉及到了数据采集与数据处理,数据保存,数据导出四者并行执行最需关注的问题,数据同步的问题。全部数据传递都用全局变量需要在数据采集不到数据的时候让全局变量 输出空数据,这种方法显得有点麻烦,而且是多处对全局变量写。有可能会发生竞争。于是翻看labview相关书籍,关于同步技术方面的,其中队列和通知都是很好的方法,采用通知技术可以很好的解决这类问题。

致LabVIEW初学者的二十条忠告

致LabVIEW初学者的二十条忠告 1. LabVIEW是门程序设计语言,不是画图工具! 2. 不要以为LabVIEW很简单,设计个庞大工程难度不亚于C++! 3. 语言本身永远只是招式,请注意修炼内功:数据结构、算法、软件工程、数字电路等! 4. 多读书、读好书:《LabVIEW For Everyone》、《LabVIEW-Advanced Programming Techniques》! 5. 学习程序设计只有一种方法:读代码、写代码、读代码、写代码! 6. 不要以为读完一遍《LabVIEW For Everyone》你能有多大收获,请再继续读两遍! 7. 研读书上的每一个例子,他们往往是程序中的经典! 8. 对齐你的每一个控件和函数,多用弹出菜单-整理连线,不要让程序看起来乱七八糟! 9. 不要以为读完几本书你就能成高手,能力是在做项目过程中日积月累出来的!10. 看到一个LabVIEW程序,尽可能想象它在内存中是怎么执行的!11. 请重视DLL调用,并不是每个老板都舍得用Ni的产品!12. 多看LabVIEW User Manual,那里才是权威!13. 尽量减少创建全局变量,它会占用你大量内存和时间!14. 尽量将不必要的元素放在循环外!15. 尽量避免在循环内使用Build Array!16. 当速度及其重要时,尽量减少图表或图形的使用!17. 用Initialize给你的程序命名,不要用Chushihua !18. 记住:高手是长时间修炼形成的,不要指望一蹴而就!19. 拒绝浮躁,耐心看完书上每一节的内容!20. 编程是一种艺术,追求艺术极限!注:LabVIEW For Everyone译名《LabVIEW大学实用教程》电子工业出版社!补充:还有一本书,早看早好《The LabVIEW Style》,论坛上有下载:vihome/bbs/vie ... 6287&extra=page=1,描述LabVIEW编程风格的,权威类似C语言这些中的匈牙利命名法,听说有些大公司就因为LabVIEW在代码风格上很难统一,后期维护和代码重用很困难而没有使用LabVIEW的,这 本书在很大程序上可以弥补这个缺点。在自带的帮助中也有一些编程风格的说

中大型LABVIEW软件三层设计架构

通常一个VI若包含三、四十个以上的subVI(不包含LabVIEW本身在Functions中提供的VI)时,就可算是一个中大型的软件计划(software project)了。虽然比起软件工程中的一些作业环境软件(如Windows系列)或大型应用软件(如Word、Excel)等仍算是小工程,但其复杂性亦在一定程度之上,若没有事先想好在撰写程序时的一些规划与方法,想要完成这类中大型的软件绝对不是一件简单的事。尤其这类软件通常不是由一个人,而是由一个团队所共同完成的,因此整个软件的结构,就要能让团队中的每一成员都能清楚的了解,而且要够简单,才算是好的软件结构。以下将参考由Rick Bitter等人所着”LabVIEW Advanced Programming Techniques”,中之第4章的部分内容,介绍所谓软件计划中的三层式结构(the Three-Tiered Structure)的概念及其优点。 需要软件结构的主要原因,是当软件人员发展软件到某一阶段时,若没有计划或无意的创造了许多subVI,但各subVI之间有许多部分其实是重复撰写的;或各VI相互间呼叫时没有一定的纪律,使得在VI Hierarchy中所看到的各VI间的联机是错综复杂,像个盘丝洞一般,这将可能会使多人发展的软件计划增加所耗费的时间和可能出错的机会、减低程序的效率,以及增加debugging时的困难。为了改善上述的情形,所以要提倡三层式结构的概念。 三层式结构由上而下依次为:Main Level、Test Level和Driver Level,这种结构是由经验中得来的,在多人发展的软件计划中显得简单明了,当大家都能遵照这个结构来写程序时,这种结构就可以充分显现出它的优点。那这三个阶层到底如何区别呢?以通俗的比喻来说,假设我们如果要组织一个篮球队参加全国比赛,每个球员要练习基本动作及体能,如何跑、如何跳、手脚该如何放置才是正确位置等,这就相当于系统中Driver Level所做的事情;接下来,将各球员组合练习某一套防守或进攻的战术,如二三区域联防、人盯人防守,每个人该在什么位置才能正确接应等,则像是T est Level中一项项的test了;而最后比赛时,场上的战略运用,包括何时要用什么战术组合、如何更换球员、何时喊暂停、终场前是不是要故意犯规或采拖延战术等等,对照过来,就像是在Main Level中,如何将T est Level中各test 做最有效能的整合与排列组合等的工作。 简单来说,Driver Level包含了程序与所有仪器、组件、马达或其它应用软件的沟通、控制等较低阶的事情,使其可完成某一项基本的动作,例如初始化、马达走到home位置、雷射以设定的能量及频率发射光束???等。可注意到我们在这边所说的driver,并不像一般在别处所称驱动程序的那种driver那么低阶,真正最低阶的工作还是要有现成的VI来帮忙才行;在Test Level中,则是如何连接各个Driver VI的基本动作,使可做完出一套连续、有意义的流程,来执行某项测试,例如让手臂由A点走到B点,下降夹取一个螺丝,再走至C点装到某面板上,然后回到A点等待,类似这样控制一个流程的进行,便是Test VI的工作内容;Main Level则包含了使用者接口(User Interface)或称人机接口(Man-Machine Interface) ,目的是整合各项测试和例外处理(Exception Handling)等,将它们以适当的顺序及流程组合,很容易地让使用者操作。 当一个软件计划严格的遵照上述的三层结构来撰写时,最大的优点是可使程序代码的再使用(code reuse)达到最大化,在不同的T est VI中,可重复使用相同的Driver VI;而在不同程序的Main Level中,又可重复使用相同的T est VI,这将使得程序维护或修改的时间与精力大幅减少;同时当我们已有一个程序的样板(template)后,可增加软件版本更新的速度。另一个很重要的好处是,当我们在撰写某一个level中的程序时,并不需要关心在另一个level中有什么其它的程序是如何执行的,而只要专注在自己的这个level的程序上就可以了,这使得由团队来共同完成一个大型计划的工作变得容易许多。 以下将依Driver Level、Test Level、Main Level的顺序,来介绍在各level写程序时的原

相关文档