上位机在运行过程中可能面临好几件需要同时处理的事情,在嵌入式编程中可以理解为中断,在C语言编程中,这个叫做多线程。
举个例子,我制作了一款上位机,不仅能满足基本的数据接收、处理、显示功能,在数据不断上传的过程,我还能通过上位机进行别的操作,例如手动保存当前数据(若是设置了自动保存是例外一种情况),这时候就需要在保证数据接收的同时,程序还能完成别的操作。
为了满足不同功能同时实现的要求,就需要多线程执行程序。这个有点类似于在跟妈妈商量晚上吃什么的时候,手机还能给朋友发消息,一次干两件事。
在LabWindows/CVI中,有详细的多线程操作函数。详细介绍请点击官网网址,内容十分详细。LabWindows™/CVI中的多线程技术 - NI
以下基于我个人实际使用情况,经常用到的三个函数,目前我只停留在依葫芦画瓢的阶段,对于函数理解不够深入,之后我完全理解了再写一篇详细的帖子。
首先是创建一个线程,来运行需要循环执行的程序。下图函数即为LabWindows/CVI中的创建线程函数,直接使用即可。但是要添加头文件,具体是哪个会在编译过程中提示,可以自动添加。函数一共包含四个变量,第一个和第三个示例如此,重点说一下第三个和第四个变量。第三个Run变量为需要执行的子函数,名字按个人习惯编写,我一般将需要不停循环执行的程序放在新建的线程里执行,保证上位机主函数空闲,等待指令。第四个变量functionld可类比为线程的号码牌,在程序执行过程中可查询该号码牌得知线程是否存在,可对该号码牌代表的线程进行别的操作。
创建线程后,该线程里的程序进入自己的小房间,不影响其他程序运行。但是关闭上位机时,记得释放线程、关闭线程。需要用到如下两个函数。
以上三个函数能够满足我平时使用需求,C语言还有别的多线程实现方式,大家可以自行搜索学习。