本申请涉及数据处理领域,特别涉及一种数据打印方法及设备。
背景技术:
产品在出厂前需要大量的调试工作。在调试工作过程中,为了便于进行功能调试,需要对功能运作过程中的各变量进行实时观测,使用者会将上述的各变量数据以一定的方式打印出来。
现有的数据打印方式包括等待打印和中断打印。等待打印可以直观的打印出字符串,但是其会破坏系统时序且打印的数据受限,需要针对不同的打印数据进行设置。而对于中断打印,其打印数据为十六进制,并且打印的内容格式无法依据使用者的使用需求进行调整,使用者若需要观测数据则需要通过专业工具或凭经验进行查看,需要耗费大量的时间精力。
可知,上述常见的打印方式均存在使用不便的问题,数据打印功能的使用效率较低。
技术实现要素:
本申请提供一种数据打印方法及设备,可以提高数据打印的使用便利性。
本申请实施例提供了一种数据打印方法,包括:
通过中断获取打印数据;
根据所述打印数据的数据类型对所述打印数据进行分段,获得若干段数据子段;
将所述若干数据子段分别填充入不同的缓存区内,一所述数据子段对应填充入一所述缓存区中;
分别对所述数据子段调用转译函数进行转译后执行打印操作。
可选的,所述数据类型包括充电状态、放电状态或异常状态的至少一种。
可选的,所述根据所述打印数据的数据类型对所述打印数据进行分段,包括:
确定缓存区的最大容量值;
根据所述缓存区的最大容量值及所述打印数据的数据类型对所述打印数据进行分段。
可选的,所述根据所述缓存区的最大容量值及所述打印数据的数据类型对所述打印数据进行分段,其特征在于,
根据所述打印数据的数据类型对所述打印数据进行第一次分段,获得若干段相同数据类型的数据子段;
判断数据子段的长度是否大于所述缓存区的最大容量值;
若是,则对所述大于所述缓存区的最大容量值的数据子段进行第二次分段,以使分段后的所述数据子段小于或等于所述缓存区的最大容量值。
可选的,所述分别对所述数据子段调用转译函数进行转译后执行打印操作,包括:
调用转译函数载入一段所述数据子段并进行转译;
将转译后的数据子段逐帧发送打印;
当发送完成后,再载入另一段所述数据子段进行转译并发送,直至所述数据子段发送打印完毕。
可选的,所述分别对所述数据子段调用转译函数进行转译后执行打印操作,包括:
将所述数据子段转译成10进制数据。
本申请还提供一种数据打印设备,所述数据打印设备包括处理器以及存储器,所述处理器与存储器之间电性连接;
所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,以执行以下步骤:
通过中断获取打印数据;
根据所述打印数据的数据类型对所述打印数据进行分段,获得若干段数据子段;
将所述若干数据子段分别填充入不同的缓存区内,一所述数据子段对应填充入一所述缓存区中;
分别对所述数据子段调用转译函数进行转译后执行打印操作。
可选的,所述数据类型包括充电状态、放电状态或异常状态的至少一种。
可选的,所述处理器,还用于执行:
确定缓存区的最大容量值;
根据所述缓存区的最大容量值及所述打印数据的数据类型对所述打印数据进行分段。
可选的,所述处理器,还用于执行:
调用转译函数载入一段所述数据子段并进行转译;
将转译后的数据子段逐帧发送;
当发送完成后,再载入另一段所述数据子段进行转译并发送,直至所述数据子段发送完毕。
由上可知,本申请中的数据打印方法及设备,通过获取打印数据,将需要打印的打印数据根据数据类型进行分段并填充入不同的缓存区内,以降低缓存容量的需求并提高打印速度,再将分段后的数据进行转译后进行打印,可以使得使用者获得直观、已分类后的打印数据,便于使用者观测调试过程中打印出的变量数据,进而提高数据打印的使用便利性。
附图说明
图1为本申请实施例提供的数据打印方法的实现流程图。
图2为本申请实施例提供的打印数据分段的实现流程图。
图3为本申请实施例提供的发送数据子段的实现流程图。
图4为本申请实施例提供的数据打印方法的应用场景图。
图5为本申请实施例提供的数据打印设备的结构示意图。
具体实施方式
下面结合附图对本申请的较佳实施例进行详细阐述,以使本申请的优点和特征更易被本领域技术人员理解,从而对本申请的保护范围作出更为清楚的界定。
请参阅图1,图中示出了本申请实施例提供的数据打印方法的实现流程。
该数据打印方法可以应用于测试过程使用的测试设备,以用于打印大量的测试变量数据,当然,还可以用于其他可执行数据打印操作的设备,具体设备可以是个人电脑、服务器等测试终端,在此不再赘述。
如图1所示,该数据打印方法包括以下步骤:
101、通过中断获取打印数据。
该中断可以是通过生成某一数据发送到寄存器中,通过寄存器中的程序触发中断。该中断的方式可以具有多种,具体方式可以根据实际情况而定。
该打印数据可以存储在存储器中,该存储器中存储有若干实时数据,该打印数据可以通过测试端进行获取。
102、根据打印数据的数据类型对打印数据进行分段,获得若干段数据子段。
其中,数据类型可以是基于用户需求进行制定。在一实施例中,若用户当前对电池进行性能/可靠性测试,该数据类型可以根据测试需要分为充电状态、放电状态或异常状态。
可以理解的,除了上述实施例中的数据类型的分类,当用户测试的项目不同,其数据类型可以根据用户所测试的项目进行分类,具体的分类方式可以根据实际情况而定。
103、将若干数据子段分别填充入不同的缓存区内,一数据子段对应填充入一缓存区中。
其中,该缓存区的容量值可以根据不同硬件条件进行设定。
例如,若需要打印100个数据,现有方式通过等待打印时需要开启的缓存区为buffer[100],而使用本发明时若均分10份,则需要开的缓存区为buffer[10]即可,容量一定的前提下,分段数越多缓存区越小。每一缓存区的具体容量值可以根据实际需要进行设定。
在一实施例中,为了便于存储数据,在每次数据存入之前,可以对上一次的缓存进行清零,以便于为下一次的数据存储进行准备。
104、分别对数据子段调用转译函数进行转译后执行打印操作。
其中,该转译函数用于对数据子段进行转译,以将数据的原始格式转译成用户所需的格式。
数据打印时,因原有数据的格式为16进制格式,打印出来后使用者需要通过经验去观察判断,不便于使用。在一实施例中,该转译函数用于将数据子段转译成10进制数据。通过将数据子段转译成10进制数据,再将其进行打印,则可以便于使用者直接观测,无需再进行数据的进制转换,从而提高数据打印的使用便利性。
当然,该转译函数可以采用现有的转译函数,并且该转译函数可以根据实际需要进行选用,例如若该打印数据为2进制数据,则可以采用2进制转10进制的转译函数进行转译,具体函数类型不限。
在一实施例中,该打印操作会根据缓存区的序列进行依次打印,当判断当前数据子段已转译并发送打印后,再次从缓存区中载入新的数据子段进行转译、发送,并在每次发送后判断当前是否已经将所有数据子段发送完成,若是则停止打印,若否则继续载入新的数据子段。
由上可知,本申请中的数据打印方法,通过获取打印数据,将需要打印的打印数据根据数据类型进行分段并填充入不同的缓存区内,以降低缓存容量的需求并提高打印速度,再将分段后的数据进行转译后进行打印,可以使得使用者获得直观、已分类后的打印数据,便于使用者观测调试过程中打印出的变量数据,进而提高数据打印的使用便利性。
参阅图2,图中示出了本申请实施例提供的打印数据分段的实现流程。
如图2所示,该根据打印数据的数据类型对打印数据进行分段,包括:
201、确定缓存区的最大容量值。
缓存区的最大容量值可以根据系统设置中每一缓存区的容量参数进行确定。
在一实施例中,该缓存区的最大容量值可以预先设置好,也可以根据该打印数据的数据量来确定。
例如,若打印数据的总数据量大于预设值,则调整预设的缓存区的最大容量值到更大的值,或者若打印数据的平均数据子段较长,也可以根据数据子段的长度来调整。
202、根据打印数据的数据类型对打印数据进行第一次分段,获得若干段相同数据类型的数据子段。
其中,该数据类型可以是基于用户需求进行制定。在一实施例中,若用户当前对电池进行性能/可靠性测试,该数据类型可以根据测试需要分为充电状态、放电状态或异常状态。
可以理解的,除了上述实施例中的数据类型的分类,当用户测试的项目不同,其数据类型可以根据用户所测试的项目进行分类,具体的分类方式可以根据实际情况而定。
203、判断数据子段的长度是否大于缓存区的最大容量值。
例如,当某一分段后获得的数据子段长度为2mb,若当前缓存区的最大容量值为1mb,则可以确定该段数据子段大于该缓存区的最大容量值。
204、若是,则对大于缓存区的最大容量值的数据子段进行第二次分段,以使分段后的数据子段小于或等于缓存区的最大容量值。
其中,第二次分段可以根据缓存区的最大容量值来进行。例如,若当前缓存区的最大容量值为1mb,而该数据子段长度为2mb,则可以将该数据子段拆分成两段1mb的数据子段,以使拆分后的两段数据子段长度均小于或等于1mb。
由上可知,通过对数据子段的长度与缓存区的最大容量值之间进行自行判断,可以使数据子段能够顺利填充入缓存区中,确保数据打印过程的顺利进行。并且,上述方式使数据子段可以适应不同容量的缓存区,适用范围广。
请参阅图3,图中示出了本申请实施例提供的转译并发送数据子段的实现流程。
如图3所示,分别对数据子段调用转译函数进行转译后执行打印操作,包括:
301、调用转译函数载入一段数据子段并进行转译。
其中,该转译函数用于对数据子段进行转译,以将数据的原始格式转译成用户所需的格式。
数据打印时,因原有数据的格式为16进制格式,打印出来后使用者需要通过经验去观察判断,不便于使用。在一实施例中,该转译函数用于将数据子段转译成10进制数据。通过将数据子段转译成10进制数据,再将其进行打印,则可以便于使用者直接观测,无需再进行数据的进制转换,从而提高数据打印的使用便利性。
当然,该转译函数可以采用现有的转译函数,并且该转译函数可以根据实际需要进行选用,例如若该打印数据为2进制数据,则可以采用2进制转10进制的转译函数进行转译,具体函数类型不限。
302、将转译后的数据子段逐帧发送打印。
其中,当转译完成后,可以通过通信协议将数据子段发送到预设的地址进行打印。
303、当发送完成后,再载入另一段数据子段进行转译并发送,直至数据子段发送打印完毕。
在一实施例中,可以当每发送完一帧数据后,检测当前是否已将所有的数据子段发送完毕,若否则等待下一次的数据发送,若是则可以通过更改与打印发送动作相应的标志位,来确保系统获知数据子段已发送打印完毕。
在另一实施例中,当发送完毕后,可以通过设置定时器或者监控数据打印相关的指令来确保下一次数据打印的正常执行。
由上可知,将打印数据分段获得数据子段后,通过对其转译并逐帧进行发送打印,可以降低缓存容量的需求并提高打印速度,并且转译后的打印数据可以便于使用者观测,进一步提高数据打印的使用便利性。
请参阅图4,图中示出了本申请实施例提供的数据打印方法的应用场景。
如图4所示,该数据打印方法可以应用于用于数据打印的设备中,可以包括以下步骤:
401、发送完一帧数据,全部数据是否还未发送完毕。
在本实施例中,先通过中断进入数据发送程序。
若是发送完一帧数据后,可以检测全部数据是否发送完毕,从而判断是否需要延时等待下一次数据的发送。
若全部数据未发送完毕,则直接进行下一帧数据的发送,无需延时。此时说明当前缓存区仍然有未发送的内容。
若全部数据发送完毕,则可以通过延时等待下一次的数据发送,从而实现间隔一定时间输出调试过程中的实时变量数据的功能。
这里可以采用定时器设定一个定时参数,如本实施例中的debugtimer>=100。当全部数据发送完毕,直接赋值debugtimer=100,以跳过延时。当然,还可以根据实际调试需求设定定时参数,以确保数据能够在正确的时间点进行采集。
402、判断是否进入发送赋值。
这里可以根据实际调试需求设定相应的定时参数,当达到该条件则进入数据发送阶段。
例如,这里条件设置为debugtimer>=100,当定时器达到100时,则触发发送动作。或者,当确定全部数据还未发送完毕,则可以直接将定时器置为100,从而直接进入到数据分类、发送阶段。
403、每一次发送数据前都将buffer清零。
为了便于存储数据,在每次数据存入之前,可以对上一次的缓存进行清零,以便于为下一次的数据存储进行准备。
404、利用switchcase语句将需要打印的数据分段填充buffer。
在本实施例中,可以通过switchcase语句判断参数的关键字符串,以对数据进行分类。
例如,若需要将电压参数进行归类,假设将电压参数的关键字符串设为da10,则可以将携带有该字符串的打印数据归为同一数据子段,以便于打印在同一类型的数据中。
405、数据中断发送完毕后在中断里将singledatasendcompflag标志置1。
其中,singledatasendcompflag标志为自定义的标志,若系统需要了解当前的数据打印状态,可以查看该标志位。
在本实施例中,当数据中断发送完毕后,可以在中断里将singledatasendcompflag标志置1,从而告知系统当前没有处于数据打印事件。
进一步的,若数据未全部打印完毕,则回到步骤401,重复图4的流程直到打印完毕。
请参阅图5,图中示出了本申请实施例提供的数据打印设备的结构。
如图5所示吗,该数据打印设备5包括处理器51以及存储器52,该处理器51与存储器52之间电性连接;
该存储器52中存储有计算机程序,该处理器51通过调用存储器52中存储的计算机程序,以执行以下步骤:
通过中断获取打印数据;根据打印数据的数据类型对打印数据进行分段,获得若干段数据子段;将若干数据子段分别填充入不同的缓存区内,一数据子段对应填充入一缓存区中;分别对数据子段调用转译函数进行转译后执行打印操作。
在一实施例中,数据类型包括充电状态、放电状态或异常状态的至少一种。
在一实施例中,所述处理器51,还用于执行:
确定缓存区的最大容量值;根据缓存区的最大容量值及打印数据的数据类型对打印数据进行分段。
在一实施例中,所述处理器51,还用于执行:
调用转译函数载入一段所述数据子段并进行转译;将转译后的数据子段逐帧发送;当发送完成后,再载入另一段所述数据子段进行转译并发送,直至所述数据子段发送完毕。
本申请中的数据打印设备,通过获取打印数据,将需要打印的打印数据根据数据类型进行分段并填充入不同的缓存区内,以降低缓存容量的需求并提高打印速度,再将分段后的数据进行转译后进行打印,可以使得使用者获得直观、已分类后的打印数据,便于使用者观测调试过程中打印出的变量数据,进而提高数据打印的使用便利性。
本申请实施例中,所述数据打印设备与上文实施例中的数据打印方法属于同一构思,在数据打印设备上可以运行数据打印方法实施例中提供的任一方法步骤,其具体实现过程详见数据打印方法实施例,并可以采用任意结合形成本申请的可选实施例,此处不再赘述。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。
上面结合附图对本申请的实施方式作了详细说明,但是本申请并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本申请宗旨的前提下作出各种变化。