串口与Labview通讯的调试

2024-09-05 22:28
文章标签 labview 调试 串口 通讯

本文主要是介绍串口与Labview通讯的调试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在学习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

这篇关于串口与Labview通讯的调试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1140235

相关文章

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode

LabVIEW FIFO详解

在LabVIEW的FPGA开发中,FIFO(先入先出队列)是常用的数据传输机制。通过配置FIFO的属性,工程师可以在FPGA和主机之间,或不同FPGA VIs之间进行高效的数据传输。根据具体需求,FIFO有多种类型与实现方式,包括目标范围内FIFO(Target-Scoped)、DMA FIFO以及点对点流(Peer-to-Peer)。 FIFO类型 **目标范围FIFO(Target-Sc

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

Java Websocket实例【服务端与客户端实现全双工通讯】

Java Websocket实例【服务端与客户端实现全双工通讯】 现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏 览器需要不断的向服务器发出请求,然而HTTP

起点中文网防止网页调试的代码展示

起点中文网对爬虫非常敏感。如图,想在页面启用调试后会显示“已在调试程序中暂停”。 选择停用断点并继续运行后会造成cpu占用率升高电脑卡顿。 经简单分析网站使用了js代码用于防止调试并在强制继续运行后造成电脑卡顿,代码如下: function A(A, B) {if (null != B && "undefined" != typeof Symbol && B[Symbol.hasInstan