在LabVIEW实时系统中应该怎样使用RT FIFO来同步传输字符串类型数据?
主要软件:
主要软件版本: 7.1
主要软件修正版本: N/A
次要软件: N/A
问题: 我在LabVIEW实时系统中希望在时间确定性循环和时间非确定性循环之间交换数据。我想使用带RT FIFO功能的共享变量或者RT FIFO VI,但是它们不支持字符串类型数据。有什么解决方法么?
解答: 为了确保时间确定性任务的执行,在时间确定性循环中不应该包含如全局变量和LabVIEW队列等任何在时间非确定性的循环中的运行需要共享资源。因为这些共享资源的被占用会导致时间确定性循环中的任务的等待,从而导致时间确定性任务的中止。带RT FIFO功能的共享变量和RT FIFO VI提供了一种不可中断的数据传输方式。
通常来讲,我们不推荐在时间确定性循环中使用字符串类型数据。RT FIFO不支持字符串类型的主要原因是字符串长度的改变会导致内存空间的重新分配,而内存分配会引起循环之行的不确定性,因为LabVIEW实时系统的内存管理器是一种共享资源。所以应该尽量避免在时间确定性循环中使用长度改变的字符串类型数据。
但是,如果您一定要使用字符串类型的话,那么请务必首先用
String to Byte Array函数把字符串转换成无符号字节数组,这个函数可以在
Numeric >> Conversion面板中找到。转换之后的无符号字节数组就可以通过RT FIFO传递了。当您在主机中的RT FIFO中读到这个数组时,您就可以调用
Byte Array to String函数来还原出原来的字符串
相关链接: Developer Zone Tutorial: LabVIEW Real-Time Memory Management
附件:
报告日期: 10/07/2006
最近更新: 02/14/2008
文档编号: 3HAG4LUW
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.