请帮忙看一下这个程序,谢谢了
还有,就是如果连续点击show,只有第一次显示正确的参数,之后就不显示了,我想使option的值在任意时刻都一直能被每一个事件调用,该如何操作呢?例如,每点击一次show,都能显示正确的参数。
另外,在timeout里面的indicator的值一直不变,是因为timeout里面的事件没有发上么?
p.s.附件中question_option_change.vi是主VI,1.vi是子VI(即option)
1. 建立一个簇类型全局变量,每个你要在1.vi中设置的参数都对应其中一个分量。在
1.vi中,在进入循环之前加入从全局变量读取参数值然后初始化每个控件的代码,在循环
推出时判断ok值,若为true则表示按下了ok按钮,此时把参数写回全局变量……这样每次
打开1.vi都能确保控件值是保存在全局变量中的当前值
2. 在对按钮show响应的事件分支中,没有为右侧的隧道(tunel)赋值,这样第一次按下
show按钮之后,移位寄存器中的值被簇的默认值覆盖掉了……
3. 超时事件必须在事件结构左上角超时端子接入以毫秒为单位的超时时间……
btw: 你的程序结构安排得很混乱啊,建议深入理解事件结构的用法之后再进一步编写程
序
另外建议不要对多个控件使用相同的label……否则很多情况下会造成不必要的混淆
还有你的1.vi是直接修改了prompt user for input吧?这样也不太好,最好自己重新建
立子VI,里面用事件结构进行安排
多谢指点!
我是刚学习labview,很多东西都不会
我看的参考书里面都没有event structure,我是照着example改的,所以结构比较乱:〉
其实要实现的功能很简单,就是读取一个wav文件,对其进行时频分析和显示,
我初步的思路是:
event_open:打开文件,进行时域显示
event_psd:频域分析及显示
event_option:参数设置
event_scan:对信号进行扫描
event_save:保存扫描结果
event_exit:退出
不知道这个结构复杂不?有没有什么更好的方法?
另外,我还不会用全局变量,有什么例子可以参考么?
您说的“超时事件必须在事件结构左上角超时端子接入以毫秒为单位的超时时间…”是什么意思啊?
再次感谢您的指点!
LabVIEW从6.1开始有的事件结构,找新一点的书来看看
这些功能按钮最好每个按下之后都打开一个对话框,在其中实现你要的功能,这样一来“event_save:保存扫描结果”最好放到“event_scan:对信号进行扫描”子VI内部
这种图形界面的程序,结构安排是否合理我觉得几乎完全取决于你对事件结构是否理解透彻……建议完全弄懂
全局变量和c语言的具有全局作用域的变量相似,到处都可读可写
事件结构左上角超时端子,看看事件结构的帮助吧,改值默认为-1表示永远不触发超时事件,你自己接入1000的话,每秒钟产生一次超时事件
还是不会全局变量……
能不能给一个简单的例子呢?或者example里面有的?
现在后面板建一个global变量,双击打开,编辑完了保存,跟调用子vi一样调用它,example里也有,搜关键字global之类的就可以了
用局部变量……
这些都是很基本的概念啊……
hehe
我学习labview不到3周,现在做毕设要用,所以很多都不懂:〉
先利其器吧呵呵
找本好点的书看看,入门的话推荐杨乐平那本
除了高级程序设计外的那本
……
还有哪本啊?有电子版么
买or借……
书名是什么啊
LabVIEW 程序设计与应用 · 杨乐平,李海涛,肖相生等编著
最新的是第二版