CN103186608B - 一种队列序列化式处理数据的方法和装置 - Google Patents

一种队列序列化式处理数据的方法和装置 Download PDF

Info

Publication number
CN103186608B
CN103186608B CN201110456194.2A CN201110456194A CN103186608B CN 103186608 B CN103186608 B CN 103186608B CN 201110456194 A CN201110456194 A CN 201110456194A CN 103186608 B CN103186608 B CN 103186608B
Authority
CN
China
Prior art keywords
data
queue
serializes
formula processing
parsed
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
CN201110456194.2A
Other languages
English (en)
Other versions
CN103186608A (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.)
Beijing Aeonmed Co Ltd
Original Assignee
Beijing Aeonmed Co Ltd
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 Beijing Aeonmed Co Ltd filed Critical Beijing Aeonmed Co Ltd
Priority to CN201110456194.2A priority Critical patent/CN103186608B/zh
Publication of CN103186608A publication Critical patent/CN103186608A/zh
Application granted granted Critical
Publication of CN103186608B publication Critical patent/CN103186608B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Communication Control (AREA)

Abstract

本发明公开了一种队列序列化式处理数据方法,包括:S1.在通讯口处设置快速缓冲区以及慢速缓冲区;S2.接收输入的原始数据,并按预解析分成快速数据以及慢速数据,并以单向队列结构相应放入所述的快速缓冲区以及慢速缓冲区,形成数据帧;S3.判断所述的数据帧是否合法,如果合法,进入步骤S4,如果不合法,进入步骤S31,将所述的数据帧弃之不用;S4.将所述的数据帧以队列化的方式出队解析并显示。本发明还公开了队列序列化式处理数据装置。本发明队列序列化式处理数据方法和装置以队列序列化式来处理数据,数据处理过程较快,提高实时性。

Description

