CN109671127B - 一种实现波形绘制的方法及装置 - Google Patents
一种实现波形绘制的方法及装置 Download PDFInfo
- Publication number
- CN109671127B CN109671127B CN201811419309.9A CN201811419309A CN109671127B CN 109671127 B CN109671127 B CN 109671127B CN 201811419309 A CN201811419309 A CN 201811419309A CN 109671127 B CN109671127 B CN 109671127B
- Authority
- CN
- China
- Prior art keywords
- waveform
- drawn
- point
- abscissa
- segment
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000004364 calculation method Methods 0.000 claims description 19
- 239000012634 fragment Substances 0.000 claims description 16
- 238000006243 chemical reaction Methods 0.000 claims description 13
- 238000009877 rendering Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000009825 accumulation Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012917 library technology Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Controls And Circuits For Display Device (AREA)
- Image Generation (AREA)
Abstract
本申请实施例公开了一种实现波形绘制的方法及装置,首先获取待绘制波形数据,并根据上一次绘制的波形片段中最后一个波形点的坐标以及待绘制波形数据确定当前待绘制波形片段中每个波形点的坐标,然后利用当前待绘制波形片段中每个波形点坐标在上一次绘制的波形图像缓存中继续绘制当前待绘制的波形片段;同时,根据当前待绘制的波形片段中最后一个波形点的坐标确定待擦除区域,在绘制当前待绘制的波形片段时,利用待擦除区域的坐标擦除待擦除区域,为下一次绘制预留绘制空间;最后生成当前绘制的波形图像缓存并进行显示,解决了波形绘制过程中卡顿的问题,提高了动态波形的绘制效率。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种实现波形绘制的方法及装置。
背景技术
在一些场景中,需要对波形图像绘制并显示。一个波形图像由大量的顶点连线组成,目前大多数波形绘制方法是每次波形更新均对整条波形进行绘制。这样造成了图像处理能力不高,在绘制数据较多、产生数据较快的动态波形时,进行整条波形绘制会导致绘制图像卡顿、耗时长。另外,低效的图像处理也会导致波形数据处理速度远小于生产速度,从而导致了波形数据的堆积,波形数据的变化不能实时地反映在绘制的波形图像上。因此,现有技术中波形绘制方法存在绘制效率较低的问题。
发明内容
有鉴于此,本申请实施例提供一种实现波形绘制的方法及装置,以解决现有技术中波形绘制效率较低的技术问题。
为解决上述问题,本申请实施例提供的技术方案如下:
一种实现波形绘制的方法,所述方法包括:
获取待绘制波形数据;
根据上一次绘制的波形片段中最后一个波形点的坐标以及所述待绘制波形数据,确定当前待绘制的波形片段中各个波形点的坐标;
根据所述当前待绘制的波形片段中最后一个波形点的坐标确定待擦除区域的坐标;
在上一次绘制的波形图像缓存中,利用所述当前待绘制的波形片段中各个波形点的坐标绘制所述当前待绘制的波形片段,利用所述待擦除区域的坐标擦除所述待擦除区域,生成并保留当前绘制的波形图像缓存;
将所述当前绘制的波形图像缓存进行显示。
在一种可能的实现方式中,所述方法还包括:
获取新产生的波形数据,将所述新产生的波形数据从数据队列的一端写入所述数据队列;
所述获取待绘制波形数据,包括:
从所述数据队列的另一端读取至少一组波形数据作为待绘制波形数据。
在一种可能的实现方式中,所述获取新产生的波形数据,将所述新产生的波形数据从数据队列的一端写入所述数据队列,包括:
获取N组新产生的波形数据,从所述N组新产生的波形数据中丢弃其中的M组波形数据,其中,N、M均为正整数,N>M;
将其他(N-M)组波形数据从数据队列的一端写入所述数据队列。
在一种可能的实现方式中,所述根据上一次绘制的波形片段中最后一个波形点的坐标以及所述待绘制波形数据,确定当前待绘制的波形片段中各个波形点的坐标,包括:
将上一次绘制的波形片段中最后一个波形点的横坐标确定为当前待绘制的波形片段中起始波形点的横坐标;
根据所述当前待绘制的波形片段中起始波形点的横坐标以及波形点间隔计算所述当前待绘制的波形片段中各个波形点的横坐标;
将上一次绘制的波形片段中最后一个波形点的纵坐标确定为当前待绘制的波形片段中起始波形点的纵坐标;
根据所述待绘制波形数据计算所述当前待绘制的波形片段中各个波形点的纵坐标。
在一种可能的实现方式中,所述根据上一次绘制的波形片段中最后一个波形点的坐标以及所述待绘制波形数据,确定当前待绘制的波形片段中各个波形点的坐标,包括:
计算上一次绘制的波形片段中最后一个波形点的横坐标与波形点间隔之和作为当前待绘制的波形片段中起始波形点的横坐标;
根据所述当前待绘制的波形片段中起始波形点的横坐标以及波形点间隔计算所述当前待绘制的波形片段中各个波形点的横坐标;
根据所述待绘制波形数据计算所述当前待绘制的波形片段中各个波形点的纵坐标。
在一种可能的实现方式中,所述根据所述当前待绘制的波形片段中起始波形点的横坐标以及波形点间隔计算所述当前待绘制的波形片段中各个波形点的横坐标,包括:
计算第一目标波形点的序号与波形点间隔的乘积作为所述第一目标波形点的横坐标差值;
计算所述当前待绘制的波形片段中起始波形点的横坐标与所述第一目标波形点的横坐标差值之和作为所述第一目标波形点的横坐标,所述第一目标波形点分别为所述当前待绘制的波形片段中的各个波形点。
在一种可能的实现方式中,所述根据所述待绘制波形数据计算所述当前待绘制的波形片段中各个波形点的纵坐标,包括:
计算第一目标波形点对应的波形数据与幅值转换参数的乘积作为所述第一目标波形点的纵坐标差值;
计算波形基线纵坐标与所述第一目标波形点的纵坐标差值之和作为所述第一目标波形点的纵坐标,所述第一目标波形点分别为所述当前待绘制的波形片段中的各个波形点。
在一种可能的实现方式中,所述方法还包括:
将所述当前待绘制的波形片段中波形点的横坐标大于屏幕横坐标最大值对应的波形点确定为第二目标波形点;
将所述第二目标波形点的横坐标减去所述屏幕横坐标最大值作为所述第二目标波形点的横坐标。
在一种可能的实现方式中,所述方法还包括:
将所述待擦除区域的横坐标大于屏幕横坐标最大值对应的区域确定为目标待擦除区域;
将所述目标待擦除区域的横坐标减去所述屏幕横坐标最大值作为所述目标待擦除区域的横坐标。
在一种可能的实现方式中,所述当前绘制的波形图像缓存保留在后端图形缓冲区;
所述将所述当前绘制的波形图像缓存进行显示,包括:
将所述当前绘制的波形图像缓存复制到前端显示缓冲区进行显示。
一种实现波形绘制的装置,所述装置包括:
获取单元,用于获取待绘制波形数据;
第一确定单元,用于根据上一次绘制的波形片段中最后一个波形点的坐标以及所述待绘制波形数据,确定当前待绘制的波形片段中各个波形点的坐标;
第二确定单元,用于根据所述当前待绘制的波形片段中最后一个波形点的坐标确定待擦除区域的坐标;
生成单元,用于在上一次绘制的波形图像缓存中,利用所述当前待绘制的波形片段中各个波形点的坐标绘制所述当前待绘制的波形片段,利用所述待擦除区域的坐标擦除所述待擦除区域,生成并保留当前绘制的波形图像缓存;
显示单元,用于将所述当前绘制的波形图像缓存进行显示。
在一种可能的实现方式中,所述装置还包括:
写入单元,用于获取新产生的波形数据,将所述新产生的波形数据从数据队列的一端写入所述数据队列;
所述第一获取单元,具体用于从所述数据队列的另一端读取至少一组波形数据作为待绘制波形数据。
在一种可能的实现方式中,所述写入单元,包括:
获取子单元,用于获取N组新产生的波形数据,从所述N组新产生的波形数据中丢弃其中的M组波形数据,其中,N、M均为正整数,N>M;
写入子单元,用于将其他(N-M)组波形数据从数据队列的一端写入所述数据队列。
在一种可能的实现方式中,所述第一确定单元,包括:
第一确定子单元,用于将上一次绘制的波形片段中最后一个波形点的横坐标确定为当前待绘制的波形片段中起始波形点的横坐标;
第一计算子单元,用于根据所述当前待绘制的波形片段中起始波形点的横坐标以及波形点间隔计算所述当前待绘制的波形片段中各个波形点的横坐标;
第二确定子单元,用于将上一次绘制的波形片段中最后一个波形点的纵坐标确定为当前待绘制的波形片段中起始波形点的纵坐标;
第二计算子单元,用于根据所述待绘制波形数据计算所述当前待绘制的波形片段中各个波形点的纵坐标。
在一种可能的实现方式中,所述第一确定单元,包括:
第三计算子单元,用于计算上一次绘制的波形片段中最后一个波形点的横坐标与波形点间隔之和作为当前待绘制的波形片段中起始波形点的横坐标;
第四计算子单元,用于根据所述当前待绘制的波形片段中起始波形点的横坐标以及波形点间隔计算所述当前待绘制的波形片段中各个波形点的横坐标;
第五计算子单元,用于根据所述待绘制波形数据计算所述当前待绘制的波形片段中各个波形点的纵坐标。
在一种可能的实现方式中,所述第一计算子单元,具体用于计算第一目标波形点的序号与波形点间隔的乘积作为所述第一目标波形点的横坐标差值;
计算所述当前待绘制的波形片段中起始波形点的横坐标与所述第一目标波形点的横坐标差值之和作为所述第一目标波形点的横坐标,所述第一目标波形点分别为所述当前待绘制的波形片段中的各个波形点;或,
所述第四计算子单元,具体用于计算第一目标波形点的序号与波形点间隔的乘积作为所述第一目标波形点的横坐标差值;
计算所述当前待绘制的波形片段中起始波形点的横坐标与所述第一目标波形点的横坐标差值之和作为所述第一目标波形点的横坐标,所述第一目标波形点分别为所述当前待绘制的波形片段中的各个波形点。
在一种可能的实现方式中,所述第二计算子单元,具体用于计算第一目标波形点对应的波形数据与幅值转换参数的乘积作为所述第一目标波形点的纵坐标差值;
计算波形基线纵坐标与所述第一目标波形点的纵坐标差值之和作为所述第一目标波形点的纵坐标,所述第一目标波形点分别为所述当前待绘制的波形片段中的各个波形点;或,
所述第五计算子单元,具体用于计算第一目标波形点对应的波形数据与幅值转换参数的乘积作为所述第一目标波形点的纵坐标差值;
计算波形基线纵坐标与所述第一目标波形点的纵坐标差值之和作为所述第一目标波形点的纵坐标,所述第一目标波形点分别为所述当前待绘制的波形片段中的各个波形点。
在一种可能的实现方式中,所述装置还包括:
第三确定单元,用于将所述当前待绘制的波形片段中波形点的横坐标大于屏幕横坐标最大值对应的波形点确定为第二目标波形点;
第一计算单元,用于将所述第二目标波形点的横坐标减去所述屏幕横坐标最大值作为所述第二目标波形点的横坐标。
在一种可能的实现方式中,所述装置还包括:
第四确定单元,用于将所述待擦除区域的横坐标大于屏幕横坐标最大值对应的区域确定为目标待擦除区域;
第二计算单元,用于将所述目标待擦除区域的横坐标减去所述屏幕横坐标最大值作为所述目标待擦除区域的横坐标。
在一种可能的实现方式中,所述当前绘制的波形图像缓存保留在后端图形缓冲区;
所述显示单元,具体用户将所述当前绘制的波形图像缓存复制到前端显示缓冲区进行显示。
一种计算机可读存储介质,所述机算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行上述的实现波形绘制的方法。
一种计算机程序产品,所述计算机程序产品在终端设备上运行时,使得所述终端设备执行上述的实现波形绘制的方法。
由此可见,本申请实施例具有如下有益效果:
本申请实施例首先获取待绘制波形数据,并根据上一次绘制的波形片段中最后一个波形点的坐标以及待绘制波形数据确定当前待绘制波形片段中每个波形点的坐标,然后利用当前待绘制波形片段中每个波形点坐标在上一次绘制的波形图像缓存中继续绘制当前待绘制的波形片段;同时,根据当前待绘制的波形片段中最后一个波形点的坐标确定待擦除区域,在绘制当前待绘制的波形片段时,利用待擦除区域的坐标擦除待擦除区域,为下一次绘制预留绘制空间;最后,生成当前绘制的波形图像缓存并进行显示。也就是,在上一次绘制后的波形图像缓存的基础上,在上一次绘制的波形片段之后继续绘制一段新的波形片段,同时擦除本次绘制的波形片段之后的一段区域,以便于在该擦除区域上进行下一次绘制波形片段,通过每次绘制少量波形数据,对屏幕上的波形进行更新,将新绘制的波形片段与已绘制的波形片段构成当前波形,解决了波形绘制过程中卡顿的问题,提高了动态波形的绘制效率。
附图说明
图1为本申请实施例提供的一种实现波形绘制的方法的流程图;
图2为本申请实施例提供的动态绘制波形片段示例图;
图3A为本申请实施例提供的一种双缓冲机制实现示例图;
图3B为本申请实施例提供的建立数据队列示例图;
图4为本申请实施例提供的一种确定波形点坐标的方法流程图;
图5为本申请实施例提供的另一种确定波形点坐标的方法流程图;
图6为本申请实施例提供的实现波形绘制的框架结构图;
图7为本申请实施例提供的一种实现波形绘制装置结构图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请实施例作进一步详细的说明。
为便于理解本申请的技术方案,下面将先对本申请的背景技术进行说明。
发明人在对传统的绘制波形方法研究中发现,传统的波形绘制方法当波形更新时,会删除已绘制的波形片段,再重新绘制整条波形,这样会造成每次在更新波形时,所绘制的波形数据不仅包括更新的波形数据,还包括之前已绘制的波形数据,这样使得每次绘制的波形数据较多导致绘制波形卡顿、耗时长,进而造成波形绘制效率较低以及波形数据堆积。
基于此,本申请实施例提供了一种实现波形绘制的方法及装置,当存在待绘制波形数据时,无需删除已绘制的波形片段,而是根据上一次绘制的波形片段中最后一个波形点的坐标以及待绘制波形数据,确定当前待绘制的波形片段中各个波形点的坐标。然后利用当前待绘制的波形片段中每个波形点的坐标,在上一次绘制的波形图像缓存中已经擦除的区域内绘制当前待绘制的波形片段。同时根据当前待绘制的波形片段中最后一个波形点的坐标确定待擦除区域,并擦除待擦除区域为下一次绘制波形片段预留空间。最后生成当前绘制的波形图像缓存并进行显示,从而在需要更新波形片段时,可以仅绘制待绘制波形片段,减少绘制数据量,提高绘制效率、避免数据堆积。
为便于理解本申请的技术方案,下面将结合附图对本申请提供的实现波形绘制的方法进行说明。
参见图1,该图为本申请实施例提供的一种实现波形绘制的方法的流程图,如图1所示,该方法可以包括:
S101:获取待绘制波形数据。
本实施例中,为更新波形片段,首先获取待绘制波形数据,以便根据待绘制波形数据确定当前待绘制的波形片段。在具体实现时,可以创建待绘制波形数据读取线程,周期性地获取待绘制波形数据。
需要说明的是,所获取的待绘制波形数据可以包括多组波形数据,每组波形数据可以包括一个或多个波形数据,而每个波形数据对应一条波形片段。例如,每组波形数据包括x个波形数据,则x个波形数据对应x条波形片段,x为正整数。为便于理解,本实施例以一组波形数据包括1个波形数据为例进行说明。
S102:根据上一次绘制的波形片段中最后一个波形点的坐标以及待绘制波形数据,确定当前待绘制的波形片段中各个波形点的坐标。
本实施例中,当获取待绘制波形数据后,根据上一次绘制的波形片段中最后一个波形点的坐标以及待绘制波形数据,确定当前待绘制的波形片段中每个波形点的坐标。
本实施例中,可以获取多组波形数据,每组波形数据可以确定一个波形点的坐标,从而确定出多个波形点的坐标。例如,获取5组波形数据{a0}、{a1}、{a2}、{a3}、{a4},每组波形数据包括1个波形数据,从而确定出当前待绘制波形片段中5个波形点的坐标。其中,关于确定当前绘制的波形片段中各个波形点的坐标具体实现方式将在后续实施例进行说明。
S103:根据当前待绘制的波形片段中最后一个波形点的坐标确定待擦除区域的坐标。
本实施例中,当确定出当前待绘制的波形片段中每个波形点的坐标后,根据当前待绘制的波形片段中最后一个波形点的坐标确定待擦除区域的起始坐标,以便从待擦除区域的起始坐标进行擦除,为下一次绘制波形片段预留绘制空间。
其中,待擦除区域的坐标可以由当前待绘制的波形片段中最后一个波形点的坐标、待擦除区域的预设宽度、待擦除区域的预设高度进行确定。其中,根据当前待绘制的波形片段中最后一个波形点的横坐标可以确定出待擦除区域的起始横坐标,根据待擦除区域的预设宽度可以确定出待擦除区域的横坐标范围;根据待擦除区域的预设高度可以确定出待擦除区域的纵坐标范围。另外,待擦除区域的预设宽度和待擦除区域的预设高度可以根据实际需求进行预先设定。
S104:在上一次绘制的波形图像缓存中,利用当前待绘制的波形片段中各个波形点的坐标绘制当前待绘制的波形片段,利用待擦除区域的坐标擦除待擦除区域,生成并保留当前绘制的波形图像缓存。
本实施例中,根据确定的当前待绘制的波形片段中各个波形点的坐标,在上一次绘制的波形图像缓存中继续绘制当前待绘制的波形片段;同时根据确定的待擦除区域的坐标擦除待擦除区域,进而生成并保留当前绘制的波形图像缓存。
其中,通过S103可以确定待擦除区域的起始坐标,对于待擦除区域的宽度以及高度可以预先设定,但需保证每次擦除的待擦除区域大于下一次绘制波形片段所占的区域,从而可以绘制下一次的待绘制波形片段。在擦除待擦除区域时,可以通过在待擦除区域内绘制两个空白三角形方式实现擦除。
可以理解的是,在绘制当前待绘制的波形片段时,也可以同时进行擦除操作以为下一次绘制待绘制波形片段预留绘制空间。当再次获取待绘制波形数据时,仍执行S101-S103,确定当前待绘制的波形片段中每个波形点的坐标以及待擦除区域的坐标,并在上一次绘制的波形图像缓存中绘制当前待绘制的波形片段以及擦除待擦除区域,生成并保留当前绘制的波形图像缓存;当有新的波形数据产生时,依次循环。
当待擦除区域的坐标或者待绘制波形片段中的波形点的坐标大于屏幕横坐标最大值时,可以将大于屏幕横坐标最大值的坐标减去屏幕横坐标最大值,从波形图像缓存的起始位置开始擦除或绘制,从而可以不间断地绘制新的波形数据。
为便于理解,参见图2,其中(a)在上一次波形图像缓存中继续绘制当前待绘制的波形片段,同时擦除待擦除区域;当获取新的待绘制波形数据时,在(a)擦除的待擦除区域中绘制当前待绘制波形片段,并重新确定待擦除区域坐标,擦除待擦除区域,如(b)所示;当再次获取新的待绘制波形数据时,在(b)擦除的待擦除区域中绘制当前待绘制波形片段,并重新确定待擦除区域坐标,当待擦除区域的横坐标大于屏幕横坐标最大值时,将大于屏幕横坐标最大值的坐标减去屏幕横坐标最大值,从波形图像缓存的起始位置开始擦除,如(c)所示;当再次获取新的待绘制波形数据时,在(c)擦除的待擦除区域中绘制当前待绘制波形片段,在当前绘制的波形片段中横坐标大于屏幕横坐标最大值时,将大于屏幕横坐标最大值的坐标减去屏幕横坐标最大值,从波形图像缓存的起始位置进行绘制,图(d)所示。
需要说明的是,本实施例中,每次确定的待擦除区域大小可以相同,也可以根据实际需求确定不同大小的待擦除区域,具体可以根据实际情况进行确定,本实施例在此不再限定。
S105:将当前绘制的波形图像缓存进行显示。
本实施例中,当生成当前绘制的波形图像缓存时,将当前绘制的波形图像缓存在屏幕上进行显示。
在实际应用中,绘图容器可以包括前端显示缓冲区和后端图形缓冲区,其中,后端图形缓冲区可以用于绘制波形图像;前端显示缓冲区用于显示波形图像。因此,在具体实现时,可以将生成的当前绘制的波形图像缓存保留在后端图形缓冲区,当需要显示时,可以从后端图形缓冲区中复制当前绘制的波形图像缓存到前端显示缓冲区进行显示。
需要说明的是,在具体实现时,可以使用开放图形库技术(Open GraphicsLibrary,OpenGL)进行波形片段的绘制,为提高绘制效率,可以是GPU参与绘图运算,分担CPU在绘图时的运算压力。在使用OpenGL技术时,首先分别创建绘制容器和波形渲染器的实例,并将渲染器关联到绘图容器,进而设置波形渲染器的渲染模式为按需刷新RENDERMODE_WHEN_DIRTY。当波形渲染器设置成功后,分别获取绘图容器的前端显示缓冲区和后端图形缓冲区,进行双缓冲机制配置,将双缓冲地址交换行为属性的值设置为EGL_BUFFER_PRESERVED。
当配置完成双缓冲机制后,在通过双缓冲地址交换渲染界面时,保留后端图形缓冲区的内容,仅渲染需要更新的脏区域,即当前待绘制的波形片段的区域以及待擦除区域。在每次渲染界面时,可以将后端图形缓冲区的内容拷贝至前端图形缓冲区中,从而不仅保留了之前已绘制的波形片段,还增加了本次新绘制的波形片段。如图3A所示,在后端图形缓冲区的上一次波形图像缓存的基础上继续绘制当前待绘制波形片段,以及待擦除区域,生成当前绘制的波形图像缓存;然后将后端图形缓冲区中当前绘制的波形图像缓存拷贝至前端显示缓冲区进行显示。
通过上述实施例可知,本申请实施例首先获取待绘制波形数据,并根据上一次绘制的波形片段中最后一个波形点的坐标以及待绘制波形数据确定当前待绘制波形片段中每个波形点的坐标,然后利用当前待绘制波形片段中每个波形点坐标在上一次绘制的波形图像缓存中继续绘制当前待绘制的波形片段;同时,根据当前待绘制的波形片段中最后一个波形点的坐标确定待擦除区域,在绘制当前待绘制的波形片段时,利用待擦除区域的坐标擦除待擦除区域,为下一次绘制预留绘制空间;最后,生成当前绘制的波形图像缓存并进行显示。也就是,在上一次绘制后的波形图像缓存的基础上,在上一次绘制的波形片段之后继续绘制一段新的波形片段,同时擦除本次绘制的波形片段之后的一段区域,以便于在该擦除区域上进行下一次绘制波形片段,通过每次绘制少量波形数据,对屏幕上的波形进行更新,将新绘制的波形片段与已绘制的波形片段构成当前波形,解决了波形绘制过程中卡顿的问题,提高了动态波形的绘制效率。
可以理解的是,波形数据的产生速度较快,为避免新产生的波形数据丢失,一种可能的实现方式中,可以将新产生的波形数据存储在数据队列中,该数据队列可以为先进先出队列,当获取新产生的波形数据时,将新产生的波形数据从数据队列的一端写入数据队列;并从数据队列的另一端读取至少一组波形数据作为待绘制波形数据。
在具体实现时,可以采用等待无关(Wait-Free)算法实现的基于链接节点的无界线程安全队列,采用先进先出的规则对添加到队列中的波形数据进行排序。即新添加的波形数据被存放在队尾,当获取待绘制波形数据时,返回队头的波形数据。例如,图3B所示,写入波形数据线程将从数据源获取的波形数据写入对尾。
在实际应用时,当创建无界线安全队列后,可以创建一个写入波形数据的线程,然后可以周期地从数据源中读取预设组数的新波形数据,将读取的波形数据写入队列中。例如,每隔20毫秒从数据源中读取5组新波形数据,将读取的5组新波形数据写入队列中。
可以理解的是,数据源产生新波形数据的较快,使得读取的新波形数据中可能包括多组相近的波形数据,导致队列中存储较多相似波形数据,造成从队列中读取数据速度小于加入数据的速度,导致队列中波形数据堆积。为避免波形数据冗余,在将读取的新波形数据写入队列之前,可以丢弃部分新波形数据。基于此,在一种可能的实现方式中,获取N组新产生的波形数据,从N组新产生的波形数据中丢弃其中的M组波形数据,其中,N、M均为正整数,且N>M;将其他(N-M)组波形数据从数据队列的一端写入数据队列中。
需要说明的是,被丢弃的M组波形数据可以根据预先设定的丢弃规则进行确定。其中,丢弃规则可以是将N组新产生的波形数据中的前M组波形数据丢弃。例如,将获取的5组新产生的波形数据中前4组波形数据丢弃。也可以是按照预设间隔从N组新产生的波形数据中确定M组波形数据,如果在第一次循环中确定的组数小于M,则在剩下的波形数据中继续确定,直至确定M组波形数据。例如,获取5组新产生的波形数据,每隔1组数据进行丢弃,假设将第1组、第3组、第5组波形数据丢弃,剩下第2组和第4组波形数据。当M=4时,则将第2组数据丢弃,则将第4组波形数据从数据队列的一端写入。
可以理解的是,在进行波形数据写入数据队列的同时,也可以从数据队列中读取待绘制波形数据。在具体实现时,可以创建一个波形数据读取线程,每隔预设时间向波形渲染器发送波形图像刷新指令。当渲染器接收到刷新指令后,可以启动无限循环监听数据队列,当数据队列不为空时,从数据队列中循环读取待绘制波形数据,然后根据上一次绘制的波形片段中最后一个波形点的坐标以及待绘制波形数据确定当前待绘制的波形片段中每个波形点的坐标。通过丢弃冗余数据以及双线程监听数据队列的方法,解决了数据队列中待绘制波形数据堆积问题。例如图3B所示,从数据队列的头部开始读取波形数据,并在后端图形缓冲区绘制波形片段。
其中,关于确定当前待绘制的波形片段中每个波形点坐标的实现,本实施例提供了两种实现方式,下面将结合附图分别对两种实现方式进行说明。
参见图4,该图为本申请实施例提供的一种确定当前待绘制波形片段中波形点坐标方法的流程图,该方法可以包括:
S401:将上一次绘制的波形片段中最后一个波形点的横坐标确定为当前待绘制的波形片段中起始波形点的横坐标。
本实施例中,当获取的待绘制波形数据中包括上一次绘制的波形片段中最后一个波形点对应的波形数据时,则可以直接将上一次绘制的波形片段中最后一个波形点的横坐标确定为当前待绘制的波形片段中起始波形点的横坐标。
例如,从数据队列中读取4组波形数据,并与上一次绘制时的最后一组波形数据整合在一起形成待绘制波形数据,并将上一次绘制时的最后一组波形数据对应的波形点的横坐标确定为当前待绘制波形片段中起始波形点的横坐标。
S402:根据当前待绘制的波形片段中起始波形点的横坐标以及波形点间隔计算当前待绘制的波形片段中各个波形点的横坐标。
本实施例中,当确定当前待绘制波形片段中起始波形点的横坐标时,可以根据预先设定的波形间隔以及起始波形点的横坐标计算当前待绘制的波形片段中其它每个波形点的横坐标。
在具体实现时,本实施例提供了一种确定待绘制的波形片段中各个波形点横坐标的实现方式,将当前待绘制的波形片段中每个波形点作为第一目标波形点,以第一目标波形点为对象进行说明,具体可以通过以下步骤计算获得:
1)计算第一目标波形点的序号与波形点间隔的乘积作为第一目标波形点的横坐标差值。
本实施例中,获取的待绘制波形数据中每个波形数据可以对应一个序号,以避免波形数据混乱,从而保证波形数据可以按照序号顺序绘制。当获取第一目标波形点的序号时,将第一目标波形点的序号与波形点间隔相乘,将乘积作为第一目标波形点的横坐标差值。
其中,波形点间隔为大于零的自然数,可以根据实际需求预先设定。例如,第一目标波形点的序号为a,预设间隔为λ,则第一目标波形点的横坐标差值c=λ*a。
2)计算当前待绘制的波形片段中起始波形点的横坐标与第一目标波形点的横坐标差值之和作为第一目标波形点的横坐标。
本实施例中,当确定第一目标波形点的横坐标差值以及当前待绘制波形片段中起始波形点的横坐标后,将第一目标波形点的横坐标差值与起始波形点的横坐标相加获得第一目标波形点的横坐标。
在具体实现时,可以利用公式(1)计算获得第一目标波形点的横坐标:
X=X0+λ*b (1)
其中,X为第一目标波形点的横坐标,X0为当前待绘制的波形片段中起始波形点的横坐标,λ*b为第一目标波形点的横坐标差值,λ为波形点间隔,b为第一目标波形点的序号。
对于当前待绘制波形片段中的每个波形点均可以利用公式(1)计算获得该波形点的横坐标。
需要说明的是,由于数据源产生波形数据的随机性,为保证所获取的待绘制波形数据可以在屏幕上正常显示,当确定出当前待绘制的波形片段中波形点的横坐标大于屏幕横坐标最大值时,需要对该波形点的横坐标进行处理。具体可以为,将当前待绘制的波形片段中波形点的横坐标大于屏幕横坐标最大值对应的波形点确定为第二目标波形点;将第二目标波形点的横坐标减去屏幕横坐标最大值作为第二目标波形点的横坐标。
本实施例中,当计算获得的当前待绘制的波形片段中某波形点的横坐标大于屏幕横坐标最大值时,将该波形点确定为第二目标波形点。然后将第二目标波形点的横坐标与屏幕横坐标最大值做差,将差值作为第二目标波形点的横坐标。最后,可以根据第二目标波形点的横坐标绘制该波形点。
S403:将上一次绘制的波形片段中最后一个波形点的纵坐标确定为当前待绘制的波形片段中起始波形点的纵坐标。
S404:根据待绘制波形数据计算当前待绘制的波形片段中各个波形点的纵坐标。
本实施例中,将上一次绘制的波形片段中最后一个波形点的纵坐标确定为当前待绘制的波形片段中起始波形点的纵坐标,而其它波形点的纵坐标则可以根据待绘制波形数据计算获得。
其中,关于确定当前待绘制波形片段中波形点纵坐标的实现,本实施例提供了一种计算方式,具体可以通过以下步骤计算获得:
1)计算第一目标波形点对应的波形数据与幅值转换参数的乘积作为第一目标波形点的纵坐标差值。
本实施例中,可以将第一目标波形点对应的波形数据与幅值转换参数相乘获得第一目标波形点的纵坐标差值。在实际应用中,幅值转换参数可以设置为波形高度除以波形振幅所得的商值。其中,波形高度为波形片段中波峰波谷纵坐标的差值;波形振幅与波形数据的取值范围相关,例如,当波形数据的取值范围为0-4086时,波形振幅对应的数值为2048。
2)计算波形基线纵坐标与第一目标波形点的纵坐标差值之和作为第一目标波形点的纵坐标。
本实施例中,当确定第一目标波形点的纵坐标差值后,将波形基线纵坐标与第一目标波形点的纵坐标差值相加获得第一目标波形点的纵坐标。其中,波形基线纵坐标用于表征在屏幕上可以显示波形点的最小纵坐标。
在具体实现时,可以利用公式(2)计算获得第一目标波形点的纵坐标:
Y=α*h+Y0 (2)
其中,Y表示第一目标波形点的纵坐标,h为第一目标波形点对应的波形数据,α为幅值转换参数,Y0为波形基线纵坐标。
对于当前待绘制波形片段中的每个波形点均可以利用公式(2)计算获得该波形点的纵坐标。例如,获取5组波形数据{h0}、{h1}、{h2}、{h3}、{h4},每组数据表示一个波形点。由于{h0}为上一次绘制时对应的最后一组波形数据,其对应的横坐标已经确定,无需再计算。则将其它4组波形数据分别代入公式(2),从而得到4个波形点的纵坐标。
可以理解的是,通过公式(1)和(2)可以计算获得当前待绘制波形片段中每个波形点的横纵坐标,然后根据每个波形点的坐标,在上一次绘制的波形图像中绘制当前待绘制波形片段,从而实现波形片段的更新。
参见图5,该图为本申请实施例提供的另一种确定当前待绘制波形片段中波形点坐标方法的流程图,如图5所示,该方法可以包括:
S501:计算上一次绘制的波形片段中最后一个波形点的横坐标与波形点间隔之和作为当前待绘制的波形片段中起始波形点的横坐标。
本实施例中,当获取的待绘制波形数据不包括上一次绘制时最后一个波形点对应的波形数据时,可以根据上一次绘制的波形片段中最后一个波形点的横坐标以及波形点间隔获得当前待绘制的波形片段中起始波形点的横坐标。即将上一次绘制的波形片段中最后一个波形点的横坐标与波形点间隔相加得到当前待绘制的波形片段中起始波形点的横坐标。
其中,波形点间隔可以预先设定,具体间隔大小可以根据实际波形数据的特点进行设置。
S502:根据当前待绘制的波形片段中起始波形点的横坐标以及波形点间隔计算当前待绘制的波形片段中各个波形点的横坐标。
本实施例中,当确定出当前待绘制的波形片段中起始波形点的横坐标后,可以根据当前待绘制的波形片段中起始波形点的横坐标以及波形点间隔计算当前待绘制的波形片段中各个波形点的横坐标。
需要说明的是,S502与S402具有相同的实现,具体实现内容可以参见上述实施例。也就是,S502可以利用公式(1)计算获得当前待绘制的波形片段中各个波形点的横坐标。
可以理解的是,当计算获得的当前待绘制的波形片段中某波形点的横坐标大于屏幕横坐标最大值时,将该波形点确定为第二目标波形点。然后将第二目标波形点的横坐标与屏幕横坐标最大值做差,将差值作为第二目标波形点的横坐标。最后,可以根据第二目标波形点的横坐标绘制该波形点。
S503:根据待绘制波形数据计算当前待绘制的波形片段中各个波形点的纵坐标。
本实施例中,S503与S404可以具有相同的实现,具体实现内容可以参见上述实施例,本实施例在此不再赘述。
需要说明的是,本实施例中,所获取的待绘制波形数据中未包括上一次绘制时的最后一组波形数据,因此,需要确定当前待绘制的波形片段中起始波形点的纵坐标以及其它波形点的纵坐标。
通过上述描述,当获取待绘制波形数据时,可以利用上述两种方式计算获得当前待绘制波形片段中每个波形点的坐标,然后根据每个波形点的坐标在上一次绘制的波形图像缓存中绘制当前待绘制的波形片段,即通过分段构建和局部更新波形图,提高了波形的绘制效率。
可以理解的是,本实施例中在绘制当前待绘制波形片段的同时,也在进行擦除操作。当确定的待擦除区域的坐标大于屏幕横坐标最大值时,需要对大于屏幕横坐标最大值的区域进行处理,以便可以擦除一定区域,为下一次绘制波形预留足够空间。具体实现时,将待擦除区域的横坐标大于屏幕横坐标最大值对应的区域确定为目标待擦除区域;将目标待擦除区域的横坐标减去屏幕横坐标最大值作为目标待擦除区域的横坐标。
在具体实现时,可以根据当前待绘制的波形片段中最后一个波形点的坐标、预设宽度以及预设高度确定待擦除区域的横纵坐标,当待擦除区域的横坐标大于屏幕横坐标最大值时,将超出屏幕的区域确定为目标待擦除区域,然后将该部分区域的横坐标减去屏幕横坐标最大值,从而将超出部分转换到屏幕显示区域内。
另外,通过上述实施例可知,获取的待绘制波形数据可以包括多组波形数据,每组波形数据可以包括多个波形数据。而且,每组波形数据中的每个波形数据对应不同的波形片段。在绘制任意一条波形片段,均可以参照上述实施例所描述的波形绘制方法。例如,共获取5组波形数据,每组波形数据包括3个波形数据,则利用5组波形数据可以绘制3条波形片段。其中,5组波形数据分别为{a0、b0、c0}、{a1、b1、c1}、{a2、b2、c2}、{a3、b3、c3}、{a4、b4、c4},则根据{a0、a1、a2、a3、a4}、{b0、b1、b2、b3、b4}、{c0、c1、c2、c3、c4}可以绘制3条波形片段。
为便于理解,参见图6,该图为本申请实施例提供的实现波形绘制的框架图。其中,以获取5组波形数据,每组波形数据包括12个波形数据为例进行说明。而且,获取的5组波形数据中包括上一次绘制时最后一组波形数据。具体实现时,将新产生的波形数据写入数据队列,判断是否读取到4组波形数据,具体可以判断变量Index是否大于或等于4,如果Index小于4,,则判断数据队列是否为空,如果为空,则写入波形数据;如果不为空,则设置数据指针dataIndex=0,判断dataIndex是否小于12,也就是判断是否读取到一组数据,如果小于12,则继续从数据队列中读取波形数据,并将读取的波形数据添加到数组中,对dataIndex加1,并继续判断dataIndex是否小于12;如果dataIndex不小于12,表明已读取一组波形数据,则将Index加1,并判断是否读取到4组波形数据。
如果已读取到4组波形数据,则将读取的4组波形数据与上一次绘制时的最后一组波形数据整合一起开始绘制由5个波形点组成的12条波形片段,首先设置绘制波形片段条数的变量lineIndex=0,然后进入双循环,首先判断lineIndex是否小于12,如果小于12,则设置每条波形片段中波形点个数ptIndex=0,然后判断ptIndex是否小于5,即判断是否绘制出5个波形点,如果小于5,表明未绘制出5个波形点,则更新X、Y坐标,绘制该波形点,然后将ptIndex加1,并继续判断ptIndex的数值大小;若果不小于5,表明已绘制出5个波形点,即绘制完成一条波形片段,则lineIndex加1,然后继续判断lineIndex是否小于12;如果不小于12,则表明已绘制完成5组波形数据所表示的12条波形片段,则记录最后一组波形数据对应的波形点坐标,从而更新下一次绘制的起始波形点的坐标,同时更新待擦除区域的坐标。
基于上述方法实施例,本申请实施例还提供了一种实现波形绘制的装置,下面将结合附图对该装置进行说明。
参见图7,该图为本申请实施例提供的一种实现波形绘制的装置结构图,该装置可以包括:
获取单元701,用于获取待绘制波形数据;
第一确定单元702,用于根据上一次绘制的波形片段中最后一个波形点的坐标以及所述待绘制波形数据,确定当前待绘制的波形片段中各个波形点的坐标;
第二确定单元703,用于根据所述当前待绘制的波形片段中最后一个波形点的坐标确定待擦除区域的坐标;
生成单元704,用于在上一次绘制的波形图像缓存中,利用所述当前待绘制的波形片段中各个波形点的坐标绘制所述当前待绘制的波形片段,利用所述待擦除区域的坐标擦除所述待擦除区域,生成并保留当前绘制的波形图像缓存;
显示单元705,用于将所述当前绘制的波形图像缓存进行显示。
在一种可能的实现方式中,所述装置还包括:
写入单元,用于获取新产生的波形数据,将所述新产生的波形数据从数据队列的一端写入所述数据队列;
所述第一获取单元,具体用于从所述数据队列的另一端读取至少一组波形数据作为待绘制波形数据。
在一种可能的实现方式中,所述写入单元,包括:
获取子单元,用于获取N组新产生的波形数据,从所述N组新产生的波形数据中丢弃其中的M组波形数据,其中,N、M均为正整数,N>M;
写入子单元,用于将其他(N-M)组波形数据从数据队列的一端写入所述数据队列。
在一种可能的实现方式中,所述第一确定单元,包括:
第一确定子单元,用于将上一次绘制的波形片段中最后一个波形点的横坐标确定为当前待绘制的波形片段中起始波形点的横坐标;
第一计算子单元,用于根据所述当前待绘制的波形片段中起始波形点的横坐标以及波形点间隔计算所述当前待绘制的波形片段中各个波形点的横坐标;
第二确定子单元,用于将上一次绘制的波形片段中最后一个波形点的纵坐标确定为当前待绘制的波形片段中起始波形点的纵坐标;
第二计算子单元,用于根据所述待绘制波形数据计算所述当前待绘制的波形片段中各个波形点的纵坐标。
在一种可能的实现方式中,所述第一确定单元,包括:
第三计算子单元,用于计算上一次绘制的波形片段中最后一个波形点的横坐标与波形点间隔之和作为当前待绘制的波形片段中起始波形点的横坐标;
第四计算子单元,用于根据所述当前待绘制的波形片段中起始波形点的横坐标以及波形点间隔计算所述当前待绘制的波形片段中各个波形点的横坐标;
第五计算子单元,用于根据所述待绘制波形数据计算所述当前待绘制的波形片段中各个波形点的纵坐标。
在一种可能的实现方式中,所述第一计算子单元,具体用于计算第一目标波形点的序号与波形点间隔的乘积作为所述第一目标波形点的横坐标差值;
计算所述当前待绘制的波形片段中起始波形点的横坐标与所述第一目标波形点的横坐标差值之和作为所述第一目标波形点的横坐标,所述第一目标波形点分别为所述当前待绘制的波形片段中的各个波形点;或,
所述第四计算子单元,具体用于计算第一目标波形点的序号与波形点间隔的乘积作为所述第一目标波形点的横坐标差值;
计算所述当前待绘制的波形片段中起始波形点的横坐标与所述第一目标波形点的横坐标差值之和作为所述第一目标波形点的横坐标,所述第一目标波形点分别为所述当前待绘制的波形片段中的各个波形点。
在一种可能的实现方式中,所述第二计算子单元,具体用于计算第一目标波形点对应的波形数据与幅值转换参数的乘积作为所述第一目标波形点的纵坐标差值;
计算波形基线纵坐标与所述第一目标波形点的纵坐标差值之和作为所述第一目标波形点的纵坐标,所述第一目标波形点分别为所述当前待绘制的波形片段中的各个波形点;或,
所述第五计算子单元,具体用于计算第一目标波形点对应的波形数据与幅值转换参数的乘积作为所述第一目标波形点的纵坐标差值;
计算波形基线纵坐标与所述第一目标波形点的纵坐标差值之和作为所述第一目标波形点的纵坐标,所述第一目标波形点分别为所述当前待绘制的波形片段中的各个波形点。
在一种可能的实现方式中,所述装置还包括:
第三确定单元,用于将所述当前待绘制的波形片段中波形点的横坐标大于屏幕横坐标最大值对应的波形点确定为第二目标波形点;
第一计算单元,用于将所述第二目标波形点的横坐标减去所述屏幕横坐标最大值作为所述第二目标波形点的横坐标。
在一种可能的实现方式中,所述装置还包括:
第四确定单元,用于将所述待擦除区域的横坐标大于屏幕横坐标最大值对应的区域确定为目标待擦除区域;
第二计算单元,用于将所述目标待擦除区域的横坐标减去所述屏幕横坐标最大值作为所述目标待擦除区域的横坐标。
在一种可能的实现方式中,所述当前绘制的波形图像缓存保留在后端图形缓冲区;
所述显示单元,具体用户将所述当前绘制的波形图像缓存复制到前端显示缓冲区进行显示。
需要说明的是,本实施例中各单元或模块的实现,可以参见图1-图6的实现,本实施例在此不再赘述。
另外,本申请实施例还提供一种计算机可读存储介质,所述机算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行上述的实现波形绘制的方法。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品在终端设备上运行时,使得所述终端设备执行上述的实现波形绘制的方法。
由上述实施例可知,本申请实施例首先获取待绘制波形数据,并根据上一次绘制的波形片段中最后一个波形点的坐标以及待绘制波形数据确定当前待绘制波形片段中每个波形点的坐标,然后利用当前待绘制波形片段中每个波形点坐标在上一次绘制的波形图像缓存中继续绘制当前待绘制的波形片段;同时,根据当前待绘制的波形片段中最后一个波形点的坐标确定待擦除区域,在绘制当前待绘制的波形片段时,利用待擦除区域的坐标擦除待擦除区域,为下一次绘制预留绘制空间;最后,生成当前绘制的波形图像缓存并进行显示。也就是,在上一次绘制后的波形图像缓存的基础上,在上一次绘制的波形片段之后继续绘制一段新的波形片段,同时擦除本次绘制的波形片段之后的一段区域,以便于在该擦除区域上进行下一次绘制波形片段,通过每次绘制少量波形数据,对屏幕上的波形进行更新,将新绘制的波形片段与已绘制的波形片段构成当前波形,解决了波形绘制过程中卡顿的问题,提高了动态波形的绘制效率。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (14)
1.一种实现波形绘制的方法,其特征在于,所述方法包括:
获取待绘制波形数据;
根据上一次绘制的波形片段中最后一个波形点的坐标以及所述待绘制波形数据,确定当前待绘制的波形片段中各个波形点的坐标;
根据所述当前待绘制的波形片段中最后一个波形点的坐标确定待擦除区域的坐标;
在上一次绘制的波形图像缓存中,利用所述当前待绘制的波形片段中各个波形点的坐标绘制所述当前待绘制的波形片段,利用所述待擦除区域的坐标擦除所述待擦除区域,生成并保留当前绘制的波形图像缓存;所述当前绘制的波形图像缓存保留在后端图形缓冲区;
将所述当前绘制的波形图像缓存复制到前端显示缓冲区进行显示;
所述根据上一次绘制的波形片段中最后一个波形点的坐标以及所述待绘制波形数据,确定当前待绘制的波形片段中各个波形点的坐标,包括:
当获取的待绘制波形数据包括上一次绘制时最后一个波形点对应的波形数据时,将上一次绘制的波形片段中最后一个波形点的横坐标确定为当前待绘制的波形片段中起始波形点的横坐标;根据所述当前待绘制的波形片段中起始波形点的横坐标以及波形点间隔计算所述当前待绘制的波形片段中各个波形点的横坐标;将上一次绘制的波形片段中最后一个波形点的纵坐标确定为当前待绘制的波形片段中起始波形点的纵坐标;根据所述待绘制波形数据计算所述当前待绘制的波形片段中各个波形点的纵坐标;
当获取的待绘制波形数据不包括上一次绘制时最后一个波形点对应的波形数据时,计算上一次绘制的波形片段中最后一个波形点的横坐标与波形点间隔之和作为当前待绘制的波形片段中起始波形点的横坐标;根据所述当前待绘制的波形片段中起始波形点的横坐标以及波形点间隔计算所述当前待绘制的波形片段中各个波形点的横坐标;根据所述待绘制波形数据计算所述当前待绘制的波形片段中各个波形点的纵坐标;
所述根据所述待绘制波形数据计算所述当前待绘制的波形片段中各个波形点的纵坐标,包括:计算第一目标波形点对应的波形数据与幅值转换参数的乘积作为所述第一目标波形点的纵坐标差值;计算波形基线纵坐标与所述第一目标波形点的纵坐标差值之和作为所述第一目标波形点的纵坐标,所述第一目标波形点分别为所述当前待绘制的波形片段中的各个波形点;其中,所述幅值转换参数设置为波形高度除以波形振幅所得的商值;所述波形高度为所述波形片段中波峰波谷纵坐标的差值,所述波形振幅与所述波形数据的取值范围相关。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取新产生的波形数据,将所述新产生的波形数据从数据队列的一端写入所述数据队列;
所述获取待绘制波形数据,包括:
从所述数据队列的另一端读取至少一组波形数据作为待绘制波形数据。
3.根据权利要求2所述的方法,其特征在于,所述获取新产生的波形数据,将所述新产生的波形数据从数据队列的一端写入所述数据队列,包括:
获取N组新产生的波形数据,从所述N组新产生的波形数据中丢弃其中的M组波形数据,其中,N、M均为正整数,N>M;
将其他(N-M)组波形数据从数据队列的一端写入所述数据队列。
4.根据权利要求1所述的方法,其特征在于,所述根据所述当前待绘制的波形片段中起始波形点的横坐标以及波形点间隔计算所述当前待绘制的波形片段中各个波形点的横坐标,包括:
计算第一目标波形点的序号与波形点间隔的乘积作为所述第一目标波形点的横坐标差值;
计算所述当前待绘制的波形片段中起始波形点的横坐标与所述第一目标波形点的横坐标差值之和作为所述第一目标波形点的横坐标,所述第一目标波形点分别为所述当前待绘制的波形片段中的各个波形点。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述当前待绘制的波形片段中波形点的横坐标大于屏幕横坐标最大值对应的波形点确定为第二目标波形点;
将所述第二目标波形点的横坐标减去所述屏幕横坐标最大值作为所述第二目标波形点的横坐标。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述待擦除区域的横坐标大于屏幕横坐标最大值对应的区域确定为目标待擦除区域;
将所述目标待擦除区域的横坐标减去所述屏幕横坐标最大值作为所述目标待擦除区域的横坐标。
7.一种实现波形绘制的装置,其特征在于,所述装置包括:
获取单元,用于获取待绘制波形数据;
第一确定单元,用于根据上一次绘制的波形片段中最后一个波形点的坐标以及所述待绘制波形数据,确定当前待绘制的波形片段中各个波形点的坐标;
第二确定单元,用于根据所述当前待绘制的波形片段中最后一个波形点的坐标确定待擦除区域的坐标;
生成单元,用于在上一次绘制的波形图像缓存中,利用所述当前待绘制的波形片段中各个波形点的坐标绘制所述当前待绘制的波形片段,利用所述待擦除区域的坐标擦除所述待擦除区域,生成并保留当前绘制的波形图像缓存;所述当前绘制的波形图像缓存保留在后端图形缓冲区;
显示单元,用于将所述当前绘制的波形图像缓存复制到前端显示缓冲区进行显示;
当获取的待绘制波形数据包括上一次绘制时最后一个波形点对应的波形数据时,所述第一确定单元,包括:第一确定子单元,用于将上一次绘制的波形片段中最后一个波形点的横坐标确定为当前待绘制的波形片段中起始波形点的横坐标;第一计算子单元,用于根据所述当前待绘制的波形片段中起始波形点的横坐标以及波形点间隔计算所述当前待绘制的波形片段中各个波形点的横坐标;第二确定子单元,用于将上一次绘制的波形片段中最后一个波形点的纵坐标确定为当前待绘制的波形片段中起始波形点的纵坐标;第二计算子单元,用于根据所述待绘制波形数据计算所述当前待绘制的波形片段中各个波形点的纵坐标;
当获取的待绘制波形数据不包括上一次绘制时最后一个波形点对应的波形数据时,所述第一确定单元,包括:第三计算子单元,用于计算上一次绘制的波形片段中最后一个波形点的横坐标与波形点间隔之和作为当前待绘制的波形片段中起始波形点的横坐标;第四计算子单元,用于根据所述当前待绘制的波形片段中起始波形点的横坐标以及波形点间隔计算所述当前待绘制的波形片段中各个波形点的横坐标;第五计算子单元,用于根据所述待绘制波形数据计算所述当前待绘制的波形片段中各个波形点的纵坐标;
所述第二计算子单元,或,所述第五计算子单元,具体用于计算第一目标波形点对应的波形数据与幅值转换参数的乘积作为所述第一目标波形点的纵坐标差值;计算波形基线纵坐标与所述第一目标波形点的纵坐标差值之和作为所述第一目标波形点的纵坐标,所述第一目标波形点分别为所述当前待绘制的波形片段中的各个波形点;其中,所述幅值转换参数设置为波形高度除以波形振幅所得的商值;所述波形高度为所述波形片段中波峰波谷纵坐标的差值,所述波形振幅与所述波形数据的取值范围相关。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
写入单元,用于获取新产生的波形数据,将所述新产生的波形数据从数据队列的一端写入所述数据队列;
第一获取单元,具体用于从所述数据队列的另一端读取至少一组波形数据作为待绘制波形数据。
9.根据权利要求8所述的装置,其特征在于,所述写入单元,包括:
获取子单元,用于获取N组新产生的波形数据,从所述N组新产生的波形数据中丢弃其中的M组波形数据,其中,N、M均为正整数,N>M;
写入子单元,用于将其他(N-M)组波形数据从数据队列的一端写入所述数据队列。
10.根据权利要求7所述的装置,其特征在于,所述第一计算子单元,具体用于计算第一目标波形点的序号与波形点间隔的乘积作为所述第一目标波形点的横坐标差值;
计算所述当前待绘制的波形片段中起始波形点的横坐标与所述第一目标波形点的横坐标差值之和作为所述第一目标波形点的横坐标,所述第一目标波形点分别为所述当前待绘制的波形片段中的各个波形点;或,
所述第四计算子单元,具体用于计算第一目标波形点的序号与波形点间隔的乘积作为所述第一目标波形点的横坐标差值;
计算所述当前待绘制的波形片段中起始波形点的横坐标与所述第一目标波形点的横坐标差值之和作为所述第一目标波形点的横坐标,所述第一目标波形点分别为所述当前待绘制的波形片段中的各个波形点。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第三确定单元,用于将所述当前待绘制的波形片段中波形点的横坐标大于屏幕横坐标最大值对应的波形点确定为第二目标波形点;
第一计算单元,用于将所述第二目标波形点的横坐标减去所述屏幕横坐标最大值作为所述第二目标波形点的横坐标。
12.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第四确定单元,用于将所述待擦除区域的横坐标大于屏幕横坐标最大值对应的区域确定为目标待擦除区域;
第二计算单元,用于将所述目标待擦除区域的横坐标减去所述屏幕横坐标最大值作为所述目标待擦除区域的横坐标。
13.一种计算机可读存储介质,其特征在于,所述机算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行权利要求1-6任一项所述的实现波形绘制的方法。
14.一种计算机程序产品,其特征在于,所述计算机程序产品在终端设备上运行时,使得所述终端设备执行权利要求1-6任一项所述的实现波形绘制的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811419309.9A CN109671127B (zh) | 2018-11-26 | 2018-11-26 | 一种实现波形绘制的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811419309.9A CN109671127B (zh) | 2018-11-26 | 2018-11-26 | 一种实现波形绘制的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109671127A CN109671127A (zh) | 2019-04-23 |
CN109671127B true CN109671127B (zh) | 2023-10-27 |
Family
ID=66143131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811419309.9A Active CN109671127B (zh) | 2018-11-26 | 2018-11-26 | 一种实现波形绘制的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109671127B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113223670B (zh) * | 2020-01-20 | 2024-01-09 | 深圳市理邦精密仪器股份有限公司 | 波形绘制方法、装置及医疗设备 |
CN111381925B (zh) * | 2020-03-17 | 2024-03-26 | 广州致远电子股份有限公司 | 基于脏矩形机制的gui片段式渲染方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105054925A (zh) * | 2015-08-26 | 2015-11-18 | 深圳邦健生物医疗设备股份有限公司 | 特征点的获取及波形绘制 |
CN105726131A (zh) * | 2016-01-26 | 2016-07-06 | 深圳市科曼医疗设备有限公司 | 多床监护界面波形显示方法和系统 |
CN106023279A (zh) * | 2016-05-09 | 2016-10-12 | 广州视睿电子科技有限公司 | 曲线绘制方法和系统 |
CN106821373A (zh) * | 2016-12-30 | 2017-06-13 | 武汉明德生物科技股份有限公司 | 一种局部更新绘制心电图的方法、系统及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7079143B2 (en) * | 2002-10-25 | 2006-07-18 | Spx Corporation | Waveform drawing system and method |
-
2018
- 2018-11-26 CN CN201811419309.9A patent/CN109671127B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105054925A (zh) * | 2015-08-26 | 2015-11-18 | 深圳邦健生物医疗设备股份有限公司 | 特征点的获取及波形绘制 |
CN105726131A (zh) * | 2016-01-26 | 2016-07-06 | 深圳市科曼医疗设备有限公司 | 多床监护界面波形显示方法和系统 |
CN106023279A (zh) * | 2016-05-09 | 2016-10-12 | 广州视睿电子科技有限公司 | 曲线绘制方法和系统 |
CN106821373A (zh) * | 2016-12-30 | 2017-06-13 | 武汉明德生物科技股份有限公司 | 一种局部更新绘制心电图的方法、系统及装置 |
Non-Patent Citations (2)
Title |
---|
刘畅."基于Android的心电信号打印方案的设计与实现".《中国优秀硕士学位论文全文数据库(工程科技Ⅱ辑)》.2018, * |
白英彩 等.《英汉计算机技术大辞典》.上海交通大学出版社,1997,第560页. * |
Also Published As
Publication number | Publication date |
---|---|
CN109671127A (zh) | 2019-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6651082B1 (en) | Method for dynamically changing load balance and computer | |
KR100887012B1 (ko) | 그래픽 처리 서브시스템 및 픽셀 단편에 대해 적어도하나의 값을 결정하기 위한 방법 | |
US9881391B2 (en) | Procedurally defined texture maps | |
US7898551B2 (en) | Systems and methods for performing a bank swizzle operation to reduce bank collisions | |
US8130223B1 (en) | System and method for structuring an A-buffer to support multi-sample anti-aliasing | |
JP2004326678A (ja) | 描画処理装置、及び、描画処理方法 | |
JP2008533628A (ja) | タイル化されたプリフェッチ及びキャッシングされたデプスバッファ | |
US20100188412A1 (en) | Content based cache for graphics resource management | |
JPH0785269B2 (ja) | 画像表示方法および装置 | |
CN109671127B (zh) | 一种实现波形绘制的方法及装置 | |
JP2016085729A (ja) | キャッシュメモリ・システム及びその動作方法 | |
KR102657587B1 (ko) | 커브 렌더링을 수행하는 방법 및 장치. | |
WO2024187347A1 (zh) | 可实时排序多个图元的图像处理方法和系统及电子设备 | |
US8553041B1 (en) | System and method for structuring an A-buffer to support multi-sample anti-aliasing | |
TW459203B (en) | System and method for clearing buffer in 3D rendering | |
JPH09179999A (ja) | 画像生成方法およびその装置 | |
US20190235915A1 (en) | Techniques for ordering atomic operations | |
EP2587454B1 (en) | Drawing device and drawing method | |
US20130117512A1 (en) | Program converting apparatus, program converting method, and medium | |
US8139073B1 (en) | Early compression tag lookup for memory accesses | |
CN115345966A (zh) | 帧动画处理方法、装置、存储介质和设备 | |
CN106327419B (zh) | Gpu显示列表中显存块的分配方法及装置 | |
US7372466B2 (en) | Image processing apparatus and method of same | |
US9245370B2 (en) | Image drawing apparatus, computer-readable medium storing program, and method of the same | |
US7996622B1 (en) | Detecting unused cache lines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |