LabVIEW | 串口基础【自学】

转载 B站   up:不烧板子
地址:https://www.bilibili.com/read/cv9435378
原博图片不清楚,自己重新跟学截图自留,侵删

文章目录

  • 一、串口基础
    • 1.串口发送
      • (1)简单发送
      • (2)循环发送
      • (3)按键控制发送
    • 2.串口接收
      • (1)已知接收数据量
      • (2)未知接收数据量
  • 二、
    • 1.
    • 2.
  • 总结


一、串口基础

1.串口发送

  跟串口相关的函数都位于下图所示的位置。官方的帮助文档对每个函数有详细介绍,大家有不懂的地方首先查看帮助文档,配合搜索引擎深化理解。
在这里插入图片描述

(1)简单发送

  串口发送一次数据过程的可以分为三个步骤:打开串口–>发送数据–>关闭串口。分别对应Confugure Port,Write,Close这三个函数。用这三个函数在LabVIEW中搭建如下程序

在这里插入图片描述
  一个最简单的串口发送程序已经编写完毕,接下来用XCOM对我们的程序进行验证。

  首先用虚拟串口连接两个COM口(本文用COM2与COM3)
在这里插入图片描述
  在运行LabVIEW程序前,需要先在XCOM软件中打开串口,这样才能接收到数据。选择串口,并在发送缓冲区中填入“你好”,然后运行程序,可以看到在XCOM中收到了相同的文字。
在这里插入图片描述

  测试已经完成,回过头来看看编写的程序,看起来最复杂的好像就是“串口配置”这个函数了。不过虽然它有好多接线端,这里只接了一个,其它接线端不接时会有一个默认值,没有特别要求一般都不用修改。一般情况下关注两个接口即可,即“串口资源名称”跟“波特率”。关于波特率,大家暂时理解为数据的发送速度就好了,数据的接收方要以跟发送方相同的速度接收数据才可以接收到正确的数据。可以看到XCOM中选择的波特率是9600,而我们的程序中是没有设定的,因为LabVIEW中默认的波特率就是9600。如果我们要用到其它波特率,就需要对其进行更改,可以通过“创建常量”或“创建输入控件”的方式进行更改。如果没有特别说明,后面的演示中使用的波特率都是9600。

(2)循环发送

  接下来我们增加难度,让LabVIEW发送0、1、2、3……的数字,每隔1秒发送一次。 对程序做出如下修改:
在这里插入图片描述
  在原来的程序基础上添加while循环,并加入1000ms等待,让发送程序每隔1s执行一次。并且将循环次数发送出去,实现了刚才的需求。这里要注意串口写入函数接收的数据类型为字符串,而循环次数为一个数值,所以用到了“十进制数据至字符串转换”这个函数,该函数位于字符串选板“数值/字符串转化”中。还通过“连接字符串”在数据后面追加了回车和换行,让数据不会连在一起,方便我们查看。

  到这里我们貌似已经实现了刚才提出的要求,但其实还有一些不妥。我们思考一下,假如房间里有5个人要出去,顺序应该是 开门–>5人依次出去–>关门,而不是 开门–>出去1人–>关门 循环5次。发现问题了吧,打开串口、关闭串口的操作一直在循环执行!这两个步骤放在循环外面就好了,所以正确的程序应该是下面这样。
在这里插入图片描述

  结果如下:
在这里插入图片描述

(3)按键控制发送

  好,现在我的需求又变了,我想通过一个按键来控制什么时候发送数据,即我可以在文本框输好内容,然后按下发送按键,数据被发送出去。

  应该怎么办呢?我们可以添加一个事件结构,添加一个按键按下的事件,然后在事件中发送数据。最终完成的程序如下:

在这里插入图片描述
在这里插入图片描述
  运行结果如下:
  按 send 发送数据,按 stop 停止程序
在这里插入图片描述

2.串口接收

  参照串口发送的思路,串口接收一次数据的步骤为:打开串口–>接收数据–>关闭串口。但是这里有一个问题,数据的接收方是不知道数据会在什么时刻发送过来的,这是一个被动接收的过程。对应的有两种情况:

(1)已知接收数据量

  对于这种情况,处理起来比较简单,直接在读取函数处进行设置即可。图中所示为接收5字节数据的情况。
在这里插入图片描述

  接收结果如下:
在这里插入图片描述

(2)未知接收数据量

  既然不知道有多少数据,那创建一个while循环一直读取就好了。但是数据可能是断断续续传来的,而我们在进行读取的时候又必须得告诉读取函数需要接收数据的数量,这时候可以利用属性节点的方式获取串口缓冲区的数据数量,缓冲区有多少数据就读多少。读取函数的输出端显示的是本次读取的结果,所以当断续的数据传来,显示的结果每次都会刷新,而我们想看到的应该是每一次的结果累计,这里可以使用连接字符串的方式将字符串上一次的值与这一次的值累加起来并作为新的值进行显示。
在这里插入图片描述
  在获取到串口缓冲区的字节数之后,还进行了一个判断,当缓冲区不为空的时候再进行数据读取。
  上面这个程序,可以说是一个最简单的串口接收程序了,里面用到的函数组件都是进行串口数据接收所必不可少的。

  

注: “Bytes at Port” 这个串口的属性节点,在仪器I/O子面板下,如下图:
在这里插入图片描述
也可以在 VISA 资源线上右键 >> 创建 >> Instr类的属性 >> Serial Settings >> Number of Bytes at Serial Port,如下图所示:
在这里插入图片描述

二、

  内容

1.

2.

⚠️内容内容


总结

以上就是本文要讲的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/96579.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习 | 核心概念】那些深度学习路上必经的核心概念,确定不来看看?(二)

🤵‍♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…

