LabVIEW串口通信实际操作

2023-11-06

理论基础:
LabVIEW串口通信基础知识

读取串口字节

我们新建一个空白 VI,借助串口调试助手和虚拟串口,在 LabVIEW 中编写的一个最简单的例子:写一个基本的读取串口字节的程序,在程序框图中编程如下:
在这里插入图片描述
注意这里,串口配置放到循环外,不要往复让这个执行。运行程序,在前面板我们可以看到:
在这里插入图片描述
在这里插入图片描述
以下几点必须注意:
(1)串口有个缓冲区,存在计算机内存里,VISA 读取,就是从缓冲区读取数据,读完之后,读取的就不存在缓冲区里了。如果你没读取,那就一直在缓冲区里,直到缓冲区溢出。
(2)如果有多个线程,都有读 VISA,或者一个 while循环 里,多个地方同时读,这样,肯定会有错。记住,保证一个串口,只有一个读,或者写。232 接口里,读和写可以同时进行,因为他是全双工的。而 485 半双工 2 线制时候,请注意,读和写不可以同时,因为是半双工。
(3) 如果你单片机数据是间隔的,而且每次发送的是固定的数据。请自己设定VISA 读取的,字节数,比如设置为 8。这样的话,比延时读取要靠谱的多。
如果我们需要传递的数据是数值型数据呢?我们重新发送:

在这里插入图片描述
在这里插入图片描述
这是怎么回事呢?
LabVIEW 从串口接收数据时要注意:
①假设 LabVIEW 从串口接收到的数据为 “1234”(正常显示模式下),那么这个数据在串口底层的时候其实是这样的二进制数据:00110001 00110010 00110011 00110100。只是在 LabVIEW 中,这些二进制数据是以字符串形式显示出来的,它们的实质还是二进制数据,这几个二进制数据转换为十进制数据分别是“49,50,51,52”,由于字符串都是以ASCII 码形式保存在计算机中的,那么 49,50,51,52 这几个数在 ASCII 表中就表示是字符串“1,2,3,4”。所以这几个数据在 LabVIEW 中就显示为字符串的 1,2,3,4 了。

如果明白这里面的转换关系,那么要进行数据转换时就很容易了,比如上面的VI中,如果LabVIEW 中接收到的是字符串 “XYabcdrfg0123456789”,而原本下位机传送的是数值型数据,只需要将 “XYabcdrfg0123456789” 字符串转换为对应的 ASCII 值就是实际上下位机传上来的数据了。LabVIEW 中将字符串转换为对应的 ASCII 值的函数是 “字符串至字节数组转换” 这个函数,如下所示:
在这里插入图片描述
在这里插入图片描述
这个时候有人要问了,如果我们想把所有的字符串接收完后一次性取出来,也就是将串口没有接收的数据拼接到一起,然后集体提取,怎么办呢?这个,可以用移位寄存器或者反馈节点,然后用连接字符串拼接。我们稍微修改下程序框图,修改部分用红框框起来:

在这里插入图片描述
接下来,我们用串口助手给 Labview程序发生一段文字,看看它的拼接效果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当串口资源被占用时,在 LabVIEW 中会报错,提示串口号存在,但当前不能对其进行操作,同时打开 MAX时也可以在对应的串口号下看到同样的错误,这表示这个串口已经被其它程序占用了,比如有时候打开了串口调试助手来调试串口,然后又想在 LabVIEW 里面试一下,这时就会报这个错,因为串口已经被串口调试助手调用了,它不能被二个程序同时使用。解决的方法是关掉其它程序即可,串口调试助手里也可以关闭这个串口。还有一种情况是调试 OK 后生成 EXE,运行 EXE 也出现这个问题,这时是因为串口被原来的 LabVIEW 程序打开,再用 EXE 打开时就会报错,解决办法是关掉原来的 LabVIEW 程序。最好是关掉 LabVIEW。在使用串口的过程中一定要关闭串口(使用 VISA CLOSE),否则程序在退出的时候会报错说数据丢失。

写入和读取串口字节

上一节我们了解了基本的读取串口字节的程序,接下来我们写一个稍微复杂点的程序,来实现即可写入又可读取串口的程序,如下所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行程序,用Labview程序向串口调试助手发生数据:
在这里插入图片描述
在这里插入图片描述
显然,通信没有问题!

官方示例

