Labview在工控领域,如产线,实验室等环境用得较多,其中与仪器通讯控制的方式有串口(RS232,RS485,TTL),GPIB,网口,CAN等,其中串口在仪器还有单片机控制中用来调试居多。(很多开发者习惯把UART称为232,但很多萌新容易被误导。其实UART≠RS232,UART是TTL电平的,一般和单片机通讯时用的是TTL电平的串口信号。232,485和UART的电平都不同,这里不多说,不清楚的同仁找度娘呗)。串口通讯在应用上已经很成熟,无外乎是初始化配置波特率,数据位,停止位等,然后往寄存器或者往某个封装好的串口读写函数中,读取或写入对应的数据。而Labview对串口的运行显得更加的简单。

1、初始化配置

仪器IO->串口->VISA配置串口。VISA是NI自己开发的虚拟仪器软件包,包括还有其他的如DAQ,NI-Vision数据采集,视觉之类的软件包。这些都是和NI自主研发的仪器相配套的,也就是如果使用NI的采集卡或者其他仪器板卡,你可以直接使用DAQ的工具包对采集卡直接操作,并且配套有现成的程序例程,可以大大加快监控仪器或者产线自动化设备的开发。当然只要是标准的通讯设备,也是可以用NI工具包的。这里就拿串口通讯示例一下吧。

右键新建输入常量,端口号,波特率,数据位,检验方式等。一般按默认设置即可,如有特殊配置,请点击右侧“?”的按键,挪到该函数上了解各个接口的作用后自行配置。

2、添加“VISA打开”函数

仪器IO->VISA->高级VISA->VISA打开。

配置完串口后加20ms延时是为了连接更稳定一些,一般可不加。但是按以往的经验,不加一点延时的话,在某些快速打开和关闭串口的逻辑功能中,会出现偶尔通讯不上的情况,加了延时后该情况没有再复现。

3、添加“VISA写入”和“VISA读取”函数

仪器IO->VISA->VISA写入;仪器IO->VISA->VISA读取。

在“VISA读取”前面添加一个串口引用的属性节点,添加串口读取的数据量(字节数)。

该Serial Settings ->Number of Bytes at Serial Port属性节点,可预先获取串口缓存的数据大小。如果不给“VISA读取”输入数据大小参数的话,串口缓存上数据可能会没读完,需要读取两次以上(当然可以用程序逻辑处理这个问题,不过本次示例是单步写入读取串口数据,我们还是稳妥一点)

最后再添加一个“VISA关闭”,结束串口通讯。

4、添加“VISA写入”的数据

如果直接添加字符串数据到“VISA写入”函数,从单片机或者虚拟串口上读取的将是一组乱码。在Labview中,该函数写入的数据应该要转成字节数组,再由字节数组转成16进制的字符串发送到电脑串口上,这样在单片机或在虚拟串口上读取的才是16进制的一组数据。否则传进去的将是这组字符对应的ASCII码。

操作如下所示:将要传输的数据通过 创建数组(编程->数组->创建数组)的方式生成字节数据,再通过字节数组转字符串(编程->字符串->路径/数组/字符串转换->字节数组转字符串)的方式生成16进制的字符串给到“VISA写入”。

最后选择端口  如左侧所示COM8,运行即可发送010203的串口数据,如果单片机或者虚拟串口没有返回数据,则读取的数据为空。

将左侧数值常量转成u8类型。

大家可以尝试用状态机写一个串口助手,或者做个虚拟示波器的小工具,由单片机ADC采集电压,将电压值通过串口传给Labview上位机显示电压波形。串口助手我有空上传一个自己写的。虚拟示波器的话,倒有一个以前的毕业设计,如果有需要的话可以留下邮箱,我有空单独发过去,可能会缺少一些库,但是逻辑参考一下就好了。(脸皮较薄,以前写的代码太乱,就不放在CSDN的资源上了,有兴趣的我单独给,哈哈。。。。。手动滑稽)

原创不易,一键三连拉!

labview从入门到出家9(进阶篇)--串口通讯的更多相关文章

  1. labview从入门到出家5(进阶篇)--程序调试以及labview函数库的运用

    跟了前面几章的操作流程,相信大家对labview有了一定的认识.其实只要了解了labview的编程思路,再熟悉地运用各个变量,函数以及属性,那么我们就可以打开labview的大门了.跟其他编程语言一样 ...

  2. labview从入门到出家6(进阶篇)--移位寄存器的使用

    前面介绍了如何熟悉和使用Labview自带的库函数以及调试方式,大家后期基本可以凭借这两个方式从入门到出家了,哈哈,后面就靠各位同仁99%的努力了.这篇为啥要讲移位寄存器呢,主要是之前做的项目和经验告 ...

  3. labview从入门到出家8(进阶篇)--简单好用的状态机

    labview的状态机类似于一个软件框架的基本单元,好的软件框架和软件思路采用一个好的状态机,就如虎添翼了.这章给大家讲一个本人常用的一个状态机,基本上以前的项目都是建立在这个状态机上完成的,当然网上 ...

  4. labview从入门到出家7(进阶篇)--队列的使用

    本节简单讲解队列在Labview中的使用,队列你可以认为就是一组先进先出的数据列表,在Labview中常用来缓存和传递数据.用了这么久的队列,个人认为有个方便的地方在于数据传递的把控,不管是局部变量还 ...

  5. labview从入门到出家4--用事件结构实现运算功能

    使用事件结构可以快速定位响应界面的操作事件,如按下,拖动,双击的事件.基本上我们所要实现的所有功能,都可以通过条件结构+事件结构去实现,比如后面进阶篇将会讲到的状态机就是通过条件结构和事件结构组成的. ...

  6. labview入门到出家10(进阶)——CAN通讯

    ​          讲完串口,这边再讲一个labveiw工控程序中比较常用的CAN通讯吧.很久没有写过CAN通讯的程序了,网上一搜就是什么现场总线,控制器局域网总线,然后一堆复杂的协议.在这里还是一 ...

  7. labview从入门到出家3--制作和调用子VI

    当程序越写越大的时候,我们会发现代码界面会比较乱(线太多),那要怎么做可以让代码更简洁一点,我只管直接调用某个功能函数,而不需要在一个VI上面去实现这个功能函数呢?--子VI.好比C语言里面的Main ...

  8. labview从入门到出家1--第一个加法程序

    概述: Labview在众多编程语言中排名靠后,显然在当今互联网,物联网时代并非主流语言.但是俗话说行行 出状元,即便不是立身于某个主流的领域,用好了依旧可以独领风骚,而且Labview对于硬件出身的 ...

  9. labview从入门到出家2--将“加法程序”制作成“exe应用程序”

    1.上一章主要讲了如何跑我们的第一个加法程序(这里向第一个程序的鼻祖"hello world"致敬),这一章我们直接进入主题,将我们写的程序生成exe文件放桌面运行. 2.要生成e ...

随机推荐

  1. Java多线程—线程同步(单信号量互斥)

    JDK中Thread.State类的几种状态 线程的生命周期         线程的安全问题(同步与互斥) 方法一:同步代码块 多个线程的同步监视器(锁)必须的是同一把,任何一个类的对象都可以 syn ...

  2. 干货|给小白的 Nginx 10分钟入门指南

    一个执着于技术的公众号 前言 今天主要对Nginx Web服务软件进行介绍,作为HTTP服务软件的后起之秀,Nginx与它的老大哥Apache相比有很多改进之处,比如,在性能上,Nginx占用的系统资 ...

  3. 为什么不建议给MySQL设置Null值?《死磕MySQL系列 十八》

    大家好,我是咔咔 不期速成,日拱一卒 之前ElasticSearch系列文章中提到了如何处理空值,若为Null则会直接报错,因为在ElasticSearch中当字段值为null时.空数组.null值数 ...

  4. Swift服务的基本使用

    swift概述 Swift 最初是由Rackspace公司开发的高可用分布式对象存储服务,并于2010年贡献给OpenStack开源社区作为其最初的核心子项目之一,为其Nova子项目提供虚机镜像存储服 ...

  5. ElasticSearch7.3学习(二十三)----RestHighLevelClient Java api实现match_all、ids、match、term、multi_match、bool、filter、sort等不同的搜索方式

    1.数据准备 首先创建book索引 PUT /book/ { "settings": { "number_of_shards": 1, "number ...

  6. iOS全埋点解决方案-时间相关

    前言 ​ 我们使用"事件模型( Event 模型)"来描述用户的各种行为,事件模型包括事件( Event )和用户( User )两个核心实体.我们在描述用户行为时,往往只需要描述 ...

  7. mysql忘记root密码实现免密登录

    1.配置my.cnf文件,跳过授权表: skip-grant-tables 2.重启mysqld服务 3.z直接mysql登录 4.use mysql这个数据库 5.设置密码: update user ...

  8. Numpy的一些操作

    1.什么是Numpy 简单来说: Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组. Numpy支持常见的数组和矩阵操作.对于同样的数值计算 ...

  9. js 动画补间 Tween

    1 /* RunningList (触发过程中可以安全的删除自己) 2 如果触发过程中删除(回调函数中删除正在遍历的数组), 不仅 len 没有变(遍历前定义的len没有变, 真实的len随之减少), ...

  10. SQL Server 2017 各版本之间的差异

    SQL Server 2017的亮点 您选择的语言和平台 使用您选择的语言在本地和云中(现在在 Windows.Linux 和 Docker 容器上)构建现代应用程序. 行业领先的性能 充分利用任务关 ...