LabVIEW使用通道线在并行代码段之间传递数据
通道线是LabVIEW中的一种连线,表示两段并行代码之间之间的异步通信,但不强制规定执行顺序。通道线的用法类似于由一个循环写入并由另一个循环读取的引用句柄或变量的用法。与引用句柄或变量不同的是,通道使用连线直观表示数据传输。
下图说明,使用通道线创建的程序框图可实现与队列引用句柄相同的功能。
每一条通道线至少必须具有两个端点:一个写入方和一个读取方。端点是代码中发生数据交换的位置。写入方端点向通道中写入数据。读取方端点从通道中读取数据。使用通道线将写入方端点与读取方端点相连,即在并行代码段之间形成异步数据通信。
可使用LabVIEW提供的下列通道模板创建应用程序。每种模板表示不同的通信协议。可根据通信需求和应用程序选择下列模板:
LabVIEW | Real-Time模块 | FPGA模块* |
*对于每种支持的通道模板,FPGA模块仅支持一部分端点。 |
右键单击接线端或连线并选择创建»通道写入方或创建»通道读取方,可创建通道写入方端点或通道读取方端点。在出现的“选择通道端点”对话框中,可单击切换读取/写入在写入方和读取方端点之间切换。从接线端创建端点时,通道模板被初始化,数据类型即为其传输类型。
所有串流通道均不可分叉,即,只能将单个写入方端点连接至单个读取方端点。其他所有通道均可分叉,允许同一通道上存在多个写入方或多个读取方。
通道的调用方程序框图控制通道运行。调用方程序框图是指包括通道所有端点或调用这些端点的所有节点的最低层程序框图。
调用方程序框图开始运行时,通道进行初始化。如任一端点的最后一个元素?或中止输入为TRUE,通道关闭。如通道关闭,该通道的后续写入操作将被忽略。调用方程序框图再次开始运行时,通道重新初始化。调用方程序框图可以是结构节点、VI的顶层程序框图或调用当前顶层VI的更高层程序框图。
下图中,通道的调用方程序框图是该VI的顶层程序框图。调用方程序框图开始运行时,通道进行初始化,即,顶层VI每次运行时或作为子VI被调用时,通道均进行初始化。
下图中,通道的调用方程序框图是While循环。While循环开始运行时,通道进行初始化,即,While循环每次迭代通道均进行初始化。
下图中,通道的调用方程序框图不是顶层VI,而是比当前顶层程序框图更高层的程序框图。更高层的程序框图开始运行时,通道进行初始化,即,更高层的程序框图每次运行时或作为子VI被调用时,通道均进行初始化。通道并不作用于While循环的迭代来进行初始化,因为While循环中不包含通道的所有端点。
在上述所有通道实例中,写入方端点向通道写入前三个值,但忽略最后两个值,这是因为当数组中剩余未写入元素数为2时,最后一个元素?输入为TRUE。
创建通道的读取方或写入方时,选择带中止功能,创建出的端点将包含一个中止布尔输入端。为TRUE时,中止接线端将提醒所有端点产生一个中止?输出。任何端点都可以发送中止信号。如果有包含通道线的循环,请将所有循环连接至端点的中止?输出端,当端点发出中止信号时,循环停止。该情况下不需要本地变量。如果使用副本端点,则原通道必须提供中止值。副本端点停止内部循环,并将中止布尔值发送至副本通道。
使用通道线具有下列优势:
通道线不需要用户像使用队列一样创建及销毁引用句柄。
通道线在程序框图中需要的节点数少于队列。
通道将可显示数据的来源和去向,比引用句柄和变量更为直观,且便于调试。
通道线可向数据中加入停止和中止信号。与使用引用句柄和变量创建此类信号相比,使用通道线可使应用程序更少出错。
通道线允许用户创建协同程序,以实现其他编程语言中闭包的功能。
上文中提到的例子和资料,均在word中的附件里,可点击下载。
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目问题,可联系我们。
楼主最近还看过