串口与Labview通讯的调试

news2024/12/29 14:06:00

在学习Labview和串口的通讯和调试的时候。首先必须先了解一些Labview的基础知识,然后就是了解串口,在调试的过程中,我们需要下位机来辅助我们的程序编写与调试,也就是我们平时使用的单片机,如果没有单片机也不要紧,可以使用虚拟串口来把电脑的串口相连接,这样也可以达到我们的预期效果

  1. 工欲善其事,必先利其器

让我们先来做一些准备工作

在这里可以把两个虚拟的串口相连接,在上图的左边,可以看到我已经把COM1和COM2相连接,虚拟串口的下载链接我已经放在下面了,大家可以自行下载

链接: https://pan.baidu.com/s/1yEeb3NbJJSXEtgry3zPEKw?pwd=3pwt 提取码: 3pwt

在进行串口调试时必须下载NI-VISA

https://www.ni.com/zh-cn/support/downloads/drivers/download.ni-visa.html#544206

驱动链接放在这了下载完成之后需要用破解软件进行破解具体流程与破解Labciew时相同,点绿即可

串口调试同时也离不开调试工具,这是我常用的串口调试工具也将下载链接放在下面了

链接: https://pan.baidu.com/s/1S894W_KrHFf2F_dXLRu3Yw?pwd=9nqf 提取码: 9nqf

当以上三个步骤都完成了之后我们就可以进行Labview程序的编写了

注:演示使用Labview2024

  1. 上手编程

首先创建一个新的vi

创建完了新的vi以后我们在前面板上放置一个VISA资源名称(也就是端口)

创建好端口后我们再放置一个显示控件,用于显示接收的数据;一个输入控件,用于发送数据,再创建一个布尔用于发送

进行到这里可以使用修饰控件对我们的框架进行修饰使它看起来更加的美观

前面板布置完成然后我们完成程序框图的搭建。

到手一个程序最先做的应该就是放置一个while,使程序可以重复运行 接着将我们配置串口助手所需要的控件拉出来

然后搭出一个最简单的框架,再给他加一个发送的条件结构,简单的连续过后基本的程序框架就搭建完成了。最后也不要忘记while里放置一个延时,防止程序卡死

当我们进行到这一步时发现程序任然无法运行,还存在错误

问题在于visa读取有未连接或错误的接线端

这里需要注意,这个visa读取控件的字节总数是必须要接线的,如果不接或接错就会出现刚才上述问题

那要如何去解决?字节总数这部分又该怎么去解决?这里我有两种方法

  1. 直接放置常量,这种办法快捷

可以在放置你个visa串口字节数控件

这个控件可以把读取缓冲区的数据读取,如下图一样把他接在电路中即可

最后把串口和终止符连上一个简易的串口助手就完成了

注意调试工具的波特率需要和Labview程序的波特率相同,默认未配置的波特率为9600

我们使用调试工具进行发值,发现发送值只能停留一段很短的时间,这是因为我们的程序只能接受一段时间,而如果让他显示更多的时间,改变当时设置防止程序卡死的延时时间即可

值得注意的是:如果这里在运行的时候报了读取的错误我总结了几个可疑的地方

  1. 串口冲突,两个地方连接了相同的串口
  2. 延时时间设置不正确,程序卡死
  3. 虚拟串口设置有问题
  4. 串口长期未接收到数据

修改while延时时间后就可以达到我们想要延长显示时间的目的

但是单单只是延长显示时间是不够的我们要想办法把接收到的数据一直显示在接收的显示控件里

想要达到这一效果只需要在接收部分加上一个条件判断即可

如下图所示,我没有改变延时的时间,没有在调试工具定时发送,但是可以长期保持在接收界面里

解决了这一问题之后,我们尝试用自制的串口助手对调试工具发数据

多次发送,调试工具可以把每一次的结果保留在显示界面上,而我们的串口助手只能保留最近一次的结果,如何才可以做到这一点呢?我有两招来解决