一种队列序列化式处理数据的方法和装置
技术领域
本发明涉及离散数据处理领域,更具体地说,涉及一种队列序列化式处理数据的方法和装置。
背景技术
在医疗器械设计领域,随着用户需求的日益增长以及医疗器械一贯的对安全性的严格要求,麻醉机需要实现更多的功能和具备更多的保护措施,也就意味着麻醉机的软硬件要朝着多***、多单元的方向设计,每个单元完成一定的预期功能。因此,单元之间必然存在一定的数据交换,RS-232串行口是应用比较广泛的一种标准通讯接口,它具备全双工通讯、较高稳定性、较好易用性等特征,所以基于它可以实现多种通讯方式。本发明基于RS-232全双工模式的异步通信接口,在应用较为广泛的“握手+校验和型”通讯协议的前提下,实现一种对实时性较高的快速数据,进行优先收发处理的算法。
在麻醉机中,以呼吸控制单元(简称:BDU)和用户界面单元(简称:GUI)间的实时性要求和数据载荷最高,这2个单元间,多数厂家会使用串行通讯,如:RS-232、I2C等。而这两者间需要保证实时性的快速数据包括:1-3种量值的实时波形数据、电子流量计(简称:EFM)数据、实时报警数据以及通气模式切换指令等。所谓相对而言的慢速数据,即指监测值数据、状态数据、趋势数据等发送周期较长的数据。
本发明将以典型的波形显示快速数据(简称:快速数据)和监测值慢速数据(简称:慢速数据)的数据接收、数据解析为例,阐述后续内容。所有快速数据装配、数据发送的过程,与数据接收的原理完全相同。
由于是串行通讯,从通讯协议设计的角度,往往不可能为快速数据建立单独的通讯信道,只能标识出哪些数据属于快速数据,这与成本、稳定性等多方面的考虑有关。因此,从现有的通讯硬件上,很难做到对快速数据的优先响应,只能通过软件对数据做后期处理,虚拟出一条快速数据通道,优先提供数据给波形显示等算法。现有的快速数据处理算法存在如下几个典型的缺点:
1.数据接收上,能有效将快速数据与慢速数据分离,但没有考虑快速数据更需要缓冲,并且需要对缓冲数据进行序列化,以保证数据在接收时不出现丢失或前后顺序颠倒、覆盖等问题;
2.数据接收和数据解析没有并行,接收后立即解析,即接收和解析是串行进行的。相对而言,数据解析由于要取出原始数据并进行必要的数值转换等操作,在实时性要求较高的场合,是相对较慢的。这会造成下一帧快速数据的处理延时,而且此延时会累积,最终造成原始数据被覆盖或丢失,造成错解或漏解;
3.由于解析后的数据也没有考虑缓冲机制,这便要求本来就相对最慢的波形显示采样周期缩短,而即使波形显示采样周期缩短到与数据解析周期同步,由于问题2的存在,也不能避免覆盖或丢失数据。由于显示过程提速,导致GUI***开销激增,而实际显示效果的改善并不明显;GUI波形显示总周期的设计被迫违背预期设计要求,波形显示总周期定义受限等问题接踵而至。
发明内容
为了解决以上的问题,本发明提供一种队列序列化式处理数据的方法和装置。
本发明公开了一种队列序列化式处理数据的方法,包括:
S1.在通讯口处设置快速缓冲区以及慢速缓冲区;
S2.接收输入的原始数据,并按预解析分成快速数据以及慢速数据,并以单向队列结构相应放入所述的快速缓冲区以及慢速缓冲区,形成数据帧;
S3.判断所述的数据帧是否合法,如果合法,进入步骤S4,如果不合法,进入步骤S31,将所述的数据帧弃之不用;
S4.将所述的数据帧以队系列化的方式出队解析并显示。
在本发明所述的队列序列化式处理数据的方法中,所述预解析,具体是:采用轮询法周期性主动检测并接收串行口数据,获取数据命令字及长度。
在本发明所述的队列序列化式处理数据的方法中,所述预解析,具体是:采用中断、事件或消息等机制被动触发接收数据,获取数据命令字及长度。
在本发明所述的队列序列化式处理数据的方法中,所述通讯口为:RS-232串行口通讯、I2C、SPI、CAN。
在本发明所述的队列序列化式处理数据的方法中,所述的接收多队列数据时,步骤S2与步骤S4可同时进行。
本发明公开了一种队列序列化式处理数据的装置,用于实现上述的方法,包括:
缓冲区设置单元:用于在通讯口处设置快速缓冲区以及慢速缓冲区;
原始数据分离单元:与所述的缓冲区设置单元相连,用于接收输入的原始数据,并按预解析分成快速数据以及慢速数据,并以单向队列结构相应放入所述的快速缓冲区以及慢速缓冲区,形成数据帧;
数据帧判断单元:与所述的原始数据分离单元相连,用于判断所述的数据帧是否合法;
数据解析单元:与所述的数据帧判断单元相连,用于将所述的数据帧以队系列化的方式出队解析并显示。
在本发明所述的队列序列化式处理数据的装置中,所述预解析,具体是:采用轮询法周期性主动检测并接收串行口数据,获取数据命令字及长度。
在本发明所述的队列序列化式处理数据的装置中,所述预解析,具体是:采用中断、事件或消息等机制被动触发接收数据,获取数据命令字及长度。
在本发明所述的队列序列化式处理数据的装置中,所述通讯口为:RS-232串行口通讯、I2C、SPI、CAN。
在本发明所述的队列序列化式处理数据的装置中,所述的接收多队列数据时,所述的原始数据分离单元接收数据与所述的数据解析单元解析数据可同步进行。
实施本发明的队列序列化式处理数据的方法和装置,具有以下有益的技术效果:
a)利用队列分别记录快速数据和慢速数据,使数据序列化,不会重叠或覆盖;
b)将数据的收发和解析分离,用多线程思想处理解析,并同样保证序列化;
c)使用队列特有的特性,使数据的访问控制变得简易、高效;
d)数据不丢失,快速数据处理过程加快,提高实时性;
e)嵌入式***或非嵌入式***均适用。
附图说明
图1是本发明实施例一种队列序列化式处理数据的方法流程图;
图2为本发明实施例一种队列序列化式处理数据的装置方框图;
图3为现有技术串行原始数据序列可能出现的现象图示;
图4为本发明快慢原始数据分离和序列化示意图;
图5为本发明单线程数据解析示意图;
图6为本发明解析数据序列化和显示采样示意图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
针对现有快速数据处理存在的技术问题,本发明提出了一种可行的提高快速数据处理实时性,从根本上避免数据丢失,并被优先处理的设计技术方案:
针对问题1,本算法利用队列(Queue)结构先进先出,数据序列化等特点,在数据接收、解析环节应用该特点设计数据缓冲,并将快速数据和慢速数据分离,分别放入不同的缓冲,暂不对数据解析,以提高快速数据接收的实时性,保证接收时数据不丢失。
针对问题2,数据接收缓冲和数据解析缓冲在机制上都使用队列结构,由于缓冲的存在,微观上接收和解析过程并不完全同步,通过多线程应用和利用队列的易存取性,使相对较慢的解析过程尽可能与接收过程并行完成,从而保证宏观上数据的接收和解析是同步的,也即实现了数据接收和解析的完全分离:下一帧快速数据,不必等上一帧数据解析完成后才能被接收。进一步保证数据在解析后的实时性,仍然不会丢失。
针对问题3,一旦数据丢失问题解决,只要BDU(Breath Delivery Unit,呼吸控制单元)端提供的采样数据足够多,GUI(Graphical User Interface,图形用户界面单元)端不但波形显示的效果明显改善,显示总周期定义的灵活度也大大增加:不必考虑显示和解析的同步,显示采样周期可在一定范围内定义,显示采样周期的短或长只决定对采样数据的利用率的高或低,使得波形的显示效果和***开销间可以按需取得平衡。
请参阅图1,一种队列序列化式处理数据的方法,包括:
S1.在通讯口处设置快速缓冲区以及慢速缓冲区;
S2.接收输入的原始数据,并按预解析分成快速数据以及慢速数据,并以单向队列结构相应放入所述的快速缓冲区以及慢速缓冲区,形成数据帧;
预解析,是指采用轮询法周期性主动检测并接收串行口数据,获取数据命令字及长度或是采用中断、事件或消息等机制被动触发接收数据,获取数据命令字及长度。
所述通讯口为RS-232串行口通讯、I2C(Internal IntegrateChipCommunication,内部芯片间同步通讯)、SPI(Serial Peripheral Interface,串行***设备接口)、CAN(Controller Area Network,控制器局部网)等等。
S3.判断所述的数据帧是否合法,如果合法,进入步骤S4,如果不合法,进入步骤S31,将所述的数据帧弃之不用;
S4.将所述的数据帧以队系列化的方式出队解析并显示。
所述的接收多队列数据时,步骤S2与步骤S4可同时进行。
请参阅图2,一种队列序列化式处理数据的装置,用于实现上述的方法,包括:缓冲区设置单元10、原始数据分离单元20、数据帧判断单元30、数据解析单元40。
缓冲区设置单元10:用于在通讯口处设置快速缓冲区以及慢速缓冲区;
原始数据分离单元20:与缓冲区设置单元10相连,用于接收输入的原始数据,并按预解析分成快速数据以及慢速数据,并以单向队列结构相应放入所述的快速缓冲区以及慢速缓冲区,形成数据帧;
数据帧判断单元30:与原始数据分离单元20相连,用于判断所述的数据帧是否合法;
数据解析单元40:与数据帧判断单元30相连,用于将所述的数据帧以队系列化的方式出队解析并显示。
其中,所述预解析,具体是:采用轮询法周期性主动检测并接收串行口数据,获取数据命令字及长度或是采用中断、事件或消息等机制被动触发接收数据,获取数据命令字及长度,所述通讯口为RS-232串行口通讯、I2C、SPI、CAN等,所述的接收多队列数据时,所述的原始数据分离单元接收数据与所述的数据解析单元解析数据可同步进行。
下面将以3个量值的波形数据作为“快速数据”,以氧浓度监测值数据作为“慢速数据”,详细阐述本发明的技术方案(举例说明):
3个量值的“快速数据”:气道压力-时间(PAW-t)波形数据、气体流速-时间(Flow-t)波形数据和潮气量-时间(VolumeTidal-t)波形数据。为保证同步,3个量值会在一个快速数据帧中被BDU发送;
发送周期:Tw=20ms(毫秒);
氧浓度监测“慢速数据”:BDU发送氧浓度数据帧;
发送周期:To=2s(秒);
下面分别以“原始数据分离和序列化”、“接收数据和解析数据的分离”、“解析数据的序列化”三个方面具体阐述作为数据接收方的GUI软件对本发明的实现:
原始数据分离和序列化:
此阶段主要目标是收取BDU发来的所有原始数据,并根据快速数据或慢速数据标识,将数据分别放入快速数据和慢速数据的缓冲,实现分离,但同时要保证数据的先后顺序。
此阶段只对快慢数据进行简易的识别,这叫做“预解析”。预解析不对整帧数据进行全解析(全解析如:计算校验和),因为全解析可能涉及数值运算或数值类型的转换,会占用更多CPU时间,甚至导致接收延时。由于是串行口,发来的数据中有快速数据也有慢速数据,快慢速数据还可能以非预期的时间间隔出现在收到的数据序列中,如图3所示,图3中以粗线框表示慢速数据,以细线框表示快速数据,箭头表示时间经过。
可以看到,收到的多帧快速数据中,不时地***了慢速数据帧。图中最右侧预期到达的快速数据,要等到先于它的慢速数据传完后才会出现。这种现象在广泛使用的“定期发送+变长指令”的通讯协议中,很容易出现,原因是多种的:可能与协议定义、邻帧长度最大变化率、BDU任务轻重、BDU数据传送控制方式等有关。对于本发明和现有算法,这种原始数据序列的处理,效率上是一样的,但后期的处理会有本质不同。
数据接收按照RS-232串行口的硬件情况分为两种方案:
1.串行口底层没有收发缓冲,如基于单片机、DSP等处理器的***,其串行口通讯机制通常为收到1个字节就引发串口中断,GUI软件编写串口中断处理程序,以单字节为单位顺序收取串口数据,放入数组形式的缓冲形成原始数据列。
2.串行口底层有收发缓冲,如基于PC或嵌入式操作***的环境,其串行口端本身已设有缓冲,数据被缓冲一定量后才会引发中断/事件,中断/事件处理程序接收数据,接收程序通常一次收到不止一个字节的数据。
如果按照方案1,现有多数的例程,都会将开发者指向判断数据是否结束的方向去进行开发,也就是接收程序必须知道一帧数据何时结束,才能将整帧数据放入缓冲。这势必要么在协议中增加帧控制的内容,减少数据帧携带的有效数据量;要么在接收阶段就要对数据进行全解析,用以识别结束符和校验和,降低了收发效率,也违背了本阶段的设计初衷——先收取数据并暂缓解析。
如果按照方案2,虽可以避免方案1中要对数据全解析的情况,但如果不设置多个缓冲,就无法一次性收取多个数据帧,多数的现有技术,是使用数组(Array)或结构数组(Struct Array)等数据结构作为接收缓冲,而数组初始化时必须指定大小,如果数据帧是变长的,这个大小就很难确定。数组元素的访问控制通常是通过指针或计数器来实现的,如果指针或计数器的值由于某种原因导致错误,上次取出数据的位置将无从得知,严重的,会直接导致***崩溃......也违背了本阶段设计的初衷——数据正确且序列化。
鉴于上述分析方案1及方案2数据接收方案遇到的问题,故本发明图1提出了使用单向队列(Queue)结构作为数据接收缓冲区的思想。队列结构最显著的特点就是序列化:入队的数据,必须遵循“先进先出”的原则,即最先入队的数据,取用时,最先出队,不可从中间出队。
应用队列结构有以下几点好处,可有效避免上述方案1及方案2中的弊端。
由于队列结构只允许在队尾***数据,队头取出数据,可以很简易的保证数据的序列化。避免使用额外的访问控制,如:访问指针,从根本上杜绝误插和误取的访问错误。由于队列“只插队尾”的特性,可一次将收到的多条数据全部***队列,减少访问次数。
队列可以初始化大小,也可以根据硬件资源实际情况不指定大小,溢出后***自动追加连续内存空间到队尾,队列的长度变化对访问控制没有任何影响。
泛型队列“Queue<T>”更可以自由设置<T>为自定义数据类型,其成员将严格按照指定的数据类型存放。本发明利用泛型队列这一特性,将接收数据和解析数据完全分开。
设置两个队列缓冲,将“快速数据”和“慢速数据”经过“预解析”后分别存放,预解析的方法又可分为以下常见的两种方式:
采用轮询法以Tw周期主动检测并接收串行口数据,预解析数据命令字及长度;
采用中断、事件或消息等机制被动触发接收数据,预解析数据命令字及长度。
无论采用哪种预解析方式,上述方案均可以实现预解析。
按照预解析命令字,识别快速或慢速数据;按照预解析长度,将数据分别入队,如图4所示。
但,无论采用方案1或方案2,都会碰到最后一帧数据不完整的情况。
如果采用方案2,由于串行口底层受控于嵌入式***,本身具备缓冲机制,预解析处理可在串行口缓冲处进行,若发现最后一帧数据不完整,可提前获知并不予入接收队,待接收完整后再入接收队。
如果采用方案1,则需要为数据接收设置一个额外缓冲。该缓冲在接收缓冲之前,相当于方案2中嵌入式***提供的串行口缓冲,该缓冲也可利用队列原理实现。可以通过实时查询额外缓冲(队列原理)成员数量得知是否小于数据帧大小,若小于,则该帧会等到下次接收完整后再入接收队。
接收数据和解析数据的分离:
数据接收正确后,就会开始数据的全解析过程。
全解析过程一般需要以下几步:
1.按通讯协议,判断数据帧是否合法,不合法的弃之不用。这里要对校验和进行计算和比对操作,这也是可靠性方面的必需要求;
2.按通讯协议,对所有有效数据进行提取、数值转换、赋值等处理;
3.即使有直接的赋值操作,但多数解析数据是有序列化需求的,要对解析数据序列化。
多数情况,数据的解析过程要求和数据的接收过程尽可能的同步,尤其是快速数据,对这种实时性要求就更加强烈。
由于解析数据和接收数据存在本质区别,本发明提出一种将解析数据与接收数据分开的思想。这为将来解析过程的多线程应用提供可能,可以更充分地利用***资源提高解析过程的效率。利用队列的易存取性,实现过程也较为简单:将现有接收的正确数据整帧出队→解析。由于快速数据和慢速数据已在接收时通过预解析分离,使得快速数据可以在解析时单独编写算法,并优先得到处理,提高解析速度。
接收数据与解析数据分离后,就可以单独考虑数据的解析,由于缓冲的存在,每帧数据的解析不必和接收完全同步,也可能在收完第2帧数据后,第1帧数据才解析完。快速数据通常都是毫秒级的时间间隔,如果是用于显示的即时数据,按目前多数的设计需求,是允许显示与数据处理间存在可接受的时间差的。既然如此,就为数据的接收和解析异步发生提供了依据和设计机制的机会,而本阶段需达成的目标,即为:将数据接收和解析异步,提高解析效率使异步误差可接受并不累积,做到宏观上数据接收和解析的同步。
现代程序开发技术提出了多线程的概念,将任务打散成小的任务段,使得任务在微观上是分散顺序被处理的(不同时,相当于异步),但宏观上是完整和同步的。因此,将多线程技术应用在数据解析过程是比较适合的。下面就分单线程和多线程两种不同的软件运行方式来阐述数据解析的过程:
单线程,流程图如图5所示:
所谓单线程,就是“单流程”,“单任务”之意,多数的非嵌入式单片机***都属于此种情况。单线程意味着数据的接收和解析均在一个顺序的流程中进行,但这并不意味着解析过程无法提高效率。对于单线程,除了解析程序本身的优化外,还可以通过类似于多线程的中断来保证解析的宏观同步。例如通过一个以Tw为定时周期的定时器中断来定期轮询解析需求——如果有接收数据可用,则通过定时器来触发解析过程。当然这里存在一个大的前提就是:接收数据和解析数据必须分开存储。众所周知:中断服务程序必需是高效的,数值计算转换的过程是不宜在中断服务中出现的。那么,在中断服务程序中能做什么呢?答案很明显:(1)发现是否有数据被接收,这通过查询接收缓冲的成员数量可得知,由于缓冲是队列,无须像数组那样计算和查询访问标志,只要按照预解析的命令字和长度出队即可!(2)建立一个出队数据的一维数组,此数组的大小是可以预知的,并在此数组有数据时设置一个标志,告诉主循环中的解析函数目前有数据需要解析。当主循环轮询到此标志后,调用解析函数实现数据的解析并清除标志,为下一帧数据解析做准备。这种方式产生的数据处理和显示采样之间的误差是变长的,理论上取决于定时器最长定时(Tw)+主循环周期(Tp),而最坏时间是完全可以预知的,并且都是毫秒级的。引入中断机制,可以大大提高单线程程序处理过程的效率,从而提高整体设计的实时性。
多线程:
多线程处理的过程,和单线程中“定时器中断”的概念极为相似。而多线程又对“定时器中断”做了扩充——在多任务***的线程机制控制下,相当于实现了多个“定时器中断”,而每个“中断”就是一个线程,利用线程同步机制,可使一个过程中的某一个数据被两个以上的线程处理。这样做的一个最大的好处,就是使单线程中:
数据处理和显示采样之间误差=定时器最长定时(Tw)+主循环周期(Tp)
这个变长误差变得更定长。这是因为“定时器最长定时”由Tw又被打散成每个线程完成的时间片,例如以5ms分配一个线程,这样完成一个20ms的任务,理论上就需要4个线程,而***如果支持4个以上的线程,就可使这4个线程的任务在宏观上以小于20ms的时间提前完成任务,这便使“最坏情况”的时间缩短,而且,线程的运行只跟整个***的资源和任务轻重有关,多数情况***任务不重时,最坏情况的时间基本接近固定。
解析数据的序列化,如图6所示。
前面的阶段的主要目标为如何有效控制数据的丢失,而本阶段的目标则是根据显示要求,提供足够多的解析数据。而这些数据同样需要序列化。
只要显示采样的周期接近或等于解析数据提供的周期,波形的显示就足够细腻和接近真实波形。但为了不产生错显,解析的数据仍然需要序列化,这里,同样采取泛型队列的机制来实现。解析后的数据以结构或其他数据格式定期入队,队列必须设置最大空间,当数据达到最大空间后,如果仍没有显示采样取走队头数据,则队头数据自动出队,由于泛型队列可以接纳像结构这样的整体数据作为队列的一个成员,出队的数据将是一整帧解析数据,不会造成数据间的重叠。如果期间有显示采样访问队列,则会取走当前的队头数据。这样一来,波形的显示要求只跟显示采样有关,可以从一定程度上减少波形在数据传输上的失真。
本发明由于引入了缓冲,BDU发送的真实波形数据到GUI显示终端最终显示出来,是有一定的相位误差的。产生相位误差的原因是数据并不是一被接收就送去显示,而是被解析并缓冲一定量后才送去显示,相位误差大小直接与缓冲大小成正比。虽然本发明目前有此固有缺陷,但缓冲的大小可以控制在合理范围内,所以产生的相位误差也是相对固定和可控的,不会累积,这和前述的现有技术的第2个缺点比起来,长时间运行后的效果是会有很大区别的。
纵观现有其他领域的显示技术,都会和真实数据存在一定的延时,只要该延时不累积,且在能接受的范围内,都会用来取代类似现有技术的第2个缺点的算法。
实施本发明的队列序列化式处理数据的方法和装置,具有以下有益的技术效果:
a)利用队列分别记录快速数据和慢速数据,使数据序列化,不会重叠或覆盖;
b)将数据的收发和解析分离,用多线程思想处理解析,并同样保证序列化;
c)使用队列特有的特性,使数据的访问控制变得简易、高效;
d)数据不丢失,快速数据处理过程加快,提高实时性;
e)嵌入式***或非嵌入式***均适用。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (10)

