labview从入门到出家9(进阶篇)--串口通讯
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(进阶篇)--串口通讯的更多相关文章
- labview从入门到出家5(进阶篇)--程序调试以及labview函数库的运用
跟了前面几章的操作流程,相信大家对labview有了一定的认识.其实只要了解了labview的编程思路,再熟悉地运用各个变量,函数以及属性,那么我们就可以打开labview的大门了.跟其他编程语言一样 ...
- labview从入门到出家6(进阶篇)--移位寄存器的使用
前面介绍了如何熟悉和使用Labview自带的库函数以及调试方式,大家后期基本可以凭借这两个方式从入门到出家了,哈哈,后面就靠各位同仁99%的努力了.这篇为啥要讲移位寄存器呢,主要是之前做的项目和经验告 ...
- labview从入门到出家8(进阶篇)--简单好用的状态机
labview的状态机类似于一个软件框架的基本单元,好的软件框架和软件思路采用一个好的状态机,就如虎添翼了.这章给大家讲一个本人常用的一个状态机,基本上以前的项目都是建立在这个状态机上完成的,当然网上 ...
- labview从入门到出家7(进阶篇)--队列的使用
本节简单讲解队列在Labview中的使用,队列你可以认为就是一组先进先出的数据列表,在Labview中常用来缓存和传递数据.用了这么久的队列,个人认为有个方便的地方在于数据传递的把控,不管是局部变量还 ...
- labview从入门到出家4--用事件结构实现运算功能
使用事件结构可以快速定位响应界面的操作事件,如按下,拖动,双击的事件.基本上我们所要实现的所有功能,都可以通过条件结构+事件结构去实现,比如后面进阶篇将会讲到的状态机就是通过条件结构和事件结构组成的. ...
- labview入门到出家10(进阶)——CAN通讯
讲完串口,这边再讲一个labveiw工控程序中比较常用的CAN通讯吧.很久没有写过CAN通讯的程序了,网上一搜就是什么现场总线,控制器局域网总线,然后一堆复杂的协议.在这里还是一 ...
- labview从入门到出家3--制作和调用子VI
当程序越写越大的时候,我们会发现代码界面会比较乱(线太多),那要怎么做可以让代码更简洁一点,我只管直接调用某个功能函数,而不需要在一个VI上面去实现这个功能函数呢?--子VI.好比C语言里面的Main ...
- labview从入门到出家1--第一个加法程序
概述: Labview在众多编程语言中排名靠后,显然在当今互联网,物联网时代并非主流语言.但是俗话说行行 出状元,即便不是立身于某个主流的领域,用好了依旧可以独领风骚,而且Labview对于硬件出身的 ...
- labview从入门到出家2--将“加法程序”制作成“exe应用程序”
1.上一章主要讲了如何跑我们的第一个加法程序(这里向第一个程序的鼻祖"hello world"致敬),这一章我们直接进入主题,将我们写的程序生成exe文件放桌面运行. 2.要生成e ...
随机推荐
- Go 语言 结构体和方法
@ 目录 1. 结构体别名定义 2. 工厂模式 3. Tag 原信息 4. 匿名字段 5. 方法 1. 结构体别名定义 变量别名定义 package main import "fmt&quo ...
- Istio实践(3)- 路由控制及多应用部署(netcore&springboot)
前言:接上一篇istio应用部署及服务间调用,本文介绍通过构建.netcore与springboot简单服务应用,实现服务间调用及相关路由控制等 1..netcore代码介绍及应用部署 新建.netc ...
- XCTF练习题---MISC---Cephalopod
XCTF练习题---MISC---Cephalopod flag:HITB{95700d8aefdc1648b90a92f3a8460a2c} 解题步骤: 1.观察题目,下载附件 2.拿到手以后发现是 ...
- 设置Linux系统的交叉编译环境
1.在Linaro官网上获得交叉编译工具 网址:http://releases.linaro.org/components/toolchain/gcc-linaro/ 从Linaro官网上能找到4.9 ...
- Halo 开源项目学习(七):缓存机制
基本介绍 我们知道,频繁操作数据库会降低服务器的系统性能,因此通常需要将频繁访问.更新的数据存入到缓存.Halo 项目也引入了缓存机制,且设置了多种实现方式,如自定义缓存.Redis.LevelDB ...
- JavaScript 数据结构与算法3(链表)
学习数据结构的 git 代码地址: https://gitee.com/zhangning187/js-data-structure-study 1.链表 本章学习如何实现和使用链表这种动态的数据结构 ...
- 什么是Docker容器?(全面了解使用)
一:为什么需要Docker容器? 1.引入 1.1麻烦的环境部署 1.在软件开发中,最麻烦的事情之一就是环境配置.在正常情况下,如果要保证程序能运行,我们需要设置好操作系统,以及各种库和组件的安装. ...
- linux篇-修改mysql数据库密码
总是忘记,每次都要查文档,背背背 方法1: 用SET PASSWORD命令 首先登录MySQL. 格式:mysql> set password for 用户名@localhost = passw ...
- mysql配置与存储引擎与字段类型与约束条件
目录 字符编码与配置文件 存储引擎 创建表的完整语法 字段类型 整型 浮点型 字符类型 数字的含义 枚举与集合 日期类型 约束条件 字符编码与配置文件 在MySQL5.X系列中,显示的字符编码有多种, ...
- 项目下载依赖后面加 -S -D -g 分别代表什么意思
npm install name -S此依赖是在package的dependencies中,不仅在开发中,也在打包上线后的生产环境中,比如vue npm install name -D此依赖是在pac ...