我们打开Labview中的一个官方示例,来欣赏下官方的基本串行写入和读取程序,打开程序框图如下:
在这里插入图片描述
再看看对应的前面板如下所示:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LabVIEW串口通信实际操作 的相关文章

  • c++实现串口通讯踩坑(argument of type “char *“ is incompatible with parameter of type “LPCWSTR“)

    在C下 可以使用outportb和inportb进行串口通讯 C 没有这两个函数 那就使用createfile吧 通过网上搜到读取打开串口的例子 如下 include
  • USB转RS485串口电路设计

    USB转串口芯片的串口信号一般为 TTL CMOS电平 在实现半双工 RS485 串口时需要外接485电平转换芯片 设计中需要有信号来控制 485 转接芯片的发送和接收使能端 建议选择自带485控制引脚的转接芯片 如 CH340 CH342
  • stm32F103C8T6控制DHT11

    stm32F103C8T6控制DHT11串口打印 stm32F103C8T6控制DHT11串口打印学习经验总结 本人借鉴了许多大佬们的资料 这是个人学习的见解 如发现错误之处 麻烦指导指导 借鉴链接 https blog csdn net
  • STM32双串口

    STM32双串口的使用 最近老是需要stm32通过串口去跟WiFi模块 蓝牙模块 openmv进行数据交互 然后需要用到stm32的串口调试 就把这个程序整理成一个工程 方便调试 实验目的 外设模块 WiFi模块 蓝牙模块 openmv 发
  • 基于labview实现MYSQL数据库查询功能

    前言 labview是一款功能强大的图形化编程软件 也就是俗称的G语言 本篇将介绍如何利用labview对MYSQL进行列表分页 范围查询及模糊查询等几个可广泛应用的简易功能 但事实上labview并不擅长处理数据库 下面详细代码可体现 数
  • verilog_串口实现

    verilog 串口实现 概述 先了解串口的基础知识 串口是怎样传数据的 什么是波特率 波特率怎么计算 说明 通过Verilog编写串口 通过逻辑分析仪与串口模块的对接来进一步了解串口的应用 文章目录 1 什么是波特率 波特率怎么计算 1
  • C#串口通信三步走

    第一步 实例化串口通讯类 SerialPort sp new SerialPort 第二步 设置串口信息并打开串口 串口设置 public void SetSP string PortName string BaudRate string
  • 蓝桥杯51单片机之数码管从点亮到动态时钟的实现【单片机开发初学者必掌握】

    文章目录 一 点亮数码管 二 八位数码管同时从0到F 三 显示学号 指定数字 四 中断机制的引入 五 利用中断实现动态时钟 一 点亮数码管 首先看一下案例源码 include
  • 串口收发最高位为0

    串口收发最高位为0 昨天在现场 读取电表度数的时候发现一个问题 读取字节最高位不管多少全部为0 搞的我相当郁闷 最后没有办法 只好人工给他置1 今天到了公司打开 linux 程序设计 翻到终端这一章 152页 赫然写着几个大字 ISTRIP
  • 小记stm32实现串口接收的四种方法(hal库)

    开发环境 STM32CUBMX 正点原子STM32F407ZGT6探索者开发板 MDK ARM 5 31 第一种方式 直接接收 配置外部时钟源 2 配置时钟树 3 配置串口一 生产代码后进入工程 重定向printf到串口1 建议在usart
  • 基于STM32F103RB的模拟液位检测告警系统(已实现)

    这次先看一下老朋友STM32 有关Zigbee的内容 Z stack协议栈和基于Zigbee的环境温湿度 烟雾传感器的环境监测系统 等有时间再更 基于STM32的模拟液位检测告警系统 记得好像是某一届蓝桥杯省赛题 基于STM32告警系统介绍
  • Unity缺少System.IO.Ports

    问题 我需要使用串口相关的类库 但是引用不到 怎么解决的 PlayerSetting 界面把 Api Compatibility Level 切换为 NET 4 x 然后就好了
  • 使用ROS通过串口获取遥控器信号(二)

    使用ROS通过串口获取遥控器信号 二 十 编写串口通信节点 sudo gedit catkin ws src uart communication src commu cpp 加入以下代码 根据实际情况修改自己的代码 注意serial的AP
  • 玩转ESP8266-01——AT指令集

    该指令集是接上一个 链接 初识AT指令 全部是根据本人在使用esp8266过程中用过的指令 可能有不全 有错误 还请理解指正 一起学习 AT指令集 一 基础指令 1 测试指令 2 复位指令 重启 二 设置指令 1 设置波特率 2 设置工作模
  • USB转串口那些事儿—USB转串口工作原理及应用

    一 简介 USB转串口即实现计算机USB接口到物理串口之间的转换 可以为没有串口的计算机或其他USB主机增加串口 使用USB转串口设备等于将传统的串口设备变成了即插即用的USB设备 USB虚拟串口应用特点 USB应用广泛 支持热插拔 传输速
  • MATLAB滤波算法和LabVIEW心电图诊断系统

    心电图的生理 我们的目标是构建一个心电图 ECG 它不仅可以自动计算心率 还可以检测其他心脏异常 这需要对 ECG 信号进行更高级的分析 为了实现这一目标 需要完成几个步骤 如下面的流程图所示 在我们详细介绍如何构建 ECG 之前 了解 E
  • LabVIEW2020 利用LabSQL访问MySQL8.0.17.0数据库方法和注意点

    由于工作需要 需要通过Labview软件访问MySQL 在这之前百度了方法 按照方法一步一步实现 始终无法实现 最后通过各种百度各种方法试 终于成功了 现在将方法记录如下 一 需要软件 MySQL 数据库软件 我的是Mysql 8 0是64
  • 在python中读取TDMS文件如何使用tdms info命令?

    我想知道Labview生成的tdms文件的内容是什么 按照此site 我用Python写 import numpy as np from nptdms import TdmsFile from nptdms import tdms read
  • 是否可以在 git-extensions 中为特定文件扩展名设置 diff/merge-tool ?

    我刚刚开始使用 LabView 进行开发 这对我来说是全新的 我想使用 git 扩展来处理我的版本控制 由于源位于 vi格式 我无法使用普通的 diff 工具 源是二进制的 幸运的是 LabView 附带了专用的差异和合并工具 这似乎非常有
  • Python UDP广播不发送

    我正在尝试从 Python 程序到两个 LabView 程序进行 UDP 广播 我似乎无法发送广播 我不确定我的套接字初始化错误在哪里 广播似乎足够简单 据我所知 其他电脑没有收到任何数据 另外 我将来还需要这个程序来接收来自其他电脑的数据

