labview中怎么停止事件中的while循环,停止后还可以继续出发该事件while里面是tcp通信的接收数据循环编程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了labview中怎么停止事件中的while循环,停止后还可以继续出发该事件while里面是tcp通信的接收数据循环编程相关的知识,希望对你有一定的参考价值。

我的编程部分如下,服务端一直侦听等待,我这个程序没有用,停止不了,望高手指点迷津,谢谢
上面那个是客户端截图,下面是服务端

LabVIEW中的事件结构一般不是这样用的。关于事件结构的用法,可以参考以下链接中的资料:
http://www.gsdzone.net/index.php/Home/Index/Index/index/cat_id/1843881389/t/3/did/1691
http://www.gsdzone.net/index.php/Home/Index/Index/index/cat_id/1843881389/t/3/did/1679
如果程序里面有事件结构和While循环,可以考虑状态机结构或者基于队列的生产消费者结构。追问

那请问,能不能解决事件结构和通信一起的编程,我把while循环放到事件结构的外面运行时事件结构就没有用了,一直钻在while循环里,按下while循环里的停止按钮都退步出来,这要怎么解决?

事件结构的Timeout功能用于上面的编程能跳出while循环吗?跳出来了以后还可以触发其他事件的运行吗?具体怎么编程啊?我对于超时功能不了解?能帮忙求解下吗?求截图,大神,非常感谢

追答

如果你的菜单刷新只需要点击一次刷新一次,那不用在事件分支里面再放一个循环,去掉循环就可以了。并且事件结构一般用法是在外面配合使用循环结构。如果你看了之前给你的两个链接中关于事件结构的用法说明,应该很快就可以理解了。

参考技术A 我看到的写labview经验类的文字都是不把循环放事件结构里的。
你“服务端”的内容可以放进一个条件结构,然后用你的“菜单刷新”作为条件,为T时运行,这时候你的stop也可以用得上了,然后“服务端”结束的时候把“菜单刷新”也置F。
参考技术B 楼上正解,状态机里面是不可以加循环的。

JavaScript 中的反向 while 循环如何知道何时停止?

【中文标题】JavaScript 中的反向 while 循环如何知道何时停止?【英文标题】:How does a reverse while loop know when to stop in JavaScript? 【发布时间】:2012-03-15 09:13:28 【问题描述】:

在 JavaScript 中,我最近发现了如何反向 while 循环更快。

我见过他们这样的形式:

var i = someArray.length;

while (i--) 
  console.log(someArray[i]);

我对此进行了测试,一旦它通过整个阵列就停止了。

一旦完成数组,它如何知道何时停止?

【问题讨论】:

一个article,以防你想知道什么是“真实性”。 @OnesimusUnbound 是的,这篇文章很有帮助,谢谢! 【参考方案1】:

while 循环每次循环都会计算括号内的表达式。当该表达式达到错误值时,循环将停止。

错误值的示例是:

false 
0  
undefined  
NaN
null
""

在这种情况下,i 的值将在每次循环中递减,当它达到0 的值时,循环将停止。因为它是一个后递减运算符,所以在递减之前检查表达式的值。这意味着内部循环将看到从 someArray.length - 10(含)的 i 的值,它们是该数组的所有索引。

您的代码示例:

var i = someArray.length;

while (i--) 
    console.log(someArray[i]);

创建与此相同的输出:

for (var i = someArray.length - 1; i >= 0; i--) 
    console.log(someArray[i]);

【讨论】:

这些例子都是:)【参考方案2】:

i-- 达到 0 时,循环停止。

一旦while ( ... ) 中的表达式计算为假,循环就会停止。 由于i 是一个正数(长度),并且在递减,它会在某个点达到零。

在布尔上下文中,零转换为false,确保循环在某个点停止。 因为i--返回的值是先减量,所以当循环停止时i实际上是-1

【讨论】:

说“0 等于假”不太正确,最好说 0 的计算结果为假。 严格来说,零在布尔上下文中不存在。发生的事情是abstract ToBoolean function 将0 转换为false 在 JS 布尔上下文(“世界”)中,我们只有两个值:truefalse(这是我对“上下文”一词的解释)。我错过了什么吗? 看起来我们在谈论不同的波长。如果在布尔上下文中只存在 truefalse 而没有其他内容(如您所说),那么在该上下文中引入零是没有意义的,不是吗? @pimvdb 现在,我看到了您的问题。我的意思是:“零,在布尔上下文中使用,转换为假。” (方法(“零”)=false,因此我的“零等于布尔上下文中的假”语句)。【参考方案3】:

每次循环运行时,都会检查i---- 告诉 Javascript 将 i 减 1。最终,i 将下降到 0,相当于 false。此时,循环停止。

【讨论】:

【参考方案4】:

在黑暗中试探是因为 0 在布尔表达式中的计算结果为 false。 0 == true 返回 false 0 == false 返回 true

请注意,如果您从 -1 开始,它将无限循环。

【讨论】:

【参考方案5】:

while 循环在达到虚假值时停止计算。 0 是一个假值,恰好是数组的第一个索引。 之所以 for 循环在 i 为 0 时仍然循环是因为当你做一个递减表达式时,返回值实际上是操作前变量的值。

let i = 10;
let j = i--

console.log(i) // 9
console.log(j) // 10

因此,当您的 while 循环变为 1,然后 for 循环中的条件递减“--” i 变量时,返回值为 1,这是真实的,但实际上,当您的其余循环访问 i 的值时它是 0。

【讨论】:

以上是关于labview中怎么停止事件中的while循环,停止后还可以继续出发该事件while里面是tcp通信的接收数据循环编程的主要内容,如果未能解决你的问题,请参考以下文章

labview停止循环为啥波形会清除一次

labview中的tcp通信用移位寄存器还是索引

LabView While无法跳出循环?

LabVIEW里怎么边送模拟数据边操作?

LABVIEW生产消费者循环结束问题!

labview条件结构怎么比较两个数大小?