1.一种队列序列化式处理数据的方法,其特征在于,包括:
S1.在通讯口处设置快速缓冲区以及慢速缓冲区;
S2.接收输入的原始数据,并按预解析分成快速数据以及慢速数据,并以单向队列结构相应放入所述的快速缓冲区以及慢速缓冲区,形成数据帧;
S3.判断所述的数据帧是否合法,如果合法,进入步骤S4,如果不合法,进入步骤S31,将所述的数据帧弃之不用;
S4.将所述的数据帧以队系列化的方式出队解析并显示。
2.根据权利要求1所述的队列序列化式处理数据的方法,其特征在于,所述预解析,具体是:采用轮询法周期性主动检测并接收串行口数据,获取数据命令字及长度。
3.根据权利要求1所述的队列序列化式处理数据的方法,其特征在于,所述预解析,具体是:采用中断、事件或消息机制被动触发接收数据,获取数据命令字及长度。
4.根据权利要求1所述的队列序列化式处理数据的方法,其特征在于,所述通讯口为:RS-232串行口通讯、I2C、SPI、CAN。
5.根据权利要求1所述的队列序列化式处理数据的方法,其特征在于,接收多队列数据时,步骤S2与步骤S4可同时进行。
6.一种队列序列化式处理数据的装置,用于实现权利要求1所述的方法,其特征在于,包括:
缓冲区设置单元:用于在通讯口处设置快速缓冲区以及慢速缓冲区;
原始数据分离单元:与所述的缓冲区设置单元相连,用于接收输入的原始数据,并按预解析分成快速数据以及慢速数据,并以单向队列结构相应放入所述的快速缓冲区以及慢速缓冲区,形成数据帧;
数据帧判断单元:与所述的原始数据分离单元相连,用于判断所述的数据帧是否合法;
数据解析单元:与所述的数据帧判断单元相连,用于将所述的数据帧以队系列化的方式出队解析并显示。
7.根据权利要求6所述的队列序列化式处理数据的装置,其特征在于,所述预解析,具体是:采用轮询法周期性主动检测并接收串行口数据,获取数据命令字及长度。
8.根据权利要求6所述的队列序列化式处理数据的装置,其特征在于,所述预解析,具体是:采用中断、事件或消息机制被动触发接收数据,获取数据命令字及长度。
9.根据权利要求6所述的队列序列化式处理数据的装置,其特征在于,所述通讯口为:RS-232串行口通讯、I2C、SPI、CAN。
10.根据权利要求6所述的队列序列化式处理数据的装置,其特征在于,接收多队列数据时,所述的原始数据分离单元接收数据与所述的数据解析单元解析数据可同步进行。
CN201110456194.2A 2011-12-30 2011-12-30 一种队列序列化式处理数据的方法和装置 Active CN103186608B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110456194.2A CN103186608B (zh) 2011-12-30 2011-12-30 一种队列序列化式处理数据的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110456194.2A CN103186608B (zh) 2011-12-30 2011-12-30 一种队列序列化式处理数据的方法和装置

