基于LabVIEW的串口通信装置及方法制造方法及图纸

技术编号:10309126 阅读:182 留言:0更新日期:2014-08-13 13:02
基于LabVIEW的串口通信装置及方法,属于串口通信技术领域。本发明专利技术是为了解决现有基于LabVIEW编程的串口通信存在数据丢失及解析数据帧程序冗杂耗时多的问题。装置包括UI事件产生模块、UI事件处理模块、数据发送与接收模块、数据解析模块和数据显示模块;方法中形成了四层生产者消费者架构且各模块并行执行,数据解析步骤使用解析状态机的方法对串口接收的数据按照解析帧协议解析得到完整的解析数据帧,保证了通信数据传输的完整性,程序简洁清晰、执行速度快且运行稳定。本发明专利技术用于上位机与下位机之间的串口通信。

【技术实现步骤摘要】
基于LabVIEW的串口通信装置及方法
本专利技术涉及基于LabVIEW的串口通信装置及方法,属于串口通信

技术介绍
串口是计算机上一种非常通用的设备通信协议,是常用的计算机与外部串行设备之间的数据传输通道,通过串口总线与PC计算机组成虚拟仪器系统是目前虚拟仪器的构成方式之一,具有接口简单、使用方便的特点。在虚拟仪器领域,NI公司的LabVIEW作为一个专为测试测量设计的编程语言越来越引人注目,它克服了VC、VB、C#、Java等传统高级语言程序代码冗长、不便进行功能拓展等缺点,具有使用简洁、直观的图形化编程方式,其人机交互界面友好、数据可视化分析、设备控制能力强等优点,使得在数据采集和仪器控制方面有很大优势,越来越多的被用于串口通信领域。但是,在现有技术中,基于LabVIEW编程的串口通信会出现数据接收不全或者为空、解析数据帧程序冗杂耗时多等问题,这严重影响数据的通信质量。
技术实现思路
本专利技术目的是为了解决现有基于LabVIEW编程的串口通信存在数据丢失及解析数据帧程序冗杂耗时多的问题,提供了一种基于LabVIEW的串口通信装置及方法。本专利技术所述基于LabVIEW的串口通信装置,所述通信装置作为上位机实现与下位机的通信,它包括:用于感知人机交互界面控件的动作,产生事件并作为生产者将产生的事件以字符串形式送入事件消息队列的UI事件产生模块;用于作为消费者接收事件消息队列中的字符串,并将字符串所代表的相应事件进行组帧产生数据帧,再作为生产者将产生的数据帧送入指令队列的UI事件处理模块;用于作为消费者接收指令队列的数据帧,将该数据帧串口发送至下位机;同时接收下位机传送的串口数据,并作为生产者将接收的串口数据送入数据接收队列的数据发送与接收模块;用于作为消费者接收数据接收队列中的数据并利用解析状态机对数据接收队列中的数据进行解析,并作为生产者将解析得到的数据送入解析帧队列的数据解析模块;用于作为生产者接收解析帧队列中的数据并进行显示的数据显示模块。所述UI事件产生模块具体包括:用于感知人机交互界面控件的动作,产生事件,并对该事件通过值改变进行识别的应用事件结构函数;用于将每个控件的动作作为一个事件分支,将每个事件分支对应的事件命令以字符串形式存入事件消息队列的元素入队列函数。所述UI事件处理模块具体包括:用于获取事件消息队列的元素出队列函数;用于将事件分支与条件分支对应,并按照协议帧要求进行组帧,通过CRC16校验后成为待发送的数据帧,将待发送的数据帧与命令字符串捆绑后送入指令队列的元素入队列函数。所述数据发送与接收模块具体包括:用于进行VISA串口号参数、波特率参数、数据位参数、停止位参数、校验位参数和流程控制参数的初始化配置并在串口收发数据时禁用相应属性节点以防止所述配置改变的串口配置模块;用于通过元素出队列函数获取指令队列的数据帧与捆绑的命令字符串,将命令字符串用于条件结构判断分支,将数据帧通过VISA写入串口发送至下位机的串口发送模块;用于通过VISA读取下位机的串口数据,并将读取的下位机数据送入数据接收队列的串口接收模块;用于通过VISA关闭函数来关闭串口,以恢复初始化配置时被禁用的属性节点的串口关闭模块。所述数据解析模块具体包括:用于获取数据接收队列中的数据的元素出队列函数;用于对数据接收队列中的数据进行解析的解析状态机;用于将解析状态机解析获得的数据转换为字符串后与命令字符串捆绑成簇送入解析帧队列的函数;所述数据显示模块具体包括:用于获取解析帧队列中的数据的元素出队列函数;用于对解析帧队列中的数据进行解除捆绑,将命令字符串连接到条件结构函数的分支选择器,将数据字符串转换成字节数组后,进行显示的函数。一种基于LabVIEW的串口通信方法,所述通信方法用于实现上位机与下位机的通信,它包括:用于感知人机交互界面控件的动作,产生事件并作为生产者将产生的事件以字符串形式送入事件消息队列的UI事件产生步骤;用于作为消费者接收事件消息队列中的字符串,并将字符串所代表的相应事件进行组帧产生数据帧,再作为生产者将产生的数据帧送入指令队列的UI事件处理步骤;用于作为消费者接收指令队列的数据帧,将该数据帧串口发送至下位机;同时接收下位机传送的串口数据,并作为生产者将接收的串口数据送入数据接收队列的数据发送与接收步骤;用于作为消费者接收数据接收队列中的数据并利用解析状态机对数据接收队列中的数据进行解析,并作为生产者将解析得到的数据送入解析帧队列的数据解析步骤;用于作为生产者接收解析帧队列中的数据并进行显示的数据显示步骤。所述UI事件产生步骤具体包括:用于通过应用事件结构函数感知人机交互界面控件的动作,产生事件,并对该事件通过值改变进行识别的步骤;用于通过元素入队列函数将每个控件的动作作为一个事件分支,将每个事件分支对应的事件命令以字符串形式存入事件消息队列的步骤。所述UI事件处理步骤具体包括:用于通过元素出队列函数获取事件消息队列的步骤;用于通过元素入队列函数将事件分支与条件分支对应,并按照协议帧要求进行组帧,通过CRC16校验后成为待发送的数据帧,将待发送的数据帧与命令字符串捆绑后送入指令队列的步骤。所述数据发送与接收步骤具体包括:用于通过串口配置模块进行VISA串口号参数、波特率参数、数据位参数、停止位参数、校验位参数和流程控制参数的初始化配置并在串口收发数据时禁用相应属性节点以防止所述配置改变的步骤;用于通过串口发送模块通过元素出队列函数获取指令队列的数据帧与捆绑的命令字符串,将命令字符串用于条件结构判断分支,将数据帧通过VISA写入串口发送至下位机的步骤;用于通过串口接收模块的VISA读取下位机的串口数据,并将读取的下位机数据送入数据接收队列的步骤;用于通过串口关闭模块的VISA关闭函数来关闭串口,以恢复初始化配置时被禁用的属性节点的步骤。所述数据解析步骤具体包括:用于通过元素出队列函数获取数据接收队列中的数据的步骤;用于通过解析状态机对数据接收队列中的数据进行解析的步骤;用于通过函数将解析状态机解析获得的数据转换为字符串后与命令字符串捆绑成簇送入解析帧队列的步骤;所述数据显示步骤具体包括:用于通过元素出队列函数获取解析帧队列中的数据的步骤;用于通过函数对解析帧队列中的数据进行解除捆绑,将命令字符串连接到条件结构函数的分支选择器,将数据字符串转换成字节数组后,进行显示的步骤。本专利技术的优点:本专利技术所述装置或方法中,UI事件产生模块与UI事件处理模块通过事件消息队列通信,UI事件处理模块与数据发送与接收模块通过指令队列通信,数据发送与接收模块与数据解析模块通过数据接收队列通信,数据解析模块与数据显示模块通过解析帧队列通信,形成了四层生产者消费者架构且各模块并行执行,数据解析模块或步骤使用解析状态机的方法对串口接收的数据按照解析帧协议解析得到完整的解析数据帧,保证了通信数据传输的完整性,程序简洁清晰、执行速度快且运行稳定。本专利技术利用生产者消费者架构和状态机来实现串口接收、发送和解析显示,确保数据免于丢失的同时保证了程序简洁,运行耗时短。它一方面在五个功能模块间使用四层生产者消费者架构,程序条理清晰并且充分利用了LabVIEW并行执行的优势,提高了运行速率;另一方面使用解析状态机来对数据进行解析,解本文档来自技高网...
基于LabVIEW的串口通信装置及方法

