直接访问底层设备VI学习笔记

简介: 直接访问底层设备VI学习笔记

学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?


项目中解决的问题


最近遇到一个使用stm32单片机多路采集信号的项目,还需要在上位机进行波形的查看,信号算法的处理,初步定为使用labview编写上位机程序进行处理。下面是我学习的笔记。

LabVIEW中提供了两个直接访问底层设备的VI,即In Port.vi和Out Port.vi,这两个VI提供直接对I/O端口进行读写操作的功能,利用这一功能,可以实现简单的单点数据采集功能。

I/O端口函数包括两个函数:读端口函数节点(In Port.vi)和写端口函数节点(Out Port.vi),这两个节点位于【函数选板】→【互连接口】→【I/O端口】子选板。

In Port.vi的功能是从一个指定的16位I/O端口地址读取一个有符型整数,这个节点仅识别16位的端口地址,

b7b502368e474129aa3eaed041a00cc5.png

address输入端口:通过该端口指定16位的I/O端口地址。

data read输出端口//:该端口返回从指定端口地址读取的数据。In Port.vi是一个多态性的VI,即该VI可以返回1个字节(byte,8 bits)、两个字节或4个字节的数据。用户可以通过In Port.vi的图标下端的下拉菜单(多态VI选择器)选择返回数据的类型。


不能使用In Port.vi从内存的随机位置读取数据,这点需要用户注意。Out Port.vi的功能是向一个指定的16位I/O端口地址写入一个有符型整数,这个节点仅接受16位的端口地址。


61f0f38f8d1d470f8263619760c272b3.png


address输入端口:通过该端口指定16位的I/O端口地址。write value输入端口//:设置写入指定端口的数值。该VI也是一个多态性的VI,用户同样可以通过VI图标的下拉菜单(多态VI选择器)选择写入数据的类型。


对于结构、功能简单的数据采集设备,直接读写端口能够提高数据的传输速率。但是对于那些结构复杂、功能繁多的数据采集设备,使用直接端口读写方式控制设备会变得比较复杂而且容易出错,维护、修改也比较困难。


LabVIEW的自带例程里面提供了一个使用In Port.vi和Out Port.vi读写LPT并行口的实例Parallel Port Read and Write Loop.vi,该实例位于…\National Instruments\LabVIEW 8.2\examples\portaccess\parallel port examples.llb目录下面,用户可以参考。


在LabVIEW中有很多处理事件的方法,它们中的大部分都涉及并行执行路径问题,所谓并行执行路径就是每一条路径都负责一件顺序或非顺序(事件驱动)事件。因为LabVIEW采用了固有的并行运行方式,用户可以创建任意重并行循环或VI,它们会以某种分时共享的方式进行运行。但是在处理同一时刻发生的事件,以及避免冲突和错乱的执行过程时,就需要应用到程序的同步化技术。


LabVIEW具有很多强大的同步化功能,且有标准的技术可以处理并行程序设计与事件处理过程中所遇到的问题,如轮询(Polling)技术、通知器操作技术(Notification)、集合点技术(Rendezvous)、事件发生技术(Occurrence)等。与这些同步技术有关的各种节点位于【函数选板】→【编程子选板】→【同步】子选板。


其中,事件发生技术也是一种同步机制,它允许LabVIEW程序的并行部件之间在事件发生时相互通知对方,它实际上是一种软件触发器。使用事件的主要原因是避免查询操作,从而减少系统开销。


LabVIEW中的事件发生技术包括3个事件发生函数,分别为Generate Occurrence(事件发生)、Wait on Occurrence(等待事件发生)和Set Occurrence(设置事件发生)


目录
相关文章
|
4月前
|
存储 Kubernetes 容器
k8s创建NFS动态存储
k8s创建NFS动态存储
|
4月前
|
Ubuntu Linux
在Linux中,如何配置静态和动态IP地址?
在Linux中,如何配置静态和动态IP地址?
|
7月前
|
Linux 开发工具
【ZYNQ】配置嵌入式 Linux 静态 IP 地址
【ZYNQ】配置嵌入式 Linux 静态 IP 地址
371 0
|
存储 域名解析 网络协议
【Linux进阶篇】系统网络附加存储
【Linux进阶篇】系统网络附加存储
143 0
|
Linux
【Linux】【虚拟机】 IP地址的动态与静态设置
【Linux】【虚拟机】 IP地址的动态与静态设置
339 0
【Linux】【虚拟机】 IP地址的动态与静态设置
|
IDE 开发工具 内存技术
推荐一种超简单的硬件位带bitband操作方法,让变量,寄存器控制,IO访问更便捷,无需用户计算位置
51 单片机中通过关键字 sbit来实现**位**定义,操作时除了被操作的那一位发生改变之外,其它位不受影响。不过在STM32里面就没有 sbit 关键字了,不能直接对寄存器的进行单个位操作,如果你想单独修改寄存器某一位的话,其实还是有办法的—位带操作。
437 0
推荐一种超简单的硬件位带bitband操作方法,让变量,寄存器控制,IO访问更便捷,无需用户计算位置
|
存储 网络协议 Linux
用C#操作类读写WinCE平台Mac地址
前段时间在测试我们触摸屏联网性能的时候,由于屏的Mac地址通过注册表设置,而PB定制WinCE内核的时候就有一个默认值,所以一批下来Mac地址都一样,两台以上的机器一联网准出问题,通过注册表软件去修改Mac地址太麻烦了,所以做了一个小的Mac地址软件。
599 0