[JDK8下的HashMap类应用及源码分析] 数据结构、哈希碰撞、链表变红黑树

系列文章目录 [Java基础] StringBuffer 和 StringBuilder 类应用及源码分析 [Java基础] 数组应用及源码分析 [Java基础] String,分析内存地址,源码 [JDK8环境下的HashMap类应用及源码分析] 第一篇 空构造函数初始化 [JDK8环境下的HashMap类应用及源码分…

LeetCode-160. 相交链表

这是一道真的非常巧妙的题,题解思路如下: 如果让他们尾端队齐,那么从后面遍历就会很快找到第一个相交的点。但是逆序很麻烦。 于是有一个巧妙的思路诞生了,如果让短的先走完自己的再走长的,长的走完走短的,…

关于商品活动的H5页面技术总结

背景 在单个html文件里面使用vue3、jquery等其他第三方js库,实现规定的页面效果,其中主要功能是从商品json数据中读取数据,然后可以通过搜索框、下拉框、左侧菜单来筛选商户信息。 页面布局 技术要点: 1、通过路由来进行页面布…

Visual Studio 2022的MFC框架——AfxWinMain全局对象和InitInstance函数

我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下Visual Studio 2022下开发工具的MFC框架知识。 在看这篇帖子前,请先看我的另一篇帖子《Visual Studio 2022的MFC框架——应用程序向导》。 当程序调用了CWinApp类的构造…

goroutine的一点东西

前面的两篇,从相对比较简单的锁的内容入手(也是干货满满),开始了go的系列。这篇开始,进入更核心的内容。我们知道,go应该是第一门在语言层面支持协程的编程语言(可能是我孤陋寡闻),goroutine也完全算的上是go的门面。g…

VBA技术资料MF50:VBA_在Excel中突出显示前3个值

【分享成果,随喜正能量】人受到尊重,不是因为权钱,而是他骨子里透出的,正直与善良。。 我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高…

记录--怎么实现一个3d翻书效果

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 本篇主要讨论以下两种翻书动画的实现: 第一种是整页翻转的效果: 这种整页翻转的效果主要是做rotateY的动画,并结合一些CSS的3d属性实现。 第二种折线翻转的效果&…

ACM模式数组构建二叉树Go语言实现

目的 想输入一个数组,然后构造二叉树 例如数组为[6, 2, 8, 0, 4, 7, 9, -1, -1, 3, 5] 对应的二叉树为: 参考资料 ACM模式数组构建二叉树 重点:如果父节点的数组下标是i,那么它的左孩子下标就是i*21,右孩子下标就是…

生产环境部署与协同开发 Git

目录 一、前言——Git概述 1.1 Git是什么 1.2 为什么要使用Git 什么是版本控制系统 1.3 Git和SVN对比 SVN集中式 Git分布式 1.4 Git工作流程 四个工作区域 工作流程 1.5 Git下载安装 1.6 环境配置 设置用户信息 查看配置信息 二、git基础 2.1 本地初始化仓库 ​编辑…

opencv 进阶20-随机森林示例

OpenCV中的随机森林是一种强大的机器学习算法,旨在解决分类和回归问题。随机森林使用多个决策树来进行预测,每个决策树都是由随机选择的样本和特征组成的。在分类问题中,随机森林通过投票来确定最终的类别;在回归问题中&#xff0…

AE2018 安装过程

双击打开安装包,大概等五分钟后。 出现下边安装界面。 安装成功。 可以将图标发送到桌面快捷方式。

MySQL内容及原理记录

原理篇 架构、索引、事务、锁、日志、性能调优 高可用 读写分离、分库分表、分布式ID、高可用、分布式数据库、分布式事务、分布式锁 架构 1 执行一条 SQL 查询语句,期间发生了什么? (1)连接器:客户端通过连接器…

sql server 备份到网络共享

场景:sql server服务器A将数据库备份文件备份到服务器B 1)服务器B创建共享目录 这里我将 D:\ProDbBak 共享,并且Everyone完全控制 2)sql server服务器A能够访问服务器B共享目录,并且能完全控制 3)修改服务…

Kotlin学习之密封类

Kotlin中的密封类: kotlin中的密封类,用关键词Sealed修饰,且还有一个规定:Sealed类的子类应该是Sealed类的嵌套类,或者应该在与Sealed类相同的文件中声明。 当我们想定义一个有相同父类,但是有不同子类的时候&#xf…

C语言每日一练------Day(10)

本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字:自除数 除自身以外数组的乘积 💓博主csdn个人主页&#xff…

K8s简介之什么是K8s

目录 1.概述 2.什么是容器引擎? 3.什么是容器 4.什么是容器编排? 5.容器编排工具 6.到底什么是K8s? 7.为什么市场推荐K8s 8.K8s架构 9.K8s组件 Pods API 服务器 调度器 控制器管理器 Etcd 节点 Kubelet Kube代理 Kubectl 1.概述 Kub…

Mac“其他文件”存放着什么?“其他文件”的清理方法

很多Mac用户在清理磁盘空间时发现,内存占用比例比较大的除了有iCloud云盘、应用程序、影片、音频、照片等项目之外,还有一个“其他文件”的项目磁盘占用比也非常大,想要清理却无从下手。那么Mac“其他文件”里存放的是什么文件?我…

【HSPCIE仿真】输入网表文件(5)基本仿真输出

仿真输出 1. 概述1.1 输出变量1.2 输出分析类型 2. 显示仿真结果2.1 .print语句基本语法示例 2.2 .probe 语句基本语法示例 2.3 子电路的输出2.4 打印控制选项.option probe.option post.option list.option ingold 2.5 .model_info打印模型参数 3. 仿真输出参数的选择3.1 直流…