延时关闭子程序
时间:12-13
整理:3721RD
点击:
项目上需要做一个延时开关,要求能够即时开,延时关,延时时间可以设定。
碰到一个问题,由于判断延时是否进行,需要判断控制灯和显示灯的当前状态,只有在
控制灯关,显示灯开的状态下才进入延时,作为一个程序没有问题
但是做一个子程序的话,必须要给定一个当前灯的状态给子程序,如果子程序循环套用
,比较麻烦,如果在子程序中采用本地变量来记忆当前指示灯状态,
主程序调用一次没有问题,如果同时调用多次,这个本地变量值就会出现混乱
,虽然可以通过本地变量数组来解决,但是需要在主程序调用时指定延时开关所用的本
地变量,很不方便。希望能够实现只要输入开关控制和延时时间两个量,就可以实现延
时关闭输出的功能,请高手指教。
.84
碰到一个问题,由于判断延时是否进行,需要判断控制灯和显示灯的当前状态,只有在
控制灯关,显示灯开的状态下才进入延时,作为一个程序没有问题
但是做一个子程序的话,必须要给定一个当前灯的状态给子程序,如果子程序循环套用
,比较麻烦,如果在子程序中采用本地变量来记忆当前指示灯状态,
主程序调用一次没有问题,如果同时调用多次,这个本地变量值就会出现混乱
,虽然可以通过本地变量数组来解决,但是需要在主程序调用时指定延时开关所用的本
地变量,很不方便。希望能够实现只要输入开关控制和延时时间两个量,就可以实现延
时关闭输出的功能,请高手指教。
.84
如果你是问labview里面怎么做,我不知道.
如果是普通程序,在子程序里面把变量定义为static的.这样的变量值每次调用函数后产生
的变化会保留.
.70
关键是如果主程序有两个地方同时调用子程序的话,这个本地变量就会出现变化,
不能够保证运行结果正确了
.84
lv的examples中有历程
.68
你的问题不清楚.
我的理解是你希望正在延时的时候关闭命令无效,是不是? 那就设置第二个信号量就是了.
比如叫bDelaying. 然后比如,
if((bCommand == TURNOFF) && bDelaying) return;
延时结束的时候设回false就是了.
.70