随机推荐

  • lol韩服服务器满了显示什么意思,LOL韩服再次回收超级账号,“rank分出现问题,针对LPL的选手吗”...

    前言 S11赛季的比赛正在如火如荼地进行中 相信绝大多数的玩家都关注了 最近一段时间的春季赛 lpl赛区和lck赛区的整体状态是非常不错的 因为今年msi在冰岛举办 所以很多的赛区都希望能够拿下这一次的冠军 如果不出意外的话 dwg战队应该
  • 关于AJAX请求服务器后缓存数据,造成没有及时刷新的问题

    最近在做项目的时候 使用了ajax去请求服务器的数据 刚开始还可以 我测试一切运行正常 我不是专业的测试人员哈 所以还是有些问题没有测出来哈 后来ajax请求的数据变化了 但是页面数据没有变 依然是第一次的数据 这个问题害我整了好大半天啊
  • My Fifteenth Page - 快乐数 - By Nicolas

    今天小尼写的这篇page针对的是leetcode上的202 快乐数所写的 首先小尼先简单介绍一下这道题 就是给定一正整数 然后每一次将该数的每一位都平方再相加得到一个新的数据 我们不断的反腐操作 最后如果这个数经过多次操作后返回到了原来的这
  • 戴尔笔记本开机logo进度条时间长的解决办法

    戴尔笔记本开机 出现进度条 需要等30s才出现系统界面 这种问题的一个原因是 BOOT List option 选项选了UEFI 将此选项设置为Legacy 进度条瞬间几秒钟跳过 亲测有效 系统是win10
  • 静态分析领域中弱点、不足、缺陷、故障等概念之间的关系

    在CWE范畴内 讨论的核心内容是 弱点 及 不足 而在软件静态分析范畴内 研究的核心内容是 缺陷 及 故障 CWE已经越来越多的被静态分析用于重要参照标准 因此有必要将这几个关键概念之间的关系梳理清楚 弱点 Weakness 定义 CWE中
  • 完美解决 Treating Unicode character as whitespace的问题

    在我们 copy 一些文本到 Xcode 里面的时候会有 Treating Unicode character as whitespace 的警告 此时认真检查你 copy 的文本部分 回车 空格是否有问题 当然一般检查不出来 如果 直接删
  • 概率论【合集】--猴博士爱讲课

    重点章节 条件概率 期望等等 第一课 随机事件和概率 1 6 无放回类题目 一次摸多个 例 1 盒子里有 3 绿 4 红共
  • 外网访问内网机器中的VMware虚拟机服务问题排查

    场景 家里的电脑 win10 搭了个开发环境 并安装了VMware的linux虚拟机 在虚拟机中通过docker部署了几个服务 希望能在公司访问家里的服务器 问题 内网访问虚拟机服务成功 外网访问失败 vm虚拟机通过桥接连接外网 固定ip
  • jQuery基本介绍和 DOM 对象互相转换

    文章目录 jQuery基本介绍和 DOM 对象互相转换 基本介绍 jQuery 的原理示意图 JQuery 基本开发步骤 说明 jQuery简单示例 jQuery 对象和 DOM 对象 什么是 jQuery 对象 DOM 对象转成 jQue
  • android 后台服务长时间运行---解决方案

    android 后台服务启动方式 第一种 Activity界面通过Intent启动相关service 等价于 Timer定时器 TimerTask定时任务 第二种 Activity界面通过发生广播启动相关service 等价于 AlarmM
  • java 数据脱敏工具类

    import org apache commons lang3 StringUtils p 脱敏工具 p author ocean version 1 0 0 date 2023 5 4 14 51 public class Encrypt
  • 灰灰-309-射击比赛

    本题目给出的射击比赛的规则非常简单 谁打的弹洞距离靶心最近 谁就是冠军 谁差得最远 谁就是菜鸟 本题给出一系列弹洞的平面坐标 x y 请你编写程序找出冠军和菜鸟 我们假设靶心在原点 0 0 输入格式 输入在第一行中给出一个正整数 N 10
  • Redis 7 第六讲 主从模式(replica)架构篇

    此篇开始进入架构篇范围 艸 理论 即主从复制 master以写为主 Slave以读为主 当master数据变化的时候 自动将新的数据异步同步到其它slave数据库 使用场景 读写分离 容灾备份 数据备份 水平扩容 主从架构 演示案例 注 m
  • C# websocket的使用

    实现背景 有两个设备 A跟B两个冰箱 两者都装有app 现在需要在A上面控制B进行开门 A需要调用服务器接口 然后服务器发送消息控制B开门 此处记录下服务器端实现过程 1 包使用的Fleck 直接去nuget里下载安装即可 2 这一步可忽略
  • 用命令修改宝塔面板修改默认端口

    大家好 我是胸怀像 欢迎关注微信公众号 雄雄的小课堂 前言 下面我们来让incode ai来介绍一下宝塔面板 如下所示 宝塔面板是一款运行在 Linux 操作系统上的免费管理面板 它可以提供给用户如网站部署 数据库管理 文件管理 SSL 证
  • SpringMVC接收复杂参数

    SpringMVC接收复杂参数 1 前言 以前后端这边接收的参数都是比较简单的 直接使用 RequestParam或者 PathVariable在或者用一个对象就可以接收到了 但是最近突然遇到了前端需要传递很复杂数据的情况 以前没有想到过的
  • Linux 安装 redis6.0.8,make 时报错 make[1]: *** [server.o] Error 1 的解决方法

    原因是因为 gcc 版本过低 yum 安装的 gcc 是 4 8 5 的 需要升级 gcc 升级过程如下 yum y install centos release scl yum y install devtoolset 9 gcc dev
  • 虚拟机比较: Multipass,VirtualBox,qemu

    目录 官网 https multipass run install 参考 https zhuanlan zhihu com p 453901901 https www cnblogs com satire p 15681820 html 问
  • 解决Python报错:PermissionError: [Errno 13] Permission denied

    这个错误是因为文件不存在或者文件已经被打开了 导致python没有权限去读写它 建议 先去检查文件是否存在 检查这个文件有没有打开 如果被打开的话 那么python是没有权限对它进行读写的 注意的是 有一些c盘的文件需要管理员授权 当然这个
  • LabVIEW串口通信实际操作

    理论基础 LabVIEW串口通信基础知识 读取串口字节 我们新建一个空白 VI 借助串口调试助手和虚拟串口 在 LabVIEW 中编写的一个最简单的例子 写一个基本的读取串口字节的程序 在程序框图中编程如下 注意这里 串口配置放到循环外 不