anjiu 发表于 2007-6-5 15:05:12

关于用labview程控仪器的一些灵活性问题

      比如说你已经用labview编好了测试软件,并且写好了配置文档
      但是在实际应用中,你可能会遇到先执行哪一步,后执行哪一步,这些步骤能否在labview中实现,也就是我之前就发帖提到的关于描述文件和配置文档的问题
      准确的说就是你自己先定义好描述文件,配置文档,甚至还有一个执行文件
      用户只需看懂描述文件中的定义,修改相应的配置文档,再在执行文件中根据自己的需要进行编辑
      打个比方:你编好软件去控制AgilentE4407B频谱分析仪,可能你需要在不同模式下进行测量,或者你第二步测量需要用到第一步的结果,所以这些最好可以在执行文件中详细描述出来,并且直接调用就行,而且当你需要添加新的参数,也直接在里面修改就行
      这样相当灵活,方便用户使用,不知道这里面有人做过这样的功能么?
      本来如何加载配置文档,以及在不修改程序的基础上添加新的参数,这些功能我都可以实现,但是描述文件以及执行文件该如何去链接一直困惑着我,或者说labview里面有查询文本文件的功能吗?
       希望大家能够给我点提示,非常感谢!

lgh269 发表于 2007-6-6 11:08:05

看你说到的相信你对LV也有一定的功底啦,我就简单的说吧
你的意思也就是说做个脚本文件,可以通过修改这个件,来改变程序的执行情况
首先你要规划好你的程序,然后将须要改变的列出来并做个归类
将这些规划写入到配置文档里,通过LV读取出来做相应处理使用即可
例如,想让程序的执行顺序按配置文档进行,就可以使用状态机按配置信息来做,
再例如你现用AgilentE4407B,可能以后换同类的其它型号,有些指令难免会变,你就可以将这些写入到文档,通过程序处理得到须要的

anjiu 发表于 2007-6-6 11:27:30

回复 #2 lgh269 的帖子

您好!
非常感谢你的回复,我还只是个初学者,让你见笑了!
嗯,你说的我有点明白是什么意思了
好,去试一下
有问题再向您请教
谢了啊

anjiu 发表于 2007-6-7 17:51:28

回复 #2 lgh269 的帖子

您好:
   非常感谢您的回复,对我启发很大,不过我现在觉得还有一个问题,那就是如何在事先不知道用户执行顺序的情况下实现呢
   意思就是,比如说你已经编好了你的软件,拿给别人用,别人只需要改变你的脚本文件,就可以随意按照他自己的想法去编写,而且是在不改变源程序的情况下。
   这种功能可以实现吗?比如说用户需要改变一个参数测三组数据,他想直接对照写一个执行文档,然后加载进去,就能得到他想要的结果
   这样能否实现?
   还有你说的在配置文档里面设置状态机,除非我知道用户想以哪种顺序执行,我才好设置,是这样吗?
   非常抱歉打搅你宝贵的时间,还请帮忙指教一下,谢谢!

[ 本帖最后由 anjiu 于 2007-6-7 17:52 编辑 ]

zhuyuedefeng 发表于 2007-6-20 11:50:58

anjiu,我现在也遇到了这个问题,请问你能不能传一个例子给我看一下。谢谢!

飞雨天 发表于 2007-6-20 12:59:52

回复 #4 anjiu 的帖子

其实呢,状态机也不只有一种的,上次我本来想在我给你回的帖子后面加下的,但我想你应该能想到,或者说自己懒,就没动手。。。。
要实现你说的功能,其实很简单的。。。比如你在你的脚本上写着这样的命令:
step1
step3
step8
step4
.......
那么,你把这些基于ascii的信息读取进来,做成一个1D的数组,元素0对应step1,元素1对应step3........,这样,你就得到一个数组了。。。。接下来,你把数组连接到一个for循环,用for的自动索引,for里面是case结构,来依次处理你的问题,不知道说明白没。


或者纯粹用labview template里面的状态机也是可以的,它下一个状态是在当前状态里改变的,那么你可以读文件指定位置的数据进来,不也是可以按照自己的脚本来改变执行次序了吗?

