【LabVIEW串口编程】 02 串口发送

先说明一下,跟串口相关的函数都位于下图所示的位置。官方的帮助文档对每个函数有详细介绍,大家有不懂的地方首先查看帮助文档,配合搜索引擎深化理解。

串口发送一次数据过程的可以分为三个步骤:打开串口-->发送数据-->关闭串口。分别对应Confugure Port,Write,Close这三个函数。用这三个函数在LabVIEW中搭建如下程序

一个最简单的串口发送程序已经编写完毕,接下来用XCOM对我们的程序进行验证。

在发送缓冲区中填入“你好”,然后运行程序,可以看到在XCOM中收到了相同的文字。在运行LabVIEW程序前,需要先在XCOM软件中打开串口,这样才能接收到数据。

测试已经完成,回过头来看看编写的程序,看起来最复杂的好像就是“串口配置”这个函数了。不过虽然它有好多接线端,这里只接了一个,其它接线端不接时会有一个默认值,没有特别要求一般都不用修改。一般情况下关注两个接口即可,即“串口资源名称”跟“波特率”。关于波特率,大家暂时理解为数据的发送速度就好了,数据的接收方要以跟发送方相同的速度接收数据才可以接收到正确的数据。可以看到XCOM中选择的波特率是9600,而我们的程序中是没有设定的,因为LabVIEW中默认的波特率就是9600。如果我们要用到其它波特率,就需要对其进行更改,可以通过“创建常量”或“创建输入控件”的方式进行更改。如果没有特别说明,后面的演示中使用的波特率都是9600。

接下来我们增加难度,让LabVIEW发送0、1、2、3……的数字,每隔1秒发送一次。对程序做出如下修改:

在原来的程序基础上添加while循环,并加入1000ms等待,让发送程序每隔1s执行一次。并且将循环次数发送出去,实现了刚才的需求。这里要注意串口写入函数接收的数据类型为字符串,而循环次数为一个数值,所以用到了“十进制数据至字符串转换”这个函数,该函数位于字符串选板“数值/字符串转化”中。还通过“连接字符串”在数据后面追加了回车和换行,让数据不会连在一起,方便我们查看。

到这里我们貌似已经实现了刚才提出的要求,但其实还有一些不妥。我们思考一下,假如房间里有5个人要出去,顺序应该是 开门-->5人依次出去-->关门,而不是 开门-->出去1人-->关门 循环5次。发现问题了吧,打开串口、关闭串口的操作一直在循环执行!这两个步骤放在循环外面就好了,所以正确的程序应该是下面这样。

好,现在我的需求又变了,我想通过一个按键来控制什么时候发送数据,即我可以在文本框输好内容,然后按下发送按键,数据被发送出去。

应该怎么办呢?我们可以添加一个事件结构,添加一个按键按下的事件,然后在事件中发送数据。最终完成的程序如下,测试截图就不放啦,大家可以自己试一下。

如果需要发送16进制的数据,在文本框或字符串常量上右键将显示方式改为16进制显示即可。

至此,关于串口发送的内容已经讲解完毕。大家可以比较一下从发送你好到按键发送的难易度,其实我们最后面的程序已经实现了类似串口助手的部分功能。做东西就是这样需要循序渐进。

不知大家有没有发现,我们的程序有一个特别不好的地方,在运行之前必须先选择串口,否则就会报错,这个体验简直太糟糕了!看看人XCOM,打开之后再选择串口,然后还有按键控制串口打开关闭,这才是一个好用的软件该有的样子啊,回头看看自己的,害!

关于这个问题,在后面的讲解中会进行解决。大家也可以自己想办法解决一下。说到底这其实是一个体验感问题,我们做一个软件肯定是要提高使用者的体验感的,类似的这种细节问题有很多,需要多发现多思考,在功能满足的前提下提高软件的体验感,能够让用户更加认可。扯远了哈哈。

文档中出现的测试程序在下方链接下载,下一篇讲解串口接收相关内容。

