1.本发明涉及设备控制信息和输出信息的传输、存储和应用技术领域,特别是一种基于二进制数据传输的图形生成方法及系统。
背景技术:2.量子测控设备、单自旋谱仪、电子顺磁共振波谱仪等各类分析检测设备在实际应用中,需要将检测获得的测量数据及其对应的条件或时间等信息实时传输至客户端,通过客户端生成动态图形直观地展示实时的检测信号,以便于用户根据需要快速地获得检测过程信息并分析获得参考信息。
3.基于上述需要,通常的实现方案是:下位机采集并生成的大量数据,经使用c++实现的服务端处理,形成json字符串格式的数据,然后传输至客户端;客户端将获得的数据封装成json array的格式,然后调用echarts的绘图api指令更新图表数据,最终实现动态绘图。上述常规技术方案存在的不足在于:在上述应用场景中,下位机和服务端上传到客户端的数据频率高达50hz,数据量每秒可达24 mb,客户端处理数据和绘图的性能较差,产生数据堆积、绘图卡顿延迟等问题;上述应用场景中的客户端一般基于javascript技术实现,而javascript本身是单线程,高频的数据计算和绘图处理导致鼠标和键盘等事件作用在客户端上时无法响应,从而导致用户体验较差。
技术实现要素:4.本发明提供了一种基于二进制数据传输的图形生成方法及系统,能够在一定程度上至少部分地解决背景技术所提出的技术问题。
5.本发明提供了一种基于二进制数据传输的图形生成方法,包括:基于编译型语言实现的服务端将绘图数据传输至基于解释型语言实现的客户端,所述客户端依据所述绘图数据生成特定数组,并读取所述特定数组以生成图形;所述特定数组包括由二进制数据构成的区块一,以及对所述区块一中的二进制数据进行解释的区块二。
6.作为上述技术方案的进一步改进、优选或细化,还包括:服务端从原始数据中稀疏采样获得所述绘图数据,且所述稀疏采样方法为:按固定步进间隔抽取数据,或者按规则抽取固定步进内的数据,或者按照降维算法抽取固定点数据。
7.作为上述技术方案的进一步改进、优选或细化,当生成图形的显示范围被调整时,所述服务端相应调整所述稀疏采样的采样率。
8.作为上述技术方案的进一步改进、优选或细化,生成图形中包括用于指示显示范围的延伸坐标轴,所述区块二中包含对应所述延伸坐标轴上坐标信息的特定字符串,所述区块一中包含对应于所述特定字符串的特定字节流;
所述稀疏采样方法为按固定步进间隔抽取数据;当生成图形的显示范围被调整时,确定缩放幅度,依据所述缩放幅度和所述特定字节流确定调整后的所述稀疏采样的固定步进。
9.作为上述技术方案的进一步改进、优选或细化,确定所述缩放幅度的方法为:获取生成图形的显示范围调整前,所述延伸坐标轴两端对应的所述特定字符串的坐标差值一,获取生成图形的显示范围调整后,所述延伸坐标轴两端对应的所述特定字符串的坐标差值二,计算所述坐标差值一和所述坐标差值二之间的比值,即为所述缩放幅度。
10.作为上述技术方案的进一步改进、优选或细化,依据所述缩放幅度和所述特定字节流确定调整后的所述稀疏采样的固定步进的方法为:获取生成图形的显示范围调整前,相邻所述特定字节流的字节差值一,按照所述缩放幅度对所述字节差值一进行缩放,计算获得字节差值二,所述字节差值二即为生成图形的显示范围调整后所述稀疏采样的固定步进。
11.作为上述技术方案的进一步改进、优选或细化,所述原始数据包括量化值数据和对应于所述量化值数据的对应信息数据;且所述稀疏采样方法为:按固定步进间隔抽取数据,或者按固定步进抽取步进内基于所述量化值数据判断的最大值和最小值数据,或者按照降维算法抽取固定点数据。
12.作为上述技术方案的进一步改进、优选或细化,所述对应信息数据包括对应时间数据,且所述降维算法为lttb时间序列降维算法。
13.作为上述技术方案的进一步改进、优选或细化,所述服务端将所述绘图数据存储于内存中,所述客户端基于通信协议按照固定字节读取所述内存中的数据,以生成所述特定数组。
14.本发明还提供了一种基于二进制数据传输的图形生成系统,包括:基于编译型语言实现且用于提供绘图数据的服务端和基于解释型语言实现的客户端,所述客户端包括依据所述绘图数据生成特定数组的数组生成模块,以及读取所述特定数组以生成图形的图形生成模块;所述特定数组包括由二进制数据构成的区块一,以及对所述区块一中的二进制数据进行解释的区块二。
15.作为上述技术方案的进一步改进、优选或细化,还包括用于获得信号并生成信号数据的下位机,所述服务端包括用于将所述信号数据解析为原始数据的信号解析模块。
16.作为上述技术方案的进一步改进、优选或细化,所述服务端还包括用于从所述原始数据中稀疏采样获得所述绘图数据的数据采样模块。
17.作为上述技术方案的进一步改进、优选或细化,所述客户端还包括采样控制模块,所述采样控制模块用于依据生成图形显示范围的调整幅度,确定调整后所述稀疏采样的采样率。
18.作为上述技术方案的进一步改进、优选或细化,生成图形中包括用于指示显示范围的延伸坐标轴,所述区块二中包含对应所述延伸坐标轴上坐标信息的特定字符串,所述区块一中包含对应于所述特定字符串的特定字节流;所述稀疏采样方法为按固定步进间隔抽取数据;
所述采样控制模块用于在生成图形的显示范围被调整时,确定缩放幅度,且依据所述缩放幅度和所述特定字节流确定调整后的所述稀疏采样的固定步进。
19.本发明还提供了一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如上文所述的一种基于二进制数据传输的图形生成方法及其后续的改进。
20.本发明还提供了一种非临时性计算机可读取存储介质,其上存储有计算机程序,该程序被处理器执行,以用于实现如上文所述的一种基于二进制数据传输的图形生成方法及其后续的改进。
21.与现有技术相比较,本发明的有益效果是:服务端与客户端、以及客户端与显卡之间的数据通信均为二进制,基于传统文本格式的服务端与客户端向显卡传输数据的时候,脚本要进行多次格式转化,处理工作量大且效率低;而本发明所提供的一种基于二进制数据传输的图形生成方法及系统,可以直接操作字节,将数据以二进制形式原封不动地送入显卡,从而大幅地提高了脚本的性能;此外,通过使客户端与操作系统的原生接口进行二进制通信,直接操作内存,也大大增强了图形生成过程中处理二进制数据的能力;有利于提高客户端处理数据和绘图的性能,解决绘图卡顿延迟的问题,从而提高用户体验。
22.在上述方案的基础上,通过进一步改进,能够实现服务端对原始数据的稀疏采样,并且能够实现用户在客户端放大或者是缩小生成的图形时,服务端可以相应地调整采样率,以动态方式根据需要调整服务端向客户端传输的数据量,从而避免了在不必要的时候过多占用内存和处理器资源造成浪费,且避免数据堆积的情况发生。
附图说明
23.以下为基于本发明的发明内容和/或本发明具体实施方式所提供的附图,用以帮助本技术领域的普通技术人员更好地理解本发明的发明内容和/或本发明的具体实施方式;本发明的附图旨在用于解释本发明,而不能理解为对本发明的限制。
24.图1是本发明所述的一种基于二进制数据传输的图形生成方法的流程示意图;图2是本发明所述的一种基于二进制数据传输的图形生成系统的结构示意图。
具体实施方式
25.为了便于本技术领域的普通技术人员清楚地理解本发明的技术特征及其解决的技术问题和实现的技术效果,下面通过结合附图的具体实施例来说明本发明的技术方案和/或其实施过程;本发明的具体实施方式旨在用于解释本发明,而不能理解为对本发明的限制。
26.参考图1所示的内容,本实施例提供了一种基于二进制数据传输的图形生成方法,包括:s1:下位机获得信号生成信号数据。
27.所述下位机具体地是指量子测控设备、单自旋谱仪、电子顺磁共振波谱仪等各类分析检测设备,也可以是能够提供上述分析检测设备采集的信号的中间设备,还可以是上述分析检测设备或中间设备中能够提供采集的信号的设备组件,甚至可以是直接生成信号
的信号生成设备、及其中间设备或设备组件,例如任意波形发生器、任意序列发生器、以及锁相放大器等。
28.s2:基于编译型语言实现的服务端将所述信号数据解析为原始数据;且所述原始数据包括量化值数据和对应于所述量化值数据的对应信息数据。
29.对于本技术领域的普通技术人员而言不难理解,在通常情况下,所述服务端即后台,其主要是面向硬件的具有面向对象特点的系统实现组成部分。所述服务端“基于编译型语言实现”是指基于c语言、c++、golang、pascal、汇编等编译型语言的编程来实现,“基于编译型语言实现的服务端”也应包括基于java和c#等半编译半解释型语言编程实现所述服务端的情况。
30.所述对应信息数据具体地是指对应时间数据、对应频率数据以及对应磁场数据等与所述量化值数据对应的包含条件参数信息的数据中的一种或多种。
31.s3:所述服务端从所述原始数据中稀疏采样获得绘图数据。
32.所述稀疏采样方法为:按固定步进间隔抽取数据,或者按规则抽取固定步进内的数据,或者按照降维算法抽取固定点数据。
[0033]“按固定步进间隔抽取数据”即每隔一定的步进抽取一组数据,“按规则抽取固定步进内的数据”即按照固定步进划分单元,在每个单元内按照预定的方法规则选取数据。
[0034]
具体到所述原始数据包括量化值数据时,优选所述稀疏采样方法为:按固定步进间隔抽取数据,或者按固定步进抽取步进内基于所述量化值数据判断的最大值和最小值数据,或者按照降维算法抽取固定点数据。
[0035]
更具体一点,当所述对应信息数据包括对应时间数据时,优选地,所述降维算法为lttb时间序列降维算法。
[0036]
s4:所述服务端将所述绘图数据传输至基于解释型语言实现的客户端。
[0037]
对于本技术领域的普通技术人员而言不难理解,在通常情况下,所述客户端即前端,其主要是面向应用的具有基于对象特点的系统实现组成部分。所述客户端“基于解释型语言实现”是指基于python、javascript、php、shell、matlab等解释型语言的编程来实现,“基于解释型语言实现的客户端”也应包括将java 和 c# 等半编译半解释型语言作为解释型语言来应用于实现所述客户端的情况。
[0038]
s5:所述客户端依据所述绘图数据生成特定数组,所述特定数组包括由二进制数据构成的区块一,以及对所述区块一中的二进制数据进行解释的区块二。
[0039]
所述服务端将所述绘图数据存储于内存中,所述客户端基于通信协议按照固定字节读取所述内存中的数据,以生成所述特定数组。“对所述区块一中的二进制数据进行解释”是指按照通信协议以及其它既定规则,将二进制数据转化为对应的实际数值或者是其它实际表达的含义。
[0040]
在常规的技术方案中,所述客户端依据所述绘图数据生成的数据格式仅仅包含所述区块二中的内容,在后续的图形生成步骤中,部分图形元素直接采用了所述区块二中的内容,例如谱图中的显示数值、坐标数值等内容,部分图形元素还需要将所述区块二的内容
转化为所述区块一中的二进制数据才能采用,例如谱图中的曲线、零散点等内容。
[0041]
而本实施例直接提供了包含由二进制数据构成的所述区块一,以及对所述区块一中的二进制数据进行解释的所述区块二,从而可以降低后续图形生成的数据处理量,提高后续图形生成的效率,以提高所述客户端的用户体验。
[0042]
s6:所述客户端读取所述特定数组以生成图形。
[0043]
具体地,当所述客户端基于javascript实现时,所述客户端依据所述特定数组,通过调用echarts进行图形生成。具体地,图形绘制是mvc框架的管理机制,通过事件控制数据的变化,然后调用painter来控制canvas元素的生命周期,从而完成视图渲染,生成图形。
[0044]
在大多数情况下,所述客户端是基于javascript实现的,因此本实施例提供了最具有普适性的实施方案,可以直接应用于解决现实性问题;作为本技术领域的普通技术人员,基于本实施例所公开的内容,不难获知可以采用其它编程语言及其对应的功能模块或组件实现上述功能和技术效果。
[0045]
s7:当生成图形的显示范围被调整时,所述服务端相应调整所述稀疏采样的采样率。
[0046]“生成图形的显示范围被调整”具体地是指用户在所述客户端放大或者是缩小生成的图形,以便于局部地或者是整体地观察生成的图形;也可以是所述客户端自动地放大或者是缩小生成的图形,以便于更好地向用户展示生成的图形;对于本技术领域的普通技术人员而言不难理解:当用户在所述客户端缩小图形的时候,所述服务端的采样率应当增大,即单位参数内应当从所述原始数据中抽取更多的数据;当用户在所述客户端放大图形的时候,所述服务端的采样率可以减小,即单位参数内应当从所述原始数据中抽取更少的数据。
[0047]
所述单位参数取决于所述原始数据的具体构成,例如:所述原始数据可以是对应时间的磁场强度、或者对应微波频率的磁场强度、或者对应磁场强度的荧光强度,那么所述单位参数对应的就是单位时间、或者单位频率、或者单位场强。
[0048]
在某些特定的应用场景中,基于所述特定数组可以更高效地实现步骤s7:例如特定场景:生成图形中包括用于指示显示范围的延伸坐标轴,所述区块二中包含对应所述延伸坐标轴上坐标信息的特定字符串,所述区块一中包含对应于所述特定字符串的特定字节流;且所述稀疏采样方法为按固定步进间隔抽取数据;当生成图形的显示范围被调整时,可以先确定缩放幅度,然后再依据所述缩放幅度和所述特定字节流确定调整后的所述稀疏采样的固定步进。
[0049]
所述延伸坐标轴具体地可以是时间轴,根据时间轴显示的坐标范围可以确定生成图形的显示范围,且此时,所述特定字符串即对应时间信息的文本字符,所述特定字节流即表示生成或显示顺序的二进制字节。所述延伸坐标轴具体地也可以是扫场图中的磁场强度轴,还可以是扫频图中的频率轴等。
[0050]
具体地,确定所述缩放幅度的方法可以为:s711:获取生成图形的显示范围调整前,所述延伸坐标轴两端对应的所述特定字符串的坐标差值一;s712:获取生成图形的显示范围调整后,所述延伸坐标轴两端对应的所述特定字符串的坐标差值二;
s713:计算所述坐标差值一和所述坐标差值二之间的比值,即为所述缩放幅度。
[0051]
对于本技术领域的普通技术人员而言不难理解,上文中“所述延伸坐标轴两端”是指所述延伸坐标轴在生成图形实时显示范围中的两端。以用户调整生成图形的显示范围为例:生成图形的实时显示范围即为调整前生成图形的显示范围,所述延伸坐标轴在该范围内的两端的坐标间距即为所述坐标差值一;用户框选的范围即为调整后生成图形的显示范围,所述延伸坐标轴在该范围内的两端的坐标间距即为所述坐标差值二。
[0052]
当然,更复杂一点,也可以先获得所述延伸坐标轴两端对应的所述特定字符串,再依据获得的所述特定字符串找到对应的所述特定字节流,依据找到的所述特定字节流计算得坐标字节差值,依据生成图形的显示范围调整前后的坐标字节差值也可以确定所述缩放幅度。
[0053]
对于本技术领域的普通技术人员而言不难理解,所述原始数据中的所述特定字节流通常是按顺序依次加一编排的,例如:所述原始数据中的可以与所述特定字符串对应的字节流为:0000000000000001,0000000000000010,0000000000000011
……
;按照100的固定步进间隔抽取数据采样后,所述绘图数据以及所述特定数组中的所述特定字节流为:0000000000000001,0000000001100101,0000000011001001
……
。
[0054]
因此,依据所述缩放幅度和所述特定字节流确定调整后的所述稀疏采样的固定步进的方法可以为:s721:获取生成图形的显示范围调整前,相邻所述特定字节流的字节差值一;s722:按照所述缩放幅度对所述字节差值一进行缩放,计算获得字节差值二;s723:所述字节差值二即为生成图形的显示范围调整后所述稀疏采样的固定步进。
[0055]
本实施例提供的一种基于二进制数据传输的图形生成方法,可以被认为是基于硬件或固件的工作方法或过程,可以被认为是用于实现逻辑功能的可被执行的指令内容,可以被认为是在任何临时性的可读取存储介质中供指令执行系统运行的数据,也可以被认为是任何指令执行系统运行的工作过程,还可以被认为是非临时性的可读取存储介质中存储的数据。指令执行系统可以是基于计算机的系统、或其他可以读取指令并执行的系统。
[0056]
本实施例提供的一种基于二进制数据传输的图形生成方法,其各步骤可以用硬件、软件、固件或它们的组合来实现,例如各步骤可以作为独立的软件或者是软件运行的局部存储在存储器中,并由运行合适的指令执行系统的固件来执行实现;也可以由下列公知技术中的一项或多项的组合来部分或全部地实现:逻辑电路、专用集成电路、可编程门阵列(pga)、现场可编程门阵列(fpga)等。
[0057]
参考图2所示的内容,本实施例提供了一种基于二进制数据传输的图形生成系统,包括:用于获得信号并生成信号数据的下位机,基于编译型语言实现且用于提供绘图数据的服务端,以及基于解释型语言实现的客户端。
[0058]
所述服务端包括:
用于将所述信号数据解析为原始数据的信号解析模块,以及用于从所述原始数据中稀疏采样获得所述绘图数据的数据采样模块。
[0059]
所述客户端包括:依据所述绘图数据生成特定数组的数组生成模块,读取所述特定数组以生成图形的图形生成模块,以及采样控制模块,所述采样控制模块用于依据生成图形显示范围的调整幅度,确定调整后所述稀疏采样的采样率;所述特定数组包括由二进制数据构成的区块一,以及对所述区块一中的二进制数据进行解释的区块二。
[0060]
在特定场景中:生成图形中包括用于指示显示范围的延伸坐标轴,所述区块二中包含对应所述延伸坐标轴上坐标信息的特定字符串,所述区块一中包含对应于所述特定字符串的特定字节流;所述稀疏采样方法为按固定步进间隔抽取数据或者按规则抽取固定步进内的数据。
[0061]
则:所述采样控制模块用于在生成图形的显示范围被调整时,确定缩放幅度,且依据所述缩放幅度和所述特定字节流确定调整后的所述稀疏采样的固定步进。
[0062]
本实施例中所提及的模块实际是指功能划分单元,而并非限定为结构和/或连接固定的硬件功能实现单元、软件功能实现单元以及固件功能实现单元;因此上述各模块对于硬件、软件或固件功能实现单元而言,可以是由n1个硬件功能实现单元的部分,和n2个硬件功能实现单元的全部,和n3个软件功能实现单元的部分,和n4个软件功能实现单元的全部,和n5个固件功能实现单元的部分,和n6个固件功能实现单元的全部所构成;上述n1、n2、n3、n4、n5和n6均为自然数,且n1+n2+n3+n4+n5+n6≥1。
[0063]
本实施例中所提及的各模块可以是独立的以软件、硬件和固件中任一或多个组合来实现,也可以是多个组合的以软件、硬件和固件中任一或多个组合来实现,还可以是分割的以软件、硬件和固件中任一或多个组合来实现;各模块不仅仅可以是在可执行环境下,还可以存储在计算机可读取存储介质中,计算机可读取存储介质可以是临时性的计算机可读取存储介质,也可以是非临时性的计算机可读取存储介质;任意两个模块之间,在实现的时候可以是相互平行的结构,也可以是相互交叉的结构,还可以是包含关系的结构。
[0064]
对于本技术领域的普通技术人员而言不难理解,本实施例提供的一种基于二进制数据传输的图形生成系统,实际上是为本实施例提供的一种基于二进制数据传输的图形生成的实现,提供一种具体优化的方法实现产品方案和产品功能分配方案,因此对于一种基于二进制数据传输的图形生成所作的解释说明,也适用于一种基于二进制数据传输的图形生成系统。
[0065]
实现上述实施例提供的一种基于二进制数据传输的图形生成所包含的部分或全部步骤是可以通过电子设备来完成的,基于此,本实施例还提供了一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现上述实施例所述的一种基于二进制数据传输的图形生成方法的部分或全部步骤、以及部分步骤按照本技术领域的普通技术人员很容易想到的方式进行的重新组合。
[0066]
此外,对于本技术领域的普通技术人员而言不难理解,实现上述实施例提供的一
种基于二进制数据传输的图形生成所包含的部分或全部步骤可以存储在非临时性计算机可读取存储介质上,然后通过处理器执行来完成,基于此,本实施例还提供了一种非临时性计算机可读取存储介质,其上存储有计算机程序,该程序被处理器执行,以用于实现上述实施例所述的一种基于二进制数据传输的图形生成方法的部分或全部步骤、以及部分步骤按照本技术领域的普通技术人员很容易想到的方式进行的重新组合。
[0067]
本实施例所述非临时性计算机可读取存储介质,包括但不限于是以下设备中的一种或几种的结合:磁鼓存储器、磁带存储器、磁盘存储器、光盘存储器和半导体存储器;半导体存储器具体地可以是只读存储器(rom),或者是可编程只读存储器(prom),或者是可擦除可编程只读存储器(eprom),或者是一次编程只读存储器(optrom),或者是带电可擦可编程只读存储器(eeprom),或者是闪速存储器(flash memory),或者是氮化物只读存储器(nrom)等。
[0068]
以上对本发明的较佳实施方式进行了具体地说明,当然,本发明还可以采用与上述实施方式不同的形式,熟悉本领域的技术人员在不违背本发明构思的前提下所作的等同的变换或相应的改动,都应该属于本发明的保护范围内。