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.

⚠️内容内容


总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

〔019〕Stable Diffusion 之 单图中绘制多人分区域写提示词 篇

✨ 目录 🎈 下载区域绘制插件🎈 区域绘制使用🎈 参数讲解和基础使用🎈 Lora 自组🎈 Lora 自组的使用🎈 分区扩散🎈 分区域提示 🎈 下载区域绘制插件 在绘制图片时,经常绘…

解决博客不能解析PHP直接下载源码问题

背景: 在网站设置反向代理后,网站突然不能正常访问,而是会直接下载访问文件的PHP源码 解决办法: 由于在搞完反向代理之后,PHP版本变成了纯静态,所以网站不能正常解析;只需要把PHP版本恢复正常…

【ARMv8 SIMD和浮点指令编程】NEON 乘法指令——乘法知多少?

NEON 乘法指令包括向量乘法、向量乘加和向量乘减,还有和饱和相关的指令。总之,乘法指令是必修课,在我们的实际开发中会经常遇到。 1 MUL (by element) 乘(向量,按元素)。该指令将第一个源 SIMD&FP 寄存器中的向量元素乘以第二个源 SIMD&FP 寄存器中的指定值,将…

IDEA软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 IntelliJ IDEA是一款流行的Java集成开发环境(IDE),由捷克软件开发公司JetBrains开发。它专为Java开发人员设计,提供了许多高级功能和工具,使得开发人员能够更高效地编写…

stm32----SPI协议

一、概述 SPI(Serial Peripheral Interface,串行外围设备接口),是Motorola公司提出的一种同步串行接口技术,是一种高速、全双工、同步通信总线,在芯片中只占用四根管脚用来控制及数据传输,节约…

C语言 - 结构体、结构体数组、结构体指针和结构体嵌套

结构体的意义 问题:学籍管理需要每个学生的下列数据:学号、姓名、性别、年龄、分数,请用 C 语言程序存储并处理一组学生的学籍。 单个学生学籍的数据结构: 学号(num): int 型姓名(…

2.Redis 通用命令

Redis 中最核心的两个命令: set 作用:设置 key 对应的 value 值并存储进去。若key已包含一个值,则无论其类型如何,都会覆盖该值。在SET操作成功时,将丢弃与密钥相关联的任何先前生存时间。 对于上述这里的 key和val…

五、Kafka消费者

目录 5.1 Kafka的消费方式5.2 Kafka 消费者工作流程1、总体流程2、消费者组原理3、消费者组初始化流程4、消费者组详细消费流程 5.3 消费者API1 独立消费者案例(订阅主题)2 独立消费者案例(订阅分区)3 消费者组案例 5.4 生产经验—…

Linux内核学习(十二)—— 页高速缓存和页回写(基于Linux 2.6内核)

目录 一、缓存手段 二、Linux 页高速缓存 三、flusher 线程 Linux 内核实现了一个被叫做页高速缓存(page cache)的磁盘缓存,它主要用来减少对磁盘的 I/O 操作。它是通过把磁盘中的数据缓存到内存中,把对磁盘的访问变为对物理内…

聚类分析 | MATLAB实现基于AHC聚类算法可视化

聚类分析 | MATLAB实现基于AHC聚类算法可视化 目录 聚类分析 | MATLAB实现基于AHC聚类算法可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 AHC聚类算法,聚类结果可视化,MATLAB程序。 Agglomerative Hierarchical Clustering(自底…

JVM ZGC垃圾收集器

ZGC垃圾收集器 ZGC(“Z”并非什么专业名词的缩写,这款收集器的名字就叫作Z Garbage Collector)是一款在JDK 11中新加入的具有实验性质[1]的低延迟垃圾收集器,是由Oracle公司研发的。 ZGC收集器是一款基于Region内存布局的&#…

为什么深度网络(vgg,resnet)最后都不使用softmax(概率归一)函数,而是直接加fc层?

这个问题很简单,并不是没有使用softmax,而是没有显式使用softmax。 随着深度学习框架的发展,为了更好的性能,部分框架选择了在使用交叉熵损失函数时默认加上softmax,这样无论你的输出层是什么,只要用了nn.…

Linux 打开U盘硬盘等报错 file type exfat not configured in kernel

目录 原因: 查看系统文件系统和当前系统版本 回归正题,如何解决报错 在centons 7中打开U盘,报错file type exfat not configured in kernel。 原因: 这是因为Linux采用的文件系统和我U盘的文件系统不一致引起。如下图&#xf…

2023蓝帽杯初赛ctf部分题目

Web LovePHP 打开网站环境,发现显示出源码 来可以看到php版本是7.4.33 简单分析了下,主要是道反序列化的题其中发现get传入的参数里有_号是非法字符,如果直接传值传入my_secret.flag,会被php处理掉 绕过 _ 的方法 对于__可以…

C++哈希(散列)与unordered关联式容器封装(Map、Set)

一、unordered系列关联式容器 在C98中,STL提供了以红黑树为底层数据结构的关联式容器(map、set等),查询时的效率可以达到,最差情况下需要比较红黑树的高度次。因此在C11中,STL提供了四个unordered系列关联式容器&…

Star History 月度开源精选|Llama 2 及周边生态特辑

7 月 18 日,Meta 发布了 Llama,大语言模型 Llama 1 的进阶版,可以自由免费用于研究和商业,支持私有化部署。 所以本期 Star History 的主题是:帮助你快速把 Llama 2 在自己机器上跑起来的开源工具,无论你的…

LeetCode 面试题 02.04. 分割链表

文章目录 一、题目二、C# 题解 一、题目 给你一个链表的头节点 head 和一个特定值 x,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你不需要 保留 每个分区中各节点的初始相对位置。 点击此处跳转题目。 示例 1&#…

【JS案例】JS实现手风琴效果

JS案例手风琴 🌟效果展示 🌟HTML结构 🌟CSS样式 🌟实现思路 🌟具体实现 1.绑定事件 2.自定义元素属性 3.切换菜单 🌟完整JS代码 🌟写在最后 🌟效果展示 🌟HTML…

【⑬MySQL | 数据类型(一)】简介 | 整数 | 浮点 | 定点 | 时间/日期类型

前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL数据类型简介 | 整数 | 浮点 | 定点 | 时间/日期类型的分享✨ 目录 前言0.数据类型简介1 整数类型2 浮点类型3 定点类型4 日期/时间类型总结 0.数据类型简介 数据类型(data_type)是指系…

链表(详解)

一、链表 1.1、什么是链表 1、链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,有一系列结点(地址)组成,结点可动态的生成。 2、结点包括两个部分:&#x…