Publications (2)

Publication Number Publication Date
CN103186608A CN103186608A (zh) 2013-07-03
CN103186608B true CN103186608B (zh) 2017-08-08

Family

ID=48677777

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110456194.2A Active CN103186608B (zh) 2011-12-30 2011-12-30 一种队列序列化式处理数据的方法和装置

Country Status (1)

Country Link
CN (1) CN103186608B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104063216A (zh) * 2014-06-12 2014-09-24 北京航天发射技术研究所 一种基于Labview的高速数据处理显示方法
CN106095716B (zh) * 2016-06-24 2020-06-02 武汉光迅科技股份有限公司 一种基于首尾循环队列的串口通信方法
CN107493266B (zh) * 2017-07-26 2020-07-28 广州广电运通金融电子股份有限公司 嵌入式自助终端的通信***、方法及装置
CN107645564B (zh) * 2017-10-24 2021-03-23 厦门市福工动力技术有限公司 一种基于数据缓存的can报文解析方法及其***
CN109939310A (zh) * 2017-12-20 2019-06-28 北京谊安医疗***股份有限公司 呼吸机的下位机向上位机发送数据的方法和呼吸机
CN108551358B (zh) * 2018-03-16 2021-01-19 恒玄科技(上海)股份有限公司 一种蓝牙耳机不同模型下音频数据的调整方法
CN109213102B (zh) * 2018-09-11 2022-01-18 深圳众城卓越科技有限公司 多命令监测方法、装置、计算机设备及存储介质
CN111835611B (zh) * 2020-07-08 2022-04-05 北京软安科技有限公司 一种车辆can总线数据解析方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2248952A (en) * 1990-10-05 1992-04-22 Digital Equipment Corp Hierarchical integrated circuit cache memory
JP2008160370A (ja) * 2006-12-22 2008-07-10 Kddi Corp データ伝送システム及び方法、データ送信装置並びにデータ受信装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6301629B1 (en) * 1998-03-03 2001-10-09 Alliance Semiconductor Corporation High speed/low speed interface with prediction cache
CN101146102B (zh) * 2007-10-16 2010-09-15 深圳国人通信有限公司 Rru网络中hdlc数据下行、上行的方法及通讯装置
CN101707506B (zh) * 2009-11-06 2013-05-08 中兴通讯股份有限公司 一种光传送网中业务时钟透传的方法及***
CN101986611B (zh) * 2010-11-30 2012-11-28 东南大学 基于两级缓存的快速组流方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2248952A (en) * 1990-10-05 1992-04-22 Digital Equipment Corp Hierarchical integrated circuit cache memory
JP2008160370A (ja) * 2006-12-22 2008-07-10 Kddi Corp データ伝送システム及び方法、データ送信装置並びにデータ受信装置

