网络变量(NetWorkVariable)探究(一)

本文详细介绍了网络变量的使用,包括On-Demand和Scalable两类,及其对应的读写类如NetworkVariableReader和NetworkVariableWriter。网络变量可用于不同程序、应用之间的数据交互,支持多种数据类型,并提供了NetworkVariableBrowserDialog组件用于浏览网络变量。此外,文章还探讨了.NET框架下数据绑定和与LabVIEW、LabWindows/CVI的数据交换。
摘要由CSDN通过智能技术生成

这里写自定义目录标题


第一部分 网络变量特征概述
在Measurement Studio的网络变量.NET类库中有三个命名空间:NetworkVariable, NetworkVariable.WindowsForms和NetworkVariable.WebForms。NetworkVariable命名空间包含网络变量核心功能函数,比如读、写功能。NetworkVariable.WindowsForms 和 NetworkVariable.WebForms命名空间包括网络变量的Form和WebForm控件绑定功能。
你可以通过网络,使用网络变量类库来传输现场测量数据,你也可以通过网络变量在不同的数据平台之间交换数据,如Measurement Studio, LabVIEW, LabWindows/CVI或者其他支持NI-Publish Subscribe Protocol (psp:)的平台。
相比于Datasocket,NetworkVariable有更好的性能和可扩展性。参考Using the Network Variable .NET Library to Exchange Data with LabVIEW and LabWindows/CVI来获取更多关于使用网络变量的优势的信息。
网络变量从发布在服务器的变量进行读写操作。为了引用网络变量,你必须传递一个地字符串给读写类的构造函数,这个字符串代表了网络变量的地址。地址字符串的格式有点像网络共享文件的名字,格式是不区分大小写的(is not case-sensitive)。例如,你可以在windows上写\machine\myprocess\item,这个例子中,machine是网络变量宿主的服务器的(hosting the variable)计算机名称或者IP地址或者是有权限的域名;myprocess包含网络变量文件夹或者变量集;item和网络变量的名称。在这个例子中,myprocess描述了一个网络变量进程,你可以把你的网络变量放到不同的进程中。下面的例子表示了一些有效的地址字符串:
• \localhost\testlib\double
• \localhost\process\test
• \testmachine\system\doublearray
你可以隐式(implicitly)或显示(explicitly)地创建和配置网络变量
隐式创建变量
你可以通过连接一个系统保留进程的网络变量来隐式地创建网络变量。当一个写方(writer)连接网络变量的时候,一个网络变量就隐式地自动创建了,比如你使用NetworkVariableWriter来连接一个地址为\localhost\System\MyVariable的网络变量,如果这个变量不存在,它就会自动被创建。当所有网络变量客户端断开连接的时候,隐式创建的网络变量会被服务器自动删除掉。隐式变量的类型总是Object型,从而确保它可以包含任何数据。隐式变量在任意时刻只允许一个写连接,任何其它尝试的连接都会导致写方抛出NetworkVariableException错误。隐式变量不能被服务器缓存,但是NetworkVariableBufferedWriter or NetworkVariableBufferedSubscriber可以执行客户端缓存(can perform client-side buffering of an implicit variable)。<不知道怎么翻译>
显示创建变量
你可以通过编程使用网络变量API或者标准的分布式系统管理应用程序显示地创建变量。通过手动创建变量,你可以得到更多的选项,比如服务器缓存、设置变量的数据类型。甚至在没有活跃连接时你都可以显示地配置网络变量。
 通过编程创建变量:你可以在网络变量API中使用下面的类来编程创建网络变量:ServerProcess, ServerProcessInfo, ServerVariable, and ServerVariableInfo。
 通过NI分布式系统管理器(NI Distributed System Manager)创建变量:参考NI Distributed System Manager的帮组文档关于 Creating, Modifying, or Deleting Shared or Network Variables来获取更多关于如何显示创建网络变量的信息。
Reader 和 Writer 类
下表列出来网络变量.NET类库的readers和writers已经他们的使用情况

<上表中关于On-Demand和Scalable的意思,文档中是这么说的:>
On-Demand: Use these classes to make synchronous (blocking) calls across the network that do not return until the read or write operation completes and the server has been updated.
<意思是说:使用这些类来执行同步调用,它会阻塞进程,直到服务器更新了数据并且写或者读操作完成,函数才会返回 >
Scalable: Use these classes for applications that require communication with a large number of network variables and to transfer data at high speeds without adversely affecting network traffic or application performance.
<意思是说:这些类适用于需要进行大量、高速数据传输的情况,可以避免网络阻塞>
读写类的定义
网络变量类库包含以下5中读/写类:
 NetworkVariableReader—这个类的功能是按要求(on demand)读网络变量,服务器不会自动发送数据到你的程序。相反,你要调用ReadData函数来从服务器读取变量数据。ReadData会阻塞程序,直到一个值可以从网络中读取。ReadDataAsync不会阻塞程序,当使用ReadDataAsync时,必须使用ReadDataCompleted 事件来获取读结果。<这里意思是说: ReadDataAsync是异步调用,它为了不阻塞进程,不会马上得到数据,要想真正获取数据,还应该使用ReadDataCompleted来得到>
 NetworkVariableBufferedSubscriber—这个类从一个客户端的缓冲区中读取数据。服务器会自动发送新的数据到你的程序中,这些数据存储在缓冲区内。当服务器推送数据到NetworkVariableBufferedSubscriber时,数据就被放在了客户端的缓冲区内(the data is put into the client side buffer)。如果你读取数据比服务器推送数据慢,并且你又不想丢失任何数据的话,就可以使用这种模式。使用ReadData函数来获取缓冲区的下一个数据。你可以使用ItemCapacity来怎加或者减小客户端缓冲区的大小,使用ItemCount来获取缓冲区内当前的数据个数。
 NetworkVariableSubscriber—这个类订阅网络变量数据并接受数据更新通知。服务器自动发送新的数据到你的程序,当数据可用时,你可以使用DataUpdated来获取更新通知。
 NetworkVariableWriter—这个类按要求向网络变量写数据。当一个值必须被立即发送的服务器的时候,使用这个类是合适的。WriteValue和Writedata都会导致线程阻塞,直到这个值被写入服务器。WriteValueAsync and WriteDataAsync不会阻塞,使用这个些函数时,要使用WriteCompleted事件来查看异步写是否成功。参考Deciding When To Use NetworkVariableWriter or NetworkVariable

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值