1.我们可以用连接字符串控件与接收的局部变量来完成

像这样连接就可以达到我们预期的效果

  1. 我们可以用连接字符串控件与反馈节点来完成

像这样

完美解决

如何发送16进制呢?其实非常简单

把输入控件处转换为16进制显示即可

注意调试工具处也要转换成16进制

发送部分同理

除了上述的方法,我们还可以从Labview自带的查找范例

双击即可打开范例

但是在使用的过程中我发现了这个范例有不足之处,他只能做到单收单发,但是稍加修改也能达到理想的效果,程序的思路是,while循环每进行一次都会计数,利用这一点,我们可以对循环次数进行判断,当循环次数为单数时程序进入读取状态,当循环次数为双数时程序进入写入状态。

这就是第二种方法,相比较第一种这种更快跟方便

上述的调试都是介于虚拟串口调试,我们自制的串口用于硬件上也是可以的

用下载器把电脑与单片机连接

调试的思路是通过自制的串口助手对单片机开发板发值,电亮led灯

这是发送06的结果

这是发送0f的结果

然后就是验证串口助手是否可以接收到单片机发送的数据

程序的思路是每当按键按下,都会发送一个0xff

链接: https://pan.baidu.com/s/1gIlobwjBXSnPL3CC0Atosg?pwd=6cjy 提取码: 6cjy

本次硬件调试的单片机代码我已上传至网盘

Labview程序链接,这是我的串口助手: https://pan.baidu.com/s/1ehjF7ZN43wdzDhZGvQUBaQ?pwd=iw2t 提取码: iw2t

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

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

相关文章

不会抖音剪辑怎么办?这4款拿走不谢

不少人想做自媒体,但是就光视频剪辑这一点难住了不少人,其实视频剪辑并没有大家想的那么复杂,直接用一些简单的剪辑视频工具也可以处理。作为一个短视频剪辑新手,我最近尝试了几款流行的视频编辑软件,今天就来和大家分…

Docker(完整实验版)

目录 一 Docker 1.1 Docker简介 1.1.1 什么是docker? 1.1.2 docker在企业中的应用场景 1.1.3 docker与虚拟化的对比 1.1.4 docker的优势 1.2 部署docker 1.2.1 配置软件仓库 二 Docker的基本操作 2.1 Docker镜像管理 2.1.1 搜索镜像 2.1.2 拉取镜像 2…

【串的相关概念】

