CN103984665B - 基于LabVIEW的串口通信装置及方法 - Google Patents

基于LabVIEW的串口通信装置及方法 Download PDF

Info

Publication number
CN103984665B
CN103984665B CN201410246988.XA CN201410246988A CN103984665B CN 103984665 B CN103984665 B CN 103984665B CN 201410246988 A CN201410246988 A CN 201410246988A CN 103984665 B CN103984665 B CN 103984665B
Authority
CN
China
Prior art keywords
data
frame
event
queue
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410246988.XA
Other languages
English (en)
Other versions
CN103984665A (zh
Inventor
王强
王骧予涵
薛红琳
吴钊君
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin Institute of Technology Institute of artificial intelligence Co.,Ltd.
Original Assignee
Harbin Institute of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Harbin Institute of Technology filed Critical Harbin Institute of Technology
Priority to CN201410246988.XA priority Critical patent/CN103984665B/zh
Publication of CN103984665A publication Critical patent/CN103984665A/zh
Application granted granted Critical
Publication of CN103984665B publication Critical patent/CN103984665B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Communication Control (AREA)

Abstract

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

Description

基于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并行执行的优势,提高了运行速率;另一方面使用解析状态机来对数据进行解析,解决了以往程序中时常出现的接收数据不全或者为空以及程序冗杂耗时长等问题,极大程度优化了串口通信程序。
附图说明
图1是本发明所述基于LabVIEW的串口通信的架构图;
图2是本发明所述基于LabVIEW的串口通信的程序的停止方式原理图;
图3是数据发送与接收模块的原理图。
具体实施方式
具体实施方式一:下面结合图1和图2说明本实施方式,本实施方式所述基于LabVIEW的串口通信装置,所述通信装置作为上位机实现与下位机的通信,它包括:
用于感知人机交互界面控件的动作,产生事件并作为生产者将产生的事件以字符串形式送入事件消息队列的UI事件产生模块1;
用于作为消费者接收事件消息队列中的字符串,并将字符串所代表的相应事件进行组帧产生数据帧,再作为生产者将产生的数据帧送入指令队列的UI事件处理模块2;
用于作为消费者接收指令队列的数据帧,将该数据帧串口发送至下位机;同时接收下位机传送的串口数据,并作为生产者将接收的串口数据送入数据接收队列的数据发送与接收模块3;
用于作为消费者接收数据接收队列中的数据并利用解析状态机对数据接收队列中的数据进行解析,并作为生产者将解析得到的数据送入解析帧队列的数据解析模块4;
用于作为生产者接收解析帧队列中的数据并进行显示的数据显示模块5。
具体实施方式二:下面结合图1和图2说明本实施方式,本实施方式对实施方式一作进一步说明,所述UI事件产生模块1具体包括:
用于感知人机交互界面控件的动作,产生事件,并对该事件通过值改变进行识别的应用事件结构函数;
用于将每个控件的动作作为一个事件分支,将每个事件分支对应的事件命令以字符串形式存入事件消息队列的元素入队列函数。
本实施方式中,UI事件产生模块1应用事件结构函数对人机交互界面面板上各控件的动作通过值改变事件进行识别,每个控件的动作作为一个事件分支,每个分支产生对应的事件命令并以字符串形式通过LabVIEW自带的元素入队列函数存入事件消息队列此时UI事件产生模块1作为生产者。
具体实施方式三:下面结合图1和图2说明本实施方式,本实施方式对实施方式一或二作进一步说明,所述UI事件处理模块2具体包括:
用于获取事件消息队列的元素出队列函数;
用于将事件分支与条件分支对应,并按照协议帧要求进行组帧,通过CRC16校验后成为待发送的数据帧,将待发送的数据帧与命令字符串捆绑后送入指令队列的元素入队列函数。
本实施方式中,UI事件处理模块2通过LabVIEW中的元素出队列函数获取事件消息队列的数据,此时UI事件处理模块2作为消费者,应用条件结构函数来实现每一事件对应独立一个条件分支,根据事件按照协议帧要求进行组帧,得到的数据帧通过CRC16校验后成为待发送的数据帧,利用显示控件将待发送的帧以十六进制字符串在人机界面面板进行显示,同时通过LabVIEW自带的元素入队列函数将数据帧同命令字符串捆绑后送入指令队列,此时UI事件处理模块2作为生产者。
具体实施方式四:下面结合图1至图3说明本实施方式,本实施方式对实施方式三作进一步说明,所述数据发送与接收模块3具体包括:
用于进行VISA串口号参数、波特率参数、数据位参数、停止位参数、校验位参数和流程控制参数的初始化配置并在串口收发数据时禁用相应属性节点以防止所述配置改变的串口配置模块;
用于通过元素出队列函数获取指令队列的数据帧与捆绑的命令字符串,将命令字符串用于条件结构判断分支,将数据帧通过VISA写入串口发送至下位机的串口发送模块;
用于通过VISA读取下位机的串口数据,并将读取的下位机数据送入数据接收队列的串口接收模块;
用于通过VISA关闭函数来关闭串口,以恢复初始化配置时被禁用的属性节点的串口关闭模块。
本实施方式中包括串口配置模块、串口发送模块、串口接收模块和串口关闭模块,串口配置模块进行VISA串口号、波特率、数据位、停止位、校验位和流程控制这几个参数的初始化配置并且通过禁用相应属性节点的方法禁止在串口收发时这些配置被改变;串口发送模块通过LabVIEW中的元素出队列函数获取指令队列的数据,此时数据发送与接收模块3作为消费者将数据解捆绑后,命令字符串用于条件结构判断分支,数据字符串用于发送给下位机,使用LabVIEW自带的串口函数VISA来进行收发数据,通过VISA写入将数据发送给下位机;串口接收模块通过VISA读取将下位机数据实时读回显示到人机界面面板并送入数据接收队列,此时数据发送与接收模块3作为生产者;关闭串口模块通过VISA关闭函数来关闭串口,同时恢复初始化时被禁用的各参数属性节点。
具体实施方式五:下面结合图1至图3说明本实施方式,本实施方式对实施方式四作进一步说明,所述数据解析模块4具体包括:
用于获取数据接收队列中的数据的元素出队列函数;
用于对数据接收队列中的数据进行解析的解析状态机;
用于将解析状态机解析获得的数据转换为字符串后与命令字符串捆绑成簇送入解析帧队列的函数;
所述数据显示模块5具体包括:
用于获取解析帧队列中的数据的元素出队列函数;
用于对解析帧队列中的数据进行解除捆绑,将命令字符串连接到条件结构函数的分支选择器,将数据字符串转换成字节数组后,进行显示的函数。
所述分支选择器在条件结构函数上。
本实施方式中,图3所示,数据解析模块4通过LabVIEW中的元素出队列函数获取串口读回的数据,通过协议解析状态机进行解析,此时数据解析模块4作为消费者,数据解析模块4最外层是while循环以维持状态机的运行,次外层是一个条件结构,用于判断是否超时,下一层是for循环以使得数据解析模块4接收到的数据接收队列中的数据以字节的形式一个一个进入循环进行解析,在for循环内层是条件结构,用来对各个不同的状态进行判断,每个状态下处理完数据会指示下一步进入哪一个状态,这就是移位寄存器的功能,即将下一个状态传递到下一次循环状态判断中;数据解析模块4获取数据接收队列的数据,通过字符串至字节数组转换函数将数据转换为字节数组,进而一个一个字节的送入for循环,此时数据解析模块作为消费者;串口读回的数据经过状态机之后得到解析帧,解析帧数组转换为字符串后与命令字符串捆绑成簇送入解析帧队列,此时数据解析模块4作为生产者。
数据显示模块5外层是while循环来保证显示模块的运行,内层是条件结构,数据显示模块5通过LabVIEW中的元素出队列函数获取解析帧队列中的数据,数据出队列后进行解除捆绑,其中的命令字符串连接到条件结构的分支选择器,数据字符串转换成字节数组后用于显示,此时数据显示模块5作为消费者。
将本发明应用到实际工程中,实现下位机与上位机的通信,进而通过上位机中前面板的操作来控制电机运行:
采用图1所示的串口通信架构,形成四层生产者消费者架构且各模块并行执行,UI事件产生模块1感知前面板控件的动作,产生事件并作为生产者将事件以字符串形式送入事件消息队列,UI事件处理模块2作为消费者接收事件消息队列中的字符串并相对每一事件进行组帧,这是第一层生产者消费者架构,UI事件处理模块2再作为生产者将产生的数据帧送入指令队列,数据发送与接收模块3作为消费者接收指令队列中的数据进行串口发送并接收串口数据,这是第二层生产者消费者架构,数据发送与接收模块3再作为生产者将接收到的数据送入数据接收队列,数据解析模块4作为消费者接收数据接收队列中的数据并进行解析,这是第三层生产者消费者架构,数据解析模块4再作为生产者将解析得到的数据送入解析帧队列中,数据显示模块5作为生产者接收解析帧队列中的数据并进行显示,这是第四层生产者消费者架构。
UI事件产生模块1外层是while循环以维持事件产生模块的运行,while循环中采用事件结构函数,在时间结构框图上右键选择添加事件分支把前面板相应控件加入到对应的事件分支,产生相应的事件消息与变体常量捆绑后通过元素入队列函数发送到事件消息队列中,此时UI事件产生模块1作为生产者。
如图2所示,LabVIEW的串口通信架构有多线程,所以停止方式采用循环停止通知器的方式,即在各循环外使用“获取通知器引用”函数,在UI事件产生模块的“‘停止’值改变”分支使用“发送通知”函数发出停止按钮被按下的通知给停止通知器,由停止通知器将这个通知送达到每一个线程的最外层while循环,通过“等待通知”函数将通知赋值给while循环的“循环条件”按钮,以此来结束整个程序的运行。
UI事件处理模块2最外层是while循环以保证本模块的运行,接收事件消息队列中的数据经过解除捆绑后将命令字符串连接到条件结构的分支选择器,此时UI事件处理模块2作为消费者,在对应的条件分支中按照协议帧标准进行组帧。利用数组函数将待发送的帧组成一个字节数组并添加CRC校验,本案例使用CRC16校验,核心思想是利用“调用库函数节点”来调用已生成的CRC16校验的.dll文件来生成16bit的校验位。组帧完成后得到的数据帧数组一方面进入for循环通过“数值至十六进制字符串转换”函数再进入下一个for循环,通过“连接字符串”函数来得到供显示的十六进制的发送帧字符串,通过显示控件在前面板显示;另一方面转换成字符串后与命令字符串捆绑送入指令队列,此时UI事件处理模块2作为生产者。
如图3所示,串口发送模块和串口接收模块在一个while循环中,while循环保证收发的连续性。
数据解析模块4最外层用while循环来维持解析状态机的运行,在while循环外对状态以及所用数据进行初始化,在while循环内由外到内逐层分别为条件结构判断元素出队列是否超时、for循环使接收到的数据以字节形式一个一个进行处理、条件结构选择状态以及每个状态下数据的处理以及对下一状态的选择,状态和数据流在流入和流出while循环和for循环时使用移位寄存器,这样保证了每个状态下处理完数据后指示下一步进入下一个指定状态。在外层while循环中,数据解析模块从数据接收队列中读取数据字符串,转换成字节数组后一个一个送入for循环,此时数据解析模块4作为消费者,字节进入for循环后进入第一个默认的状态分支,根据解析帧协议进行判断,首先判断是否为帧头,根据结果在最内层条件结构中确定下面进入哪一个状态并选择是否将本次数据添加到解析帧数组,这个状态通过移位寄存器传入下一次循环状态选择条件结构的状态判断中,这样状态机可以在各个状态间自由转换,最终得到按照协议帧要求的解析数据帧数组并将数组转换为字符串与命令字符串捆绑后送入解析帧队列,此时数据解析模块4作为生产者。
数据显示模块5由外层的while循环和内层的条件结构组成,分别起到维持显示模块运行和选择显示内容的作用。数据显示模块5获取解析帧队列中的数据后对数据进行解捆绑操作,命令字符串送入条件选择器,数据字符串转换成字节数组后一方面进入for循环通过“数值至十六进制字符串转换”函数再进入下一个for循环通过“连接字符串”函数来得到供显示的十六进制的解析帧字符串,并通过显示控件在前面板显示,另一方面根据条件分支所要显示的内容和解析帧协议对解析数据数组进行操作,主要利用字符串函数“截取字符串”、对话框函数“单按钮对话框”等LabVIEW自带函数进行对不同要求显示内容的整合,此时数据显示模块5作为消费者。
具体实施方式六:下面结合图1和图2说明本实施方式,本实施方式所述基于LabVIEW的串口通信方法,所述通信方法用于实现上位机与下位机的通信,它包括:
用于感知人机交互界面控件的动作,产生事件并作为生产者将产生的事件以字符串形式送入事件消息队列的UI事件产生步骤;
用于作为消费者接收事件消息队列中的字符串,并将字符串所代表的相应事件进行组帧产生数据帧,再作为生产者将产生的数据帧送入指令队列的UI事件处理步骤;
用于作为消费者接收指令队列的数据帧,将该数据帧串口发送至下位机;同时接收下位机传送的串口数据,并作为生产者将接收的串口数据送入数据接收队列的数据发送与接收步骤;
用于作为消费者接收数据接收队列中的数据并利用解析状态机对数据接收队列中的数据进行解析,并作为生产者将解析得到的数据送入解析帧队列的数据解析步骤;
用于作为生产者接收解析帧队列中的数据并进行显示的数据显示步骤。
具体实施方式七:下面结合图1和图2说明本实施方式,本实施方式对实施方式六作进一步说明,所述UI事件产生步骤具体包括:
用于通过应用事件结构函数感知人机交互界面控件的动作,产生事件,并对该事件通过值改变进行识别的步骤;
用于通过元素入队列函数将每个控件的动作作为一个事件分支,将每个事件分支对应的事件命令以字符串形式存入事件消息队列的步骤。
具体实施方式八:下面结合图1和图2说明本实施方式,本实施方式对实施方式六或七作进一步说明,所述UI事件处理步骤具体包括:
用于通过元素出队列函数获取事件消息队列的步骤;
用于通过元素入队列函数将事件分支与条件分支对应,并按照协议帧要求进行组帧,通过CRC16校验后成为待发送的数据帧,将待发送的数据帧与命令字符串捆绑后送入指令队列的步骤。
具体实施方式九:下面结合图1至图3说明本实施方式,本实施方式对实施方式八作进一步说明,所述数据发送与接收步骤具体包括:
用于通过串口配置模块进行VISA串口号参数、波特率参数、数据位参数、停止位参数、校验位参数和流程控制参数的初始化配置并在串口收发数据时禁用相应属性节点以防止所述配置改变的步骤;
用于通过串口发送模块通过元素出队列函数获取指令队列的数据帧与捆绑的命令字符串,将命令字符串用于条件结构判断分支,将数据帧通过VISA写入串口发送至下位机的步骤;
用于通过串口接收模块的VISA读取下位机的串口数据,并将读取的下位机数据送入数据接收队列的步骤;
用于通过串口关闭模块的VISA关闭函数来关闭串口,以恢复初始化配置时被禁用的属性节点的步骤。
具体实施方式十:下面结合图1说明本实施方式,本实施方式对实施方式九作进一步说明,所述数据解析步骤具体包括:
用于通过元素出队列函数获取数据接收队列中的数据的步骤;
用于通过解析状态机对数据接收队列中的数据进行解析的步骤;
用于通过函数将解析状态机解析获得的数据转换为字符串后与命令字符串捆绑成簇送入解析帧队列的步骤;
所述数据显示步骤具体包括:
用于通过元素出队列函数获取解析帧队列中的数据的步骤;
用于通过函数对解析帧队列中的数据进行解除捆绑,将命令字符串连接到条件结构函数的分支选择器,将数据字符串转换成字节数组后,进行显示的步骤。
基于LabVIEW的串口通信方法应用到实际工程中,实现下位机与上位机的通信,进而通过上位机中前面板的操作来控制电机运行的具体方法与具体实施方式五中的过程相同。

Claims (6)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410246988.XA CN103984665B (zh) 2014-06-05 2014-06-05 基于LabVIEW的串口通信装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410246988.XA CN103984665B (zh) 2014-06-05 2014-06-05 基于LabVIEW的串口通信装置及方法

Publications (2)

Publication Number Publication Date
CN103984665A CN103984665A (zh) 2014-08-13
CN103984665B true CN103984665B (zh) 2017-06-20

Family

ID=51276648

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410246988.XA Active CN103984665B (zh) 2014-06-05 2014-06-05 基于LabVIEW的串口通信装置及方法

Country Status (1)

Country Link
CN (1) CN103984665B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461879B (zh) * 2014-11-28 2018-02-16 北京经纬恒润科技有限公司 一种自动测试方法及装置
CN107302531A (zh) * 2017-06-19 2017-10-27 青岛华潞佳电子科技有限公司 一种基于状态机和环形队列的串口命令解析方法
CN107229591B (zh) * 2017-06-22 2020-08-18 湖南省力宇燃气动力有限公司 多串口通信方法及装置
CN108989351B (zh) * 2018-09-01 2021-04-16 西安科技大学 一种数据通信方法及其用于双余度电机测控的方法及***
CN111078420B (zh) * 2019-10-14 2023-06-27 惠州市德赛西威汽车电子股份有限公司 一种基于LabVIEW调用动态链接库中结构体函数的方法
CN112433714A (zh) * 2020-12-03 2021-03-02 宁波拓普集团股份有限公司 一种基于LabVIEW实时***的软件***架构
CN113407214B (zh) * 2021-06-24 2023-04-07 广东泰坦智能动力有限公司 一种基于can通信的可重构化多线程并行上位机***
CN114994529A (zh) * 2022-05-23 2022-09-02 淮阴工学院 基于LabVIEW的电机测控***及监控界面设计方法
CN115344396B (zh) * 2022-10-19 2023-02-28 势加透博(成都)科技有限公司 一种基于LabVIEW的面板间同步控制方法和装置
CN116165352B (zh) * 2023-04-23 2023-07-21 河北华清环境科技集团股份有限公司 烟气在线监测仪质控***

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1688970A (zh) * 2003-05-16 2005-10-26 微软公司 用户接口自动框架的类和接口
CN101646083A (zh) * 2009-06-18 2010-02-10 杭州高特信息技术有限公司 一种高效avs视频码流解析***及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8891852B2 (en) * 2004-06-09 2014-11-18 Cognex Technology And Investment Corporation Method and apparatus for configuring and testing a machine vision detector

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1688970A (zh) * 2003-05-16 2005-10-26 微软公司 用户接口自动框架的类和接口
CN101646083A (zh) * 2009-06-18 2010-02-10 杭州高特信息技术有限公司 一种高效avs视频码流解析***及方法

Also Published As

Publication number Publication date
CN103984665A (zh) 2014-08-13

Similar Documents

Publication Publication Date Title
CN103984665B (zh) 基于LabVIEW的串口通信装置及方法
CN104750063B (zh) 用于配置工业安全继电器的***和工业安全***配置方法
CN101771700B (zh) 基于FPGA的Modbus协议通信节点
CN104408002B (zh) 串口主从通信控制***及方法
CN104899150B (zh) 基于面向对象的自动化测试方法及***、和自动化平台
CN102967815A (zh) 芯片测试方法、自动化测试机和***
CN101222732B (zh) 状态控制信号测试装置
CN110223643A (zh) 数据传输方法、组件及***、显示装置
CN109307833A (zh) 芯片测试装置及芯片测试方法
CN109683882A (zh) 基于移动终端的可视化环境下nb-iot终端软件开发方法
CN112118158A (zh) 一种交换机的测试方法、测试装置、测试设备及存储介质
CN105071990B (zh) 一种通用的信息***接口测试方法及装置
CN107070911A (zh) 一种信息传输的方法及交通综合监控***
CN104507100B (zh) 一种利用无线终端管理Zigbee网络的方法
CN103135989A (zh) 一种回调函数代码生成方法及装置
CN105591839A (zh) 一种测试网络交换芯片的装置、方法及***
CN112382224A (zh) 一种模组的老化测试方法及***
CN106354611A (zh) 终端网络状态监控装置
CN103544108A (zh) 嵌入式软件集成强度的测试***及方法
CN106224763B (zh) Lng加气机多机互联的单总线控制装置及方法
CN103488601B (zh) 一种时钟延时、数据访问方法、***及设备
CN202818323U (zh) 基于fpga芯片的基带npz码误码仪
CN205121274U (zh) 串口规约报文信号试验端子排
CN105185072B (zh) 多通道开关量传输方法及装置
CN105242592B (zh) 通过profibus pa操作站直接读取hart仪表参数的方法及***

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information

Inventor after: Wang Qiang

Inventor after: The king is to give Han

Inventor after: Xue Honglin

Inventor after: Wu Zhaojun

Inventor before: Xue Honglin

Inventor before: Wang Qiang

Inventor before: Wu Zhaojun

Inventor before: Luo Jing

COR Change of bibliographic data
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210407

Address after: Room 206-10, building 16, 1616 Chuangxin Road, Songbei District, Harbin City, Heilongjiang Province

Patentee after: Harbin jizuo technology partnership (L.P.)

Patentee after: Harbin Institute of Technology Asset Management Co.,Ltd.

Address before: 150001 No. 92 West straight street, Nangang District, Heilongjiang, Harbin

Patentee before: HARBIN INSTITUTE OF TECHNOLOGY

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210618

Address after: Room 206-12, building 16, 1616 Chuangxin Road, Songbei District, Harbin City, Heilongjiang Province

Patentee after: Harbin Institute of Technology Institute of artificial intelligence Co.,Ltd.

Address before: Room 206-10, building 16, 1616 Chuangxin Road, Songbei District, Harbin City, Heilongjiang Province

Patentee before: Harbin jizuo technology partnership (L.P.)

Patentee before: Harbin Institute of Technology Asset Management Co.,Ltd.