精华内容
下载资源
问答
  • labview串口通信
    2022-02-06 20:52:51

    LabVIEW串口通信故障处理步骤
    串口设备不响应命令时,请按如下步骤排除故障。
     


    确保串口线工作正常。坏了的串口线会导致这一问题。
    用零调制解调器将计算机和计算机之间的串口通信收发信号反转。
    运行LabVIEW自带范例Basic Serial Write and Read.vi来建立和仪器之间的通信,该范例位于examples\instr\smplserl.llb目录下。
    许多仪器都需要一个回车或者一个换行来结束命令字符串。LabVIEW中的Serial Port Write.vi只发送字符串输入控件中的那些字符,不会自动加上终止字符。许多终端仿真包(如Windows HyperTerminal)会在传输结束时自动添加一个回车。而在LabVIEW中,如果仪器需要相应的终止字符,您需要在Serial Port Write.vi中的字符串输入中自己添加合适的终止字符。
    有些仪器需要回车符(\r);有些则需要换行符(\n)。当您点击了键盘上的换行符之后,LabVIEW会插入一个\n(换行符)。如要插入回车符,可使用Concatenate Strings函数来添加一个回车符常量;或者从字符串快捷菜单中选择'\' Codes Display之后,手动输入\r 。
    程序如下附件所示。
    LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序
    文字内容均在附件Word中,同时上文中提到的例子和资料,均在word中的附件里,可点击下载。登录www.bjcyck.com可以查看更多详细信息。这里只是简略的介绍,有任何关于LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序相关问题,请与我们联系。
    链接地址为:http://www.bjcyck.com/nd.jsp?id=370#_np=2_358

     

    更多相关内容
  • LABVIEW串口通讯实例,可以用于学习串口通讯
  • 串口程序,以及传感器的上位机程序,已经验证过
  • LabVIEW串口通信

    万次阅读 2022-05-03 15:50:46
    LabVIEW串口通信使用范围非常广泛,例如,通过串口使用ModBus协议驱动仪器、串口驱动PLC设备等。在LabVIEW中有专业的VI(VISA)可以驱动串口进行数据读、写操作,在函数面板 → 仪器I/O → 串口子面板中。

    目录

    1、串口写入数据

    2、串口读取数据

    3、清除缓存区

    4、设置缓存区

    5、数据超时

    6、数据终止符


    串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节的通信方式。在LabVIEW中串口通信使用范围非常广泛,例如,通过串口使用ModBus协议驱动仪器、串口驱动PLC设备等。

    在LabVIEW中有专业的VI(VISA)可以驱动串口进行数据读、写操作,在函数面板 → 仪器I/O → 串口子面板中,如下图所示:

    相应的说明可参见帮助文档,如下图所示:

    通过几个简单的Demo示例了解VISA串口函数的使用方法。

    代码下载:LabVIEW串口通信-嵌入式文档类资源-CSDN下载

    1、串口写入数据

    打开串口COM3,通信速率115200/bps,写入数据:A1$,示例代码如下所示:

    2、串口读取数据

    打开串口COM8,通信速率115200/bps,读取20个字节长度数据,示例代码如下所示:

    3、清除缓存区

    以上两种方法介绍了LabVIEW串口最基本的读、写操作,实际上直接这样使用的存在问题的。 

    因为在大多数情况下串口设备不管在LabVIEW执行或着关闭的状态都一直在上传数据。端口在收到第一个字符的时候可能没有被配置好,所以它读到的是无效的缓冲区信息,这样直接开启后进行读、写数据极其容易导致错误。

    为了解决这样的问题,在串口配置后需要放一个延时(大约XXXms),就可以让Serial port有足够的时间完成设定。再来使用VISA清空I/O缓冲区函数,就可以将接收缓冲区中不正确的资料清除。对串口读取功能进行优化,示例代码如下所示:

    以下示例中读取数据长度的方式进行优化,通过属性节点(Bytes at Port)获取字节长度,无需再手动定义长度,避免定义长度太短导致接收不全或者定义数据过长导致浪费情况。

    4、设置缓存区

    目前VISA串口缓冲区大小最大可达到 2的32次方(4,294,967,296 字节),可以在该范围内定义缓存区大小,例如以下示例,定义缓冲区大小为80000字节。

    5、数据超时

    在初始化VISA串口时,可以设置超时时间,当读、写数据超出时间,会提示错误信息。

    以下示例定义串口通信超时时间是10秒。

    6、数据终止符

    在初始化VISA串口时,可以设置终止符,通过调用终止读取操作,从串行设备读取终止字符后读取操作会自动终止。例如以下示例,读取到“$”字符(十六进制:0X36)时,会停止读取操作。

    代码下载:LabVIEW串口通信-嵌入式文档类资源-CSDN下载


    拓展学习

    1、VISA错误代码 - LabVIEW 2016帮助 - National Instruments 

    2、用NI-VISA为串口分配大缓冲区时出现的问题 - National Instruments 

    3、LabVIEW智能示波器(普源DS1000E)_不脱发的程序猿的博客-CSDN博客

    4、LabVIEW串口调试助手_不脱发的程序猿的博客-CSDN博客 

    展开全文
  • labview串口通讯.vi

    2021-08-06 11:46:29
    labview 串口通信小程序 适合调试串口与labview 连接
  • labview串口通讯vi

    2022-03-23 17:22:35
    包含两个labview串口通讯vi。
  • labview 串口通信

    2019-01-30 15:25:51
    使用labview进行串口通信的收发和读取信息值,如何连续收发值和读取值
  • Labview 串口通讯源代码
  • 一个基于labview的具有串口助手功能的编程 刚入门labview的学生可以将其作为练习
  • labview串口通信

    2018-05-07 21:59:08
    利用labview软件编程实现通过串口收发数据及定时收发数据。
  • Labview串口通讯

    2019-04-08 14:53:53
    用于串口通讯,上位机与下位机,计算机与控制或者驱动硬件的通信与数据交换
  • labview串口通讯详解

    2014-07-30 12:58:33
    非常好的介绍labview串口通讯的文档,含详细源代码
  • Labview串口通信程序

    2018-09-04 21:06:44
    Labview写了两个基本的串口通信程序,一个是简单的读串口程序,另一个是读写串口程序,对于学习有极大的帮助。
  • labview 串口通讯 实例,可以看看,
  • LabVIEW串口通信基础知识

    千次阅读 多人点赞 2021-05-25 16:04:50
    Labview串口通信开发实例 LabVIEW学习笔记(十一)——利用VISA进行串口通信 随着VISA( Virtual Instruments Software Architecture,VISA ) 的出现,使得一套仪器控制程序适用于种硬件接口成为可能,通过调用相同的...

    参考:
    Labview串口通信开发实例
    LabVIEW学习笔记(十一)——利用VISA进行串口通信
    随着VISA( Virtual Instruments Software Architecture,VISA ) 的出现,使得一套仪器控制程序适用于种硬件接口成为可能,通过调用相同的VISA库函数并配置不同的设备参数,就可以编写控制各种 I/O 接口仪器的通用程序。 通过VISA用户能与大多数仪器总线连接,包括GPIB、USB、串口等等,无论底层是何种硬件接口,用户只需要面对统一的编程接口—VISA。所以今天来学习如何利用VISA进行串口通信。

    串口

    串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus 或者 USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据

    串口通信

    串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
    典型地,串口用于ASCII码字符的传输。通信使用3根线完成:
    (1)地线
    (2)发送
    (3)接收
    由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。
    串口通信最重要的参数是波特率数据位停止位奇偶校验
    对于两个进行通信的端口,这些参数必须匹配:

    a.波特率

    这是一个衡量通信速度的参数。他表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800HZ。这意味着串口通信在数据线上的采样率为4800HZ。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。

    b.数据位

    这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0-127(7位)。扩展的ASCII码是0-255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。

    c.停止位

    用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

    d.奇偶校验位

    在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。

    LabVIEW中的串口

    串口VI介绍

    LabVIEW的串口通讯VI位于Instrument I/O Platte的Serial中,包括:
    在这里插入图片描述

    VISA函数

    NI​驱动​程序​下载——VISA函数
    VISA 函数在函数面板的仪器I/O → 串口子面板中,通过串口子面板中的这些 VISA 函数可以与GPIB、USB、串口等中的任何一种总线通信。
    用 LabVIEW 来写串口驱动控制仪器,只需要下图的几个函数即可。事实上,真的只需要下面几个函数:
    在这里插入图片描述
    一般的串口控制结构是:配置(打开)串口、读写串口、关闭串口,接下来我们依次来学习这三个步骤。

    1.1 配置(打开)串口

    配置串口是进入串口通讯的门槛,只有配置成功了,才能进行正确的通讯。首先我们看下 VISA 配置串口函数:
    在这里插入图片描述
    这里有个小技巧,配置串口时最好是在对应的参数端口那里,右键,新建常量或者输入控件,然后再在新建出来的常量或者输入控件上面修改。因为,新建出来的数据类型,肯定是对的。接下来解释下主要的输入参数:
    (1) 启用终止符: 目的是使串行设备做好识别终止符的准备,默认值为TRUE, VI_ATTR_ASRL_END_IN属性设置为识别终止符;如值为FALSE,VI_ATTR_ASRL_END_IN属性设置为0(无)且串行设备不识别终止符。
    (2)终止符:通过调用终止读取操作。从串行设备读取终止符后读取操作终止。 0xA是换行符( \n )的十六进制表示。消息字符串的终止符由回车( \r )改为0xD。
    终止符的设置如下所示:
    在这里插入图片描述
    (3) 超时:指定读/写操作的时间,以毫秒为单位。 默认值为10000ms,即10s。如果你设置了超时,等待超时时间到了,程序就不执行了,错误输出会输出错。
    (4)VISA资源名称:指定要打开的资源。VISA资源名称控件也可指定会话句柄和类。
    (5)波特率是传输速率。 默认值为9600。
    (6) 数据位是输入数据的位数。 数据位的值介于5和8之间。默认值为8。
    (7)奇偶指定要传输或接收的每一帧使用的奇偶校验。

    1.2 VISA读取

    首先看下 VISA 读取帮助:
    在这里插入图片描述
    左边输入有个 VISA 字节总数,你必须指定你要读的字节数。那么问题来了,这个字节数怎么确定呢?
    在这里插入图片描述
    一般读取串口的通信程序都如上图所示, VISA 读取函数 的 “读取字节数” 这个输入端口设置十分关键。由于在串口通信中,如果指定读取 100 个串口缓冲区的字节数,如果当前缓冲区的数据量不足 100 个时,程序会一直停在 VISA 读取 这个节点上,如果在超时的时间(默认是 10 秒)内还没有凑足 100 个数据的话,程序就会报 “Time out” 的错误,如果超时时间设置得太长,有可能导致程序很长时间停止在 VISA 读取 这个节点上。
    因此, 我们常采用上面的解决的办法:使用 “Bytes at Port” 这个串口的属性节点,在仪器I/O子面板下,如下图:
    在这里插入图片描述
    也可以在 VISA 资源线上右键 >> 创建 >> Instr类的属性 >> Serial Settings >> Number of Bytes at Serial Port,如下图所示:

    在这里插入图片描述
    这个属性节点读取当前串口缓冲区有字节数,然后将它的输出连接到 VISA 读取 的 “读取字节数” 这个输入端上即可,这样当前缓冲区中有多少个字节就读回多少个,不会有任何等待。
    目前串口的应用大致有两种类型:一种是仪器控制类型的,一般是上位机发送一个指令,然后下位机作出响应,返回数据给上位机,上位机再读取出来,完成一次通信,即一问一答;另一类是被动接收形的,即下位机会一直发送数据上来。

    展开全文
  • LABVIEW 串口通讯能够实现上位机的功能,接受发数据,并实时绘制波形曲线。
  • LabVIEW串口通信实际操作

    千次阅读 2021-05-27 20:42:15
    LabVIEW串口通信基础知识 读取串口字节 我们新建一个空白 VI,借助串口调试助手和虚拟串口,在 LabVIEW 中编写的一个最简单的例子:写一个基本的读取串口字节的程序,在程序框图中编程如下: 注意这里,串口配置放...

    理论基础:
    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中的一个官方示例,来欣赏下官方的基本串行写入和读取程序,打开程序框图如下:
    在这里插入图片描述
    再看看对应的前面板如下所示:
    在这里插入图片描述

    展开全文
  • LabVIEW编写的串口程序例程,对labview初学有很大的参考意义。
  • LabVIEW串口通讯(数字传送)

    千次阅读 2022-04-10 10:00:02
    在日常使用LabVIEW串口通讯过程中,难免涉及到数字的发送。如果将数字直接写入串口,下位机得到的是对应数字字符的ASCII码。例如:写入的是数字50,直接发送时,下位机得到的是字符“50”。如果利用串口中断,会发生...
  • Labview串口通讯实例

    2018-12-29 11:32:25
    Labview串口通讯实例,可以直接运行,主要简单的演示LABVIEW的串口如何编写,可以与串口调试助手通过虚拟串口直接通讯
  • LabView串口通信程序,上位机通过串口得到的数据可显示在波形面板上
  • 1.电机测速 2.STM32与labview串口通信
  • labview串口通信程序,可以采集数据,回放数据,是个非常好用的资源,很实用
  • LabVIEW串口通讯

    2019-04-18 15:45:00
    LabVIEW串口通信实例:PC机与51单片机串口通信实例,利用VISA进行串口通信
  • LABVIEW做的串口通讯无线温度(DS18B20)采集系统,可以实现对温度数据的采集,波形显示,报警,数据回放和数据保存功能。程序简单易懂,送给有需要的同学学习~
  • 电子-LabVIEW串口通讯通信协议.zip,单片机/嵌入式STM32-F3/F4/F7/H7
  • Labview与单片机的串口通信,程序中加入例如传输协议,并具有判断传输数据可靠性功能,提取所需数据并显示图形。
  • labview 串口通信非常实用,二维码扫码输入样例,供学习设计参考。
  • LabVIEW串口通信教程

    2018-08-31 11:58:35
    LabVIEW串口通信入门教程和小草手把手教你LabVIEW仪器控制

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,461
精华内容 984
关键字:

labview串口通信

友情链接: yecaocms.rar