1.前情回顾: 2.串的定义 注意这里的字符是任意字符:包括特殊字符和空格 2.1串的相关术语 2.2分析如下: 子串与主串 可以类比 子集与集合的关系 且空串也是子串的一种 注意空格串与空串的区别 位置是从1开始设定的(第一个位置开始…

【java入门】关键字、标识符与变量初识

🚀 个人简介:某大型国企资深软件开发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~ 💟 作 者:码喽的自我修养&#x1f9…

Java 入门指南:Java 并发编程 —— 并发容器 PriorityBlockingQueue

BlockingQueue BlockingQueue 是Java并发包(java.util.concurrent)中提供的一个阻塞队列接口,它继承自 Queue 接口。 BlockingQueue 中的元素采用 FIFO 的原则,支持多线程环境并发访问,提供了阻塞读取和写入的操作&a…

「C++」类和对象(2)

欢迎大家来到小鸥的类和对象第二篇博客~ 目录 类的默认成员函数 构造函数 构造函数的特点: 析构函数 析构函数的特点: 拷贝构造函数 拷贝构造的特点: 结语: 本篇会着重讲解类和对象中的难点:类的默认成员函数 …

Ubuntu环境的MySql下载安装

下载压缩包 此文章下载的mysql版本位5.7.29 sudo wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.29-1ubuntu18.04_amd64.deb-bundle.tar解压缩 sudo tar -xvf mysql-server_5.7.29-1ubuntu18.04_amd64.deb-bundle.tar命令解释 -x:…

鸿蒙Next-拉起支付宝的三种方式——教程

鸿蒙Next-拉起支付宝的三种方式——教程 鸿蒙Next系统即将上线,应用市场逐渐丰富、很多APP都准备接入支付宝做支付功能,目前来说有三种方式拉起支付宝:通过支付宝SDK拉起、使用OpenLink拉起、传入支付宝包名使用startAbility拉起。以上的三种…

走心机做不锈钢哪个牌子好

不锈钢是现代生活中不可或缺的材料,它广泛应用于厨房用具、家具、建筑等领域。在市场上,有许多不锈钢需要加工零件供消费者选择,那么在选择不锈钢加工零件时制品时,应该如何选择数控走心机,找到最好的品牌呢&#xff1…

CodeSys中动态切换3D模型

文章目录 需求研究结果 需求 在前面的【CodeSys开发3d机械臂显示控件】中,我们已经实现了一个可以显示3d模型的控件。但是这个控件是和使用的3d模型绑定死的,在安装这个控件时就已经将模型文件于控件一起安装到codesys中。 假如我想在不同的工程中&…

Numpy中type()、ndim、shape、size、dtype、astype的用法

目录 numpy基础介绍示例分析及总结:itemsize、nbytes函数 numpy基础介绍 Numpy 补充了Python语言所欠缺的数值计算能力,是其它数据分析及机器学习库的底层库。因其完全标准C语言实现,运行效率充分优化。最重要一点是开源免费。numpy的核心是矩阵&#x…

思维导图怎么画好看又简单?5个软件帮助你快速进行思维导图绘制

思维导图怎么画好看又简单?5个软件帮助你快速进行思维导图绘制 思维导图是一种有效的思维整理和展示工具,可以帮助你将复杂的想法进行可视化,提升工作和学习效率。为了让思维导图既好看又简单,选择合适的软件能够大大提高绘制效率…

UE中Camera Clip截面修改

UE中Camera无法修改远截面(FarClipingPlane),只可修改近截面(NearClipingPlane): 至于为什么无法修改远截面,看下代码,尝试继承UE的CameraComponent打印出相机投影矩阵: #include …

python编程知识(实现数据加密和解密)

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

在模板中使用 Django 会话

在 Django 中使用会话(session)可以让你在用户访问网站的过程中存储和访问临时数据。我们可以利用会话在速度计算器的例子中存储和显示上次计算的结果。 1、问题背景 在 Django 中,可以使用会话来存储用户数据。在某些情况下,我们…

双绞线如何抑制传导干扰

一.案例简介 产品去做CE认证时,被告知传导抗扰未通过,网络会断连。 剖开网线外皮,发现内部是散装的,非双绞线。因此换成双绞线网线,复测,传导抗扰通过了。 图1 非双绞线和双绞线示意图 为什么…

经销商数据对接方案:借助轻易云数据集成平台实现高效互联

在现在很多品牌方的实际需求中,品牌商与经销商之间的渠道博弈日益激烈。品牌商渴望掌握经销商的销量和库存数据,以便更好地规划生产和库存,提升品牌影响力;经销商则期望在避免库存积压的同时抢占市场,加速资金周转以获…

活动预告|“AI+Security”系列第3期:AI安全智能体,重塑安全团队工作范式

由安全极客、Wisemodel社区、InForSec网络安全研究国际学术论坛和海升集团联合主办的 “AISecurity”系列第3期: AI 安全智能体,重塑安全团队工作范式 线下活动 将于2024年9月11日下午14:00 在中关村智造大街G座路演厅 正式举行 欢迎扫描海报中二…

Javaweb(前端)

目录 Web开发 Web前端 HTMLCSS 盒子模型 JavaScript js引入方式 js基础语法 js函数 js对象(JSONBOMDOM) js事件监听 Vue ​编辑Vue快速入门 Vue常用指令 Vue生命周期 Ajax 原生Ajax Axios YApi(应用网页) 前端工程…