什么时候考虑多线程
这里截取了标准modbus库里面的内容,mutex在有线程使用的情况下,其他线程是不能占用该通讯资源的。
因此在使用modbus标准库资源的时候我们可以在任意线程操作串口资源。
软件中什么时候创建一个线程啦:这里简单举个例子,标定零点,但是零点是一个很浪费时间的操作。
于是我们把零点标定单独提出来,可以看见用户操作的信号通过全局变量传递给其他线程运行。
这里为什么要用全局变量啦:这里给出解释如下。
另外对于响应快的事件我们直接放到事件结构就行:
列如读取一个单一变量:
事件结构太多如何处理
在我第一次写这个软件的时候没有考虑你们多情况,写完之后发现有很多事件结构,让我软件维护起来很不方便,为此和同事讨论之后用了子VI的方式来处理。
改进之后:
将子面板嵌入到主面板中,这里有六个一样的子面板。
子面板的事件结构变得很少。
然后配上6个相同的子面板
这样整个软件变得更好维护,而且不在冗余,但是这里要注意的一点事是,虽然在该面板中有好几个事件结构,但是再执行某个事件结构的时候,想操作其他事件结构是不行的。
下面讲一下复杂报表的制作。
图中的数据区域是可变的,如图。