labviewer吧 关注:8贴子:36
  • 0回复贴,共1

LabVIEW数据通信方式-内部数据通信

只看楼主收藏回复

今天和大家讨论一下LabVIEW中数据通信的方法。数据通信嘛,有什么作用呢,由于我不是科班出身,在接触这个之前,挺瞧不起数据通信地。后来,慢慢地,随着学习的深入,这个特别重要,它可以说是一台设备的核心。下面就和大家唠唠。
LabVIEW程序内部主要的传递方式是:1.移位寄存器;2.反馈节点;3.局部变量;4.属性节点(调用节点);5.全局变量;6.队列;7.通知器;8.共享变量;9.VI Server技术。
LabVIEW和外部数据通信的方式有:1.ActiveX;2..NET技术;3.DDE;4.C调用;5.库函数调用;6.执行操作系统;7.TCP/UDP;8.串口。
通信的方式很多很多,具体什么方式适合,那就要了解它们。
移位寄存器-移位寄存器又把它叫做是功能性全局变量,在循环里面用得更多,它就是把数据存储在寄存器里,方便下一次循环调用数据,移位寄存器可以添加很多的,这样不仅仅只是记录传递上一次的数据,也可以记录很多次的数据。它是最受LabVIEW青睐的方式之一。
反馈节点-有句话说得好,如果大量的局部变量能够忍的话,出现一个反馈节点都是不能忍的,一般反馈节点是用的极少地。
局部变量-有过C编程基础应该都知道局部变量的使用范围,这个就不多说了,LabVIEW的局部变量就是把控件的值复制一份然后再调用。局部变量的数据传递模式是属于非数据流,什么是非数据流???LabVIEW是数据流驱动地,局部变量如果多了的话,就会影响数据流,而且占用内存也变多,局部变量在编程中用得并不多。
属性节点-属性节点和调用节点就是用来抽离得到控件的属性和方法地。它们都起源于面向对象的编程,分别代表面向对象的属性和方法,数据传递模式也是属于非数据流形式。在使用属性节点的时候,并没有进行复制的操作,所以属性节点的执行效率是较低的。(局部变量和属性节点相当于双生儿,功能差不多,但我们用得较多的还是属性节点,为什么,我好像都说完了,毕竟人家是面向对象编程。)
全局变量-全局变量在C语言里肯定都有讲过,它是有全局的权限,就是最大的权限,任何人都可以修改我,任何人都可以读我的值,好随意,好浪荡啊!!
下面这两个,队列和通知器,这俩兄弟就实际应用得比较多啦。有个不恰当的比喻,全局变量就是一个写字板,谁都可以随时向上写数据,写上的数据就把旧数据覆盖;而且谁都可以在里面随时读数据。这种数据的传递方式随意性太大。采用通知器的方式传递数据时,只有等写数据的人告知已经在写字板上写入了新的数据时,读数据的人才能够去读取数据,通知器是以通知的形式发布,收到通知的人才能够读数据。而队列,指的是,最先去读数据的人读完数据后,就把数据擦掉,因此,它只能够有一个接受数据的用户。所以说嘛,队列和通知器是可以好好学习的,它们都是“规格严格,功夫到家”地,兢兢业业,很专注地。
共享变量-共享变量建立方式就有点麻烦了,但还是好用的。有单进程和网络发布两种共享变量。这个变量就是在依赖项目而生的,每个项目都可以建立一个共享变量库,然后需要在共享变量库里声明变量即可。
VI Server-VI 服务器引用技术,在LabVIEW编程时还是用得很多的。它的核心是句柄,handle,这我认为是翻译得最狗血的翻译,一个句柄的翻译吓退多少想学程序的少年。但其实它就是一串数字,为什么要句柄呢,句柄在调用的时候更加方便,你想想看,你带用一个大程序和调用一串数,哪个效率更高,结果可想而知。
下一次再和大家讨论LabVIEW的外部数据通信吧,需要程序的同志可以私聊我。


IP属地:北京1楼2017-01-09 15:03回复