【技术保护点】
一种基于LabVIEW的串口通信装置,所述通信装置作为上位机实现与下位机的通信,其特征在于,它包括:用于感知人机交互界面控件的动作,产生事件并作为生产者将产生的事件以字符串形式送入事件消息队列的UI事件产生模块(1);用于作为消费者接收事件消息队列中的字符串,并将字符串所代表的相应事件进行组帧产生数据帧,再作为生产者将产生的数据帧送入指令队列的UI事件处理模块(2);用于作为消费者接收指令队列的数据帧,将该数据帧串口发送至下位机;同时接收下位机传送的串口数据,并作为生产者将接收的串口数据送入数据接收队列的数据发送与接收模块(3);用于作为消费者接收数据接收队列中的数据并利用解析状态机对数据接收队列中的数据进行解析,并作为生产者将解析得到的数据送入解析帧队列的数据解析模块(4);用于作为生产者接收解析帧队列中的数据并进行显示的数据显示模块(5)。

【技术特征摘要】
1.一种基于LabVIEW的串口通信装置,所述串口通信装置作为上位机实现与下位机的通信,其特征在于,它包括:用于感知人机交互界面控件的动作,产生事件并作为生产者将产生的事件以字符串形式送入事件消息队列的UI事件产生模块;用于作为消费者接收事件消息队列中的字符串,并将字符串所代表的相应事件进行组帧产生数据帧,再作为生产者将产生的数据帧送入指令队列的UI事件处理模块;用于作为消费者接收指令队列的数据帧,将该数据帧通过串口发送至下位机;同时接收下位机传送的串口数据,并作为生产者将接收的串口数据送入数据接收队列的数据发送与接收模块;用于作为消费者接收数据接收队列中的数据并利用解析状态机对数据接收队列中的数据进行解析,并作为生产者将解析得到的数据送入解析帧队列的数据解析模块;数据解析模块最外层用while循环来维持解析状态机的运行,在while循环外对状态以及所用数据进行初始化,在while循环内由外到内逐层分别为用条件结构判断元素出队列是否超时、用for循环使接收到的数据以字节形式一个一个进行处理、用条件结构选择状态以及每个状态下数据的处理以及对下一状态的选择,状态和数据在流入和流出while循环和for循环时使用移位寄存器,这样保证了每个状态下处理完数据后指示下一步进入下一个指定状态;在外层while循环中,数据解析模块从数据接收队列中读取数据字符串,转换成字节数组后一个一个送入for循环,此时数据解析模块作为消费者,字节进入for循环后进入第一个默认的状态分支,根据解析帧协议进行判断,首先判断是否为帧头,根据结果在最内层条件结构中确定下面进入哪一个状态并选择是否将本次数据添加到解析帧数组,这个状态通过移位寄存器传入下一次循环状态选择条件结构的状态判断中,这样状态机可以在各个状态间自由转换,最终得到按照协议帧要求的解析数据帧数组并将数组转换为字符串与命令字符串捆绑后送入解析帧队列,此时数据解析模块作为生产者;用于作为生产者接收解析帧队列中的数据并进行显示的数据显示模块。2.根据权利要求1所述的基于LabVIEW的串口通信装置,其特征在于,所述UI事件产生模块具体包括:用于感知人机交互界面控件的动作,产生事件,并对该事件通过值改变进行识别的应用事件结构函数;用于将每个控件的动作作为一个事件分支,将每个事件分支对应的事件命令以字符串形式存入事件消息队列的元素入队列函数。3.根据权利要求1或2所述的基于LabVIEW的串口通信装置,其特征在于,所述UI事件处理模块具体包括:用于获取事件消息队列的元素出队列函数;用于将事件分支与条件分支对应,并按照协议帧要求进行组帧,通过CRC16校验后成为待发送的数据帧,将待发送的数据帧与命令字符串捆绑后送入指令队列的元素入队列函数。4.一种...

【专利技术属性】
技术研发人员:薛红琳王强吴钊君罗晶
申请(专利权)人:哈尔滨工业大学
类型:发明
国别省市:黑龙江;23

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1