防止LabVIEW连续轮询串口

更新 Jan 11, 2019

适用于

Software

  • LabVIEW Full

Driver

  • NI-VISA

问题详述

 

当我从串口读取数据的时候,LabVIEW连续不断地查询串口直到串口接收到数据为止。这增加了处理器和资源的占用,导致程序中的其他循环不能流畅地运行。我应该如何防止LabVIEW连续不断地查询串口呢?

解决方案

这个问题可以通过使用VISA事件来解决。通过使用 VISA启用事件VIVISA Enable Event VI ),当串口接收到字符串的时候,VISA会产生一个事件。在while循环中,我们可以在VISA读取VISA read)函数前面放置一个VISA等待事件VISA Wait on Event) 函数。

这样,只有当串口接收到一个字符的时候VISA读取VISA read)函数才会得到执行。没有数据到达串口的时候,调用VISA等待事件函数的线程会一直被阻塞着。因此,VISA读取 函数只有在端口上有数据的时候才会被执行。通过指定待读取的字节数为1,我们可以确保只有在数据可用的时候才查询串口。注意在程序停止前需要执行一个VISA禁用事件Disable VISA Events )函数。 

这些函数可以在如下LabVIEW函数选板中找到:: 仪器I / O»VISA»高级»事件处理(Instrument I/O»VISA»VISA Advanced»Event Handling

相关信息

有关VISA等待事件VISA Wait on Event) 函数的更多信息,请参阅LabVIEW帮助文档。

本文是否有帮助?

无帮助