Also Published As

Publication number Publication date
CN103186608A (zh) 2013-07-03

Similar Documents

Publication Publication Date Title
CN103186608B (zh) 一种队列序列化式处理数据的方法和装置
CN103729329B (zh) 核间通信装置及方法
CN103440216B (zh) 一种通过i2c从设备调试mcu的芯片及方法
CN103221934A (zh) 用于处理集群的控制节点
EP2426871B1 (en) Method and device for scheduling data communication input ports
JPH04230557A (ja) 直接メモリアクセス・コントローラ
WO2001050679A3 (en) Method and apparatus for gigabit packet assignment for multithreaded packet processing
US20120192190A1 (en) Host Ethernet Adapter for Handling Both Endpoint and Network Node Communications
US20110289302A1 (en) Data processing device and method
CN109739786A (zh) 一种dma控制器和异构加速***
CN109445939A (zh) 一种基于主动出让机制的软实时调度内核的调度方法
CN112000446A (zh) 一种数据传输的方法及机器人
US7707584B2 (en) Method and apparatus for synchronizing calls in a server and client system
CN107066413A (zh) 一种用于处理多个总线设备数据的方法、及其总线***
Lakos et al. Modular state space exploration for timed Petri nets
Florissi QoSME: QoS management environment
CN114116015B (zh) 用于管理硬件命令队列的方法及***
CN116400622A (zh) 一种可组网高精度数据采集监控***及方法
US9367496B2 (en) DMA transfer device and method
CN105637475B (zh) 并行访问方法及***
CN114509966A (zh) 一种非同步高速串口实时连续数据采集***
CN205385561U (zh) 一种多屏拼接显示***
CN104601289B (zh) 电子设备及信息处理方法
CN109388489A (zh) 一种基于单导***的多子进程以及进程信号处理的高容错高稳定的技术框架
CN108107750B (zh) 一种电力***仿真的实时io数据处理方法及***

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant