Labview并行运行的特点带来了效率的提升,同时也造成了“事与愿违”!
假设一个场景,用户从配置文件中读取一个初始值,然后进行运算。
下面就用简单的程式模拟此场景
手动输入一个值赋值给x,点击运行,得到x+y的运算结果
x + y = 10 + 5 = 14 ? //赋值前的 x = 9
为什么会计算错误呢?
就是因为Labview并行运行,程式运行时,局部变量x已经默认赋值为9,等待加法运算中另一个值y的输入,同时进行赋值运算,将10赋值于x,此时x的局部变量的值已经改不了了,如以下运行时监控:
解决方案也很简单,就是采用顺序结构,将运算放在赋值之后:
在之前编写串口助手时,也遇到过这种情况:
通过配置文件获取串口地址,然后配置打开串口,调试过程中,发现偶尔串口打开失败,调试好久才发现,是因为串口地址赋值失败,就是因为并行运行时,局部变量已经优先获取到默认值
以下再介绍下顺序结构的另一种形式,层叠式顺序结构,来解决此问题
右键顺序结构,选择 替换为层叠式顺序,然后右键 在后面添加帧
同时,还可以右键 添加顺序局部变量,将前一帧的结果传递到下一帧,