[ 本帖最后由 飞雨天 于 2007-6-20 13:21 编辑 ]

anjiu 发表于 2007-6-21 14:24:21

回复 #6 飞雨天 的帖子

感谢飞雨天大哥的指导!

其实偶想实现的脚本文件是这样的,比如说:

Test case1
Test case2
Test case3
。。。。

1、Load configfile
2、Judge/Timer
3、Save/Exit
4、Fail/Pass

1、。。
2、。。。

类似于这样的脚本文件,labview可以实现吗?
你说的通过for+case结构的索引方法,确实可以实现部分功能,但对整体测试脚本来说
像上面我举的那个例子,文档内部关键字的索引调用,可以实现吗?

飞雨天 发表于 2007-6-21 15:12:26

可以啊,就是对file进行数据读取和对读取进来的数据进行下分析罢了,提取出有用的信号,建议做成子vi的形式

anjiu 发表于 2007-6-21 17:08:47

回复 #8 飞雨天 的帖子

“对file进行数据读取和对读取进来的数据进行下分析罢了”?

其实我的意思就是怎么分析,你可以把脚本文件里面的内容读出来,但读出的这些内容都是独立的
而实际上我写这脚本文件时,下面和上面的内容都是相关的
比如说:

Test case1
Test case2

load configfile1
Run
Save
Fail/Pass (Pass就继续执行,Fail就跳出来不执行下去)   

load configfile2
Run
Save
Exit

这样的脚本文件,在labview里面如何实现呢?

kinf-alishan 发表于 2007-6-22 08:20:55

这个好象可以用labview中的选择条件分支来完成,也要用刚才飞鱼老大说的那种数组绑定和解绑定来实现,而且这个也要建立在你的所有的case结构是确定的才可以,至于脚本的语言是可以自己定义的

wdyjz 发表于 2007-6-22 10:10:59

做成子vi的情况下使用vi server的方式,更灵活,而且占用资源少,每个任务你只要将vi文件路径赋予它就可以了,可以实现顺序结构或者跳转,当然了任意跳转的话还是状态机方便些,当然也就是一个case+while loop.

anjiu 发表于 2007-6-27 10:22:27

回复 #6 飞雨天 的帖子

把这些基于ascii的信息读取进来,做成一个1D的数组,元素0对应step1,元素1对应step3........,这样,你就得到一个数组了

这个怎么实现???
开始以为很简单,但试过几次都不行
是以行为单位吗?还是其他什么方式实现的

该问题我已经解决了
不过这是在事先知道脚本文件内容的情况下实现的
但是
实际中,脚本文件是使用者定义的
内容未知,这样的话,数组大小如何定义呢

[ 本帖最后由 anjiu 于 2007-6-27 18:12 编辑 ]

飞雨天 发表于 2007-7-2 18:17:54

回复 #12 anjiu 的帖子

先传给你读取文件的部分,我周末有点事情,没到公司来,不好意思。。。


居然没人看,嘿,来得及补上,结果放在array5里面了,然后自己处理下

[ 本帖最后由 飞雨天 于 2007-7-2 20:23 编辑 ]

飞雨天 发表于 2007-7-3 09:30:24

昨天这个小程序花了我3小时,当然主要是一边写一边和MM聊天的缘故。。。
不过回去后越想越不对,其实你的配置文档应该改成下面这样结构,比较好处理些:

每一个sub sequence就对应一个单独的文件,命名比如是sequence1.dat这样的,然后写一个main.dat,里面描述你调用sub sequence的次序。

换句话说就是把你原先文件中的每一个节分开成单独的文件,这样处理起来就方便多了

anjiu 发表于 2007-7-3 10:01:01

回复 #14 飞雨天 的帖子

呵呵
老大太牛了,这个问题困扰我很久了
先回帖子感谢你,再去慢慢学习你的程序
嗯
分开成单独的文件是好处理些,但老板希望脚本文件是那样的格式
所以先这样试试
非常感谢你无私的教导!
页: [1] 2
查看完整版本: 关于用labview程控仪器的一些灵活性问题