暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

LabView简单串口编程

虚拟仪器课程设计在即,我很早就想着出一期针对课程设计的串口文章,但串口涉及知识较多,知识的匮乏使我难以下笔。我在本篇就只针对本课程设计,来简单讨论一下串口的使用。

从硬件角度来说,串口是一种通讯,是工业上最常使用的通讯方式之一,用以设备间进行串行通信的数据线称串口线。按电气标准及协议来分又有RS-232、RS485等。串口线连接着PC端和所需控制的仪器,使得双方机器进行信息交互。              

  图一:工业DB9串口线


在本次课程设计,我们用创建虚拟的串口在电脑上模仿我们所需要控制的机器,并用串口调试助手来模拟所控仪器发出的讯息,即是模拟PC端程序(俗称上位机)与要交互的仪器(俗称下位机)之间的数据交互。

   

                   图二:模拟上下位机交互


在此图中,我在后台创建了COM5与COM6相连的一个虚拟端口,并用COM6代表下位机,跟COM5(上位机)进行数据通信。在程序中,需要先对串口进行配置,由串口调试助手的面板也可以看到,有关串口的相对重要的传输配置,有串口号(Serial COM Name)波特率(Baud Rate),停止位,数据位,校验位,数据准备以及流控制,对于前五个名词的概念,还请同学自行探索学习。

其中波特率可以被理解为一个设备在单位时间内发送(或接收)了多少码元的数据,它是对符号传输速率的一种度量,表示单位时间内传输符号的个数(传符号率)。上下位机的通讯,上位机和下位机都扮演着发送和接收数据的角色,所以我们需要将上下位机的波特率设为一致。在我的毕业设计之时,就有着双方波特率不同导致数据乱码情况,当时也是找了好久才解开谜团。

                 图三:简易程序框图


在一开始的文章,我有谈过LabView编程是“数据流”思想,其中之一的体现就是错误簇的存在,同学们可以先在编程函数面板内找找相关错误簇的处理方法(若需要在该课程设计中使用的话)。言归正传,在程序中,有一条贯穿全程的错误簇,该错误簇就是程序数据的流向,在初始和末尾端,还加上了错误簇的输入和输出,该功能可保证在报错时,及时反馈报错原因,会在前面板显示相应的错误代码,错误原因,方便对程序的调试。

在串口开始阶段,为配置串口信息,在此我只配置了串口号和波特率,其他为默认(停止位为1:数据位为8位;无奇偶校验位)。开启串口和末尾的关闭串口(串口资源在使用完毕后若不及时关闭将会报错),在LabView的图像中已经非常明显的VISA Open 和VISA Close,在一些传输的数据位较多的时候,还可以加上设置缓冲区大小和后面处理完数据的清空缓冲区,防止因缓冲区数据溢出导致程序错误。留意到,我将除了串口关闭以外的函数放在了一个while循环内,并且将“为真(T)时继续”给了个强制的真(T),是为了在进行了串口交互后,能一直进行,而不是只交互一次就将串口关闭,这边的思想与之前文章的连续运行和“while”循环的思想类似。

串口初始化等操作的大致框架内,自然就是串口数据的读取和写入,这些就是给各位的发挥时间了,你从下位机读到的数据(VISA Read)做怎么样的限制,从下位机拿到的数据是什么(可创建一个显示控件来debug,清晰明朗),你后续会将这些数据进行怎么样的需求分析及向着你想要的结果靠拢?我们可以写进去什么数据交互给下位机(VISA Write)?在什么前提下才写回给下位机呢?各种不同的需求都可以提出及慢慢实现,还请同学们在课程设计中去发挥。

鉴于篇幅和本人水平有限,串口的交互只能写到这些内容。虚拟仪器课程设计在即,希望该篇文章能给到同学们一些小小的帮助,我希望同学们能不懂就问,无论是哪门课程,都要时刻保持着求知的心。课程设计中,肯定会有很多的难题,希望同学之间积极交流讨论,群里积极交流思路,交换一个苹果,我们还是各自一个苹果,交换一种思想,我们就都有了两种思想


以上内容皆为本人原创,因个人也是初学者,水平有限,编写该文只能算是将一些自己的理解变成一种记录,文章内容或说法可能不太正确或者不太严谨,对于该文的错误和不完善之处,恳请读者指正。

文章转载自虚拟仪器技术及应用,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论