• Instrument I/O

  利用LabVIEW内置的驱动程序库和具有工业标准的设备驱动软件,可对 GPIB(通用接口总线)、Ethernet(以太网)接口、RS-232(标准串行接口总线)/RS-485 等 I/O 仪器设备进行控制。在LabVIEW的仪器I/O子模板上提供了多种图标可对各种I/O仪器设备进行驱动。

  在LabVIEW功能模板的Instrument I/O→Serial中包含进行串行通信操作的多个功能模块,如下图所示,分别可实现串口缓存检测、串口写、串口读、中断、串口设置、关闭串口驱动等功能。

  利用计算机的RS-232串行口,实现双机通信的硬件连接线路如下图所示,图中采用的是最简单的三线制连接方式。TxD 为发送数据端,RxD 为接收数据端,GND 为接地端。

  • VISA 

  VISA是Virtual Instrument Software Architecture的简称,是由组成 VXI plug & play 系统联盟的 35 家最大的仪器仪表公司所统一制定的 I/O 接口软件标准及其相关规范的总称。一般称这个 I/O 函数库为 VISA 库(用于仪器编程的标准 I/O 函数库)。VISA 函数库是计算机与仪器之间的标准软件通信接口,用以实现对仪器的程控。VISA对于测试软件开发者来说是一个可调用的操作函数集,本身并不提供仪器编程能力,它只是一个高层 API,通过调用低层的驱动程序来控制仪器。NI-VISA 的层次结构如下图所示:

  VISA是整个仪器行业用于仪器驱动程序的标准 API ,用户可以用一个 API 控制包括 VXI、GPIB、RS-232 串口、USB(通用串行通信总线)串口等不同类型的仪器(根据所使用的仪器类型调用相应的驱动程序)。使用 VISA 有许多优点,它方便用户在不同的平台对不同类型的仪器进行开发移植及升级测控系统。

  1. 大多数的VISA功能模块使用了VISA resource name控制参数,该参数标识了与之通信的设备名称以及进行I/O操作必须的配置信息。MAX可用于配置VISA资源名称。

  2. 使VISA资源名称指定的串口按特定设置初始化。具体信息可参考LabVIEW的帮助文档

  3. VISA Write 模块把write buffer中的字符串(命令或数据)写入VISA Resource Name端参数指定的设备。return count返回实际传送的字节数。error in 和 error out 字串包含出错状况。

  4. VISA Read函数读取由 VISA Resource Name指定设备中的数据。byte count 指明读入 read buffer 中的字节数。

  5. VISA Bytes at Serial Port返回指定串口的输入缓冲区的字节数。

  6. 打开与 VISA 资源的会话连接也会占用计算机的系统资源,因此当VISA 程序结束时,必须关闭所有打开的会话通道。LabVIEW 为此提供了VISA Close函数。该函数关闭由 VISA Resource Name 端参数指定的设备的通信过程,释放 VISA Session占用的计算机系统资源。

  •  一个简单的串口通信程序

  在定时模块中找到等待(ms)子模块,放置在while循环中进行延时。等待指定长度的毫秒数,并返回毫秒计时器的值。计时器的精度由系统确定,依据使用平台的不同,精度有可能低于1毫秒。

  添加布尔类型的确定按钮和停止按钮,更改属性为“保持转换直到释放”,即按下去的时候会变true,释放会变false

  添加4个数值常量:编程(Programming)→数值(Numeric)→ 数值常量(数值常量(Numeric Constant),值分别为9600(波特率:波特率定义为每秒钟传送二进制数码的位数,以位/秒(bit/s)为单位,亦称“波特”。)、8(数据位)、0(校验位,无)、10(对应停止位1)。

  添加一个比较函数,将输入缓冲区的字节数与0比较,只有当串口接收缓冲区的数据个数不等于 0 时,才将数据读入到接收区。

  注意在条件结构(case structure)的false条件下也要接好到VISA Close模块的线,否则会出错。

  将全部模块连接好之后,点击运行按钮。如果运行程序发现弹出如下错误,说明没有安装VISA驱动,可以在这里下载合适的VISA驱动程序。

  装完后可以打开NI MAX,在软件这个模块下可以查看目前已经安装的一些软件,可以看到NI-VISA已经装好。NI MAX即NI的配置管理软件(Measurement & Automation Explorer),主要用来配置管理本机和远程系统上的各种软硬件资源。它可以执行系统诊断,添加新的通道、接口和虚拟通道,还可以查看连接在系统上的设备和仪器。

  再次运行还是弹出了错误,如下图所示。网上查找了相关原因和解决方法,很可能是由于串口被占用导致。按照网上的方法通过删除注册表中的一个数值项来清除串口配置:在“运行”对话框中输入“regedit”进入注册表;然后进入HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter这时我们可以找到该数值项:ComDB,它的值代表目前使用中的串口端号。比如1d,它的二进制:0001 1101,则从右往左数代表第1,3,4,5端口被占用。这样我们只需要把ComDB这个数据项删除,关闭注册表(不用重启电脑)即可。然后在设备管理器中通过串口“属性”中的“高级”来重新配置端口的编号。

  将USB转串口线的RXD和TXD接到一起进行单机测试,如下图所示,在发送区写入字符串"hello,world!"之后点击发送字符按钮发送,接收区会显示发送的字符串。

参考:

LabVIEW 串口仪器控制——VISA 驱动下载安装

NI配置管理软件MAX的一些功能使用介绍

LabVIEW关于定时的研究

labview新手入门

LabVIEW串口通信的更多相关文章

  1. LabVIEW串口通信的一个例子-串口"示波器"

    1.程序界面:<ignore_js_op> 功能介绍:左边上方串口接收区,下方为串口字符发送区.右方为一个波形图表,在程序内部每次将串口发送过来的数据,以f%格式化,显示在波形图表上.按钮 ...

  2. labview与单片机串口通信

    labview与单片机串口通信   VISA是虚拟仪器软件体系结构的缩写(即Virtual Instruments Software Architecture),实质上是一个I/O口软件库及其规范的总 ...

  3. 小草手把手教你 LabVIEW 串口仪器控制——初识VISA串口

    有些人,学习一样东西时候,喜欢现成的例子.很多人学习一门技术,都喜欢现成的例子开始,比如学单片机的啊,最开始都是修改的例子吧,学语言的也是.最开始都是模仿.这个年头看书上的理论知识太浪费时间了.所以啊 ...

  4. 小草手把手教你LabVIEW串口仪器控制—安装使用仪器现有驱动

    声明:很多仪器是没有驱动的.所以,具体问题具体分析.另外声明:所谓的驱动,也就是封装好的底层的串口通信程序,也是程序而已,只不过别人帮你做成了子 VI,让自己容易用.所以:不要弄混淆了概念.国外的很多 ...

  5. 手把手教你 LabVIEW 串口仪器控制——VISA 驱动下载安装篇

           仪器控制,核心在于 VISA 函数..有些仪器可能不需要 VISA,有自己的 DLL 什么的,我就管不着.        正常情况下,大家安装的 LabVIEW,都是不带 VISA 驱动 ...

  6. LABVIEW串口通信基础

    写这一篇串口通信基础的契机是最近刚刚完成一个温箱的仪器控制程序,LABVIEW通过串口与温箱单片机通讯,我打算将过程中遇到的一些问题和收获列在这里方便有需求的网友比对.寻找答案. 学LABVIEW时间 ...

  7. .NET 串口通信

    这段时间做了一个和硬件设备通信的小项目,涉及到扫描头.输送线.称重机.贴标机等硬件.和各设备之间通信使用的是串口或网络(Socket)的方式.扫描头和贴标机使用的网络通信,输送线和称重机使用的是串口通 ...

  8. BluetoothChat用于蓝牙串口通信的修改方法

    本人最近在研究嵌入式的串口通信,任务是要写一个手机端的遥控器用来遥控双轮平衡小车.界面只用了一个小时就写好了,重要的问题是如何与板子所带的SPP-CA蓝牙模块进行通信. SPP-CA模块自带代码,在这 ...

  9. Win10 IoT C#开发 4 - UART 串口通信

    Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,既可以开发设备UI与用户交互式操作,又可以控制GPIO等接口,使得原来嵌入式繁琐的开发变得简单.通过Remote Debug ...

随机推荐

  1. IOS第12天(3,UIViewController的生命周期)

    #import "HMViewController.h" @interface HMViewController () @property(nonatomic,strong)NSA ...

  2. poj1061-青蛙的约会(扩展欧几里德算法)

    一,题意: 两个青蛙在赤道上跳跃,走环路.起始位置分别为x,y. 每次跳跃距离分别为m,n.赤道长度为L.两青蛙跳跃方向与次数相同的情况下, 问两青蛙是否有方法跳跃到同一点.输出最少跳跃次数.二,思路 ...

  3. A trip through the Graphics Pipeline 2011_05

    After the last post about texture samplers, we’re now back in the 3D frontend. We’re done with verte ...

  4. android_view自定义中的几个方法

    1.onDraw ,改变View绘制的图像 2.onMeasure,改变View的大小 3.onLayout,改变View在父控件的位置

  5. [daily]使用rdtsc指令,测量程序的运行速度 [转]

    原文地址:http://blog.chinaunix.net/uid-24774106-id-2779245.html 最近搞架构,一直在讨论.听人提到,自行科普了一下,先转发,mark.有机会深入学 ...

  6. MySQL 的 utf8_general_ci 和 utf8_unicode_ci 有什么区别,应如何选择?

    一般的解说是 utf8_general_ci 速度较快,utf8_unicode_ci 准确性较好 … 但快在那里,又好在什么地方呢? 首先就其准确性说,这世界上有无数种文字,除了通用的英文使用我们较 ...

  7. HTTP下载文件名称编码说明

    HTTP下载保存文件名 下载文件需要保存的名称 在响应报文头中 Content-Disposition 响应报文头域中指定, 例如 Content-Disposition: attachment; f ...

  8. NULLIF()函数使用讲解

    NULLIF()函数接受两个参数.如果它们相等,那么返回空值:否则,返回第一个参数. 等价于下面的表达式: case when expression1=expression2 then null el ...

  9. wkhtmltopdf 中文参数详解

    linux:wkhtmltopdf [OPTIONS]… [More input files] windows:wkhtmltopdf.exe [OPTIONS]… [More input files ...

  10. 解决编译错误: 非法字符: '\ufeff' 解决方案|错误: 需要class, interface或enum

    http://www.cnblogs.com/oymx/p/5353235.html 可以 note++打开  在格式里  选择utf-8 无bom格式编码 即可