https://wwa.lanzoui.com/i9fx2la

  • 32
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
附件内容分享的是基于LabVIEW上位机与串口通信,通过LabVIEW上位机显示波形,在分享其实现的源码同时,分享一段LabVIEW上位机与串口通信工作原理。 基于LabVIEW串口波形上位机界面展示: 定义通信格式及功能 因为数据不算复杂,所以定义简单下位机帧格式:帧头(0xAA) 类型字节 数据低8位 数据高8位 保留字节1 保留字节2 校验字节 如果要传送的数据比较多/复杂,则可以参考ModuleBus协议! 主要功能包括: 对帧中的类型字节进行解析,并多通道显示在示波器上 帧偏差校正(这个一般人可能都没有做,造成数据丢失,而我这只要串口传输的数据没错,就能无错漏的解析每一帧) 实时显示读取的每个字节/双字节/4字节 信号保存,保存文件名自动按时间命名,适合查阅 信号回放 对信号进行解析,用指示灯显示 程序关键点展示: 上面虽然简单,但却是功能的最主要部分,包括帧头查找和错帧处理的程序。错帧发送的情况是:比如从串口中独到的帧并不是从帧头开始而是帧中间开始,如 0x12(数据) 0x00 0x00 0x00 0xAA(帧头) 0x00 其前面一帧可能是这样:... 0xAA(帧头) 0x01(类型) 0x01(数据) 这样,按查找帧头的方法,数据0x12就会丢失,实际数据按理应该是0x02*256+0x01,错帧处理就是将上一帧尾部不足一帧的部分加到下一帧中,这样下一帧就变成了:0xAA(帧头) 0x01(类型) 0x01(数据) 0x12(数据) 0x00 0x00 0x00 0xAA(帧头) 0x00 判断类型过程很简单,使用switch结构就行了(LabVIEW中就是条件结构同时实现了if和switch),编程时就是注意必须设置默认分支就行! 文件保存我使用了数据表,因为它确实简单,这里的亮点是增加了按时间保存的功能,相当于将时间字符串加入到文件名中,这样便于后期对采集的数据进行查找,不至于混乱。 波形回放就是将存储在数据表中的程序重新显示一遍,比较简单!
### 回答1: NI LabVIEW是一种图形化编程环境,它提供了强大的串口发送编程功能。以下是使用NI LabVIEW进行串口发送编程的步骤: 1. 首先,在LabVIEW中创建一个新的VI(Virtual Instrument)文件。 2. 打开Block Diagram窗口,从Functions面板拖动Serial Communication函数库的VISA Serial子面板中的VISA Configure Serial Port函数并放置在Block Diagram中。 3. 右键单击VISA Configure Serial Port函数,选择Properties以打开属性窗口。在此窗口中,选择需要配置的串口和波特率。 4. 在VISA Configure Serial Port函数的输出线上右键单击并选择创建常数,将此常数与VISA Configure Serial Port函数的 wires 连接起来。 5. 从Functions面板的串口通信函数库中,拖动VISA Write函数并放置在Block Diagram中。将此函数的输入线与VISA Configure Serial Port函数的输出线连接起来。 6. 使用Controls面板上的数据类型控件,如String或Numeric controls,创建要发送的数据。 7. 将要发送的数据线连接到VISA Write函数的输入线上。 8. 右键单击VISA Write函数,选择Properties以打开属性窗口。在此窗口中,选择要发送的数据类型(如字符串或十六进制)。 9. 在Block Diagram中添加其他必要的逻辑,如循环或条件语句,以便根据需要发送数据。 10. 配置完毕后,点击Block Diagram窗口右上方的运行箭头,即可运行程序。 通过以上步骤,就可以在LabVIEW实现串口发送编程。在程序运行时,LabVIEW将会将所配置的数据发送到指定的串口。用户可以根据需求,自行修改和调整程序中的参数和逻辑。 ### 回答2: NI LabVIEW是一款强大的工程系统设计平台,也可以用于串口通信。下面我将简要介绍一下在NI LabVIEW中进行串口发送编程的方法。 首先,我们需要在LabVIEW中引入串口通信的相关组件。可以利用LabVIEW提供的"Serial"函数来实现串口通信功能。通过这个函数,我们可以设置串口的参数,如波特率、校验位、数据位等。 接下来,我们需要配置串口的属性。在"Serial"函数中,我们可以使用"VISA resource name"来指定要使用的串口。可以通过在"VISA resource name"中输入串口的地址来配置串口属性。 然后,我们可以使用"Write"函数来发送数据。在这个函数中,我们可以将要发送的数据作为输入,并将其连接到"Serial"函数的输出端口。这样,当我们执行程序时,所输入的数据就会通过串口发送出去。 另外,我们还可以利用LabVIEW提供的其他函数对串口进行更多的控制。例如,我们可以使用"Serial Read"函数来读取从串口接收到的数据,或者使用"Serial Clear"函数来清除串口缓冲区的数据。 总的来说,通过以上步骤,我们可以在NI LabVIEW实现串口发送编程。利用LabVIEW的图形化编程环境和丰富的串口通信函数,我们可以快速、高效地进行串口通信编程工作。 ### 回答3: NI LabVIEW是一种功能强大而灵活的编程环境,适用于各种应用程序的开发,包括串口发送。在NI LabVIEW中,我们可以使用Serial VIs(Virtual Instrument)来实现串口发送编程。 首先,在LabVIEW中打开新建一个VI(Virtual Instrument),然后拖拽一个Serial Port的组件到主程序界面上。在Serial Port组件上右键选择Properties(属性),打开串口配置窗口。 在串口配置窗口中,选择需要使用的串口号和波特率。在一般情况下,波特率默认为9600,可以根据具体应用需要进行调整。同时,还可以设置数据位、奇偶校验位和停止位等其他串口参数。 接下来,我们需要在程序中添加写入串口的功能。在主程序界面上拖拽一个写入串口(Write)的组件,并将其连接到Serial Port组件。在写入串口组件的输入端连接要发送的数据。 在编程时,我们可以使用LabVIEW提供的各种数据类型,包括字符串、数字、布尔等。根据发送数据的具体情况,选择合适的数据类型,并将其转换为相应的数据格式。 完成程序的编写后,点击运行按钮即可运行程序。LabVIEW会将指定的数据通过对应的串口发送出去,并可以通过串口助手等工具进行接收和验证。 需要注意的是,在进行串口发送编程时,需要确保选择的串口与目标设备连接正常,并且在程序中设置了正确的串口参数。此外,还可以在程序中添加错误处理机制,以防串口发送过程中发生错误或异常情况。 总结起来,使用NI LabVIEW进行串口发送编程非常简单。通过设置串口参数,编写发送数据的功能模块,并添加必要的错误处理,即可实现串口数据的发送LabVIEW的图形化编程界面使得串口编程更加直观和易于操作,方便实现各种应用需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值