一种打印机及提高打印速度的方法转让专利

申请号 : CN201810417638.3

文献号 : CN108773194B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陆舟于华章

申请人 : 飞天诚信科技股份有限公司

摘要 :

本发明公开一种打印机及提高打印速度的方法,涉及计算机应用领域。所述方法包括:步骤S1、打印机读取预设长度的待打印数据作为当前一行数据;步骤S2、所述打印机获取当前一行数据中有效数据位的位数,根据所述有效数据位的位数确定打印头加热时间;步骤S3、所述打印机根据所述打印头加热时间,加热打印头,打印当前一行数据并带动打印纸前进第一预设距离,返回步骤S1。采用本发明的技术方案,能够调整打印机打印的速度,缩短打印时间,用户体验良好。

权利要求 :

1.一种提高打印速度的方法,其特征在于,包括:

步骤S1、打印机读取预设长度的待打印数据作为当前一行数据;

步骤S2、所述打印机获取当前一行数据中有效数据位的位数,根据所述有效数据位的位数确定打印头加热时间;

步骤S3、所述打印机根据所述打印头加热时间加热打印头,打印当前一行数据并带动打印纸前进第一预设距离,返回步骤S1。

2.根据权利要求1所述的方法,其特征在于,所述步骤S2具体包括:所述打印机获取当前一行数据中有效数据位的位数,根据所述有效数据位的位数确定所述当前一行数据的组数,根据所述组数确定打印头加热时间。

3.根据权利要求2所述的方法,其特征在于,所述根据有效数据位的位数确定所述当前一行数据的组数,具体为:所述打印机根据预设最大位数的有效数据位和所述有效数据位的位数确定所述当前一行数据的组数。

4.根据权利要求3所述的方法,其特征在于,所述步骤S2-S3具体为:步骤X1、所述打印机获取当前一行数据中有效数据位的位数;

步骤X2、从所述当前一行数据中顺序截取包含所述预设最大位数的有效数据位的数据作为当前一组数据,锁存当前一组数据,确定当前一组数据的打印头加热时间后,加热打印头,打印当前一组数据,更新当前一行数据中已打印数据的长度;

步骤X3、所述打印机获取当前一行数据中已打印数据的长度,根据所述已打印数据的长度判断当前一行数据是否打印完成,是则带动打印纸前进第二预设距离,返回步骤S1;否则返回步骤X2。

5.根据权利要求4所述的方法,其特征在于,所述步骤X1之后、步骤X2之前还包括:所述打印机判断当前一行数据的有效数据位的位数是否大于预设最大位数的有效数据位,是则执行步骤X2;否则将当前一行数据作为当前一组数据,锁存当前一组数据,确定当前一组数据对应的打印头加热时间后,加热打印头,打印当前一组数据,更新当前一行数据中已打印数据的长度。

6.根据权利要求4所述的方法,其特征在于,所述带动打印纸前进第二预设距离之后还包括:增加预设位半个像素点标志位。

7.根据权利要求6所述的方法,其特征在于,所述带动打印纸前进第二预设距离之后还包括:所述打印机获取半个像素点标志位并判断所述半个像素点标志位是否等于第一预设值,是则返回步骤S1;否则执行步骤X2。

8.根据权利要求4所述的方法,其特征在于,所述锁存当前一组数据之前还包括:所述打印机记录当前一组数据的信息,根据当前一组数据的信息将当前一组数据填充预设数据至当前一行数据的长度。

9.根据权利要求8所述的方法,其特征在于,所述记录当前一组数据的信息,具体为:所述打印机记录当前一组数据的长度和所述当前一组数据在当前一行数据的起始位置;

所述根据当前一组数据的信息将当前一组数据填充至当前一行数据的长度具体为:所述打印机根据当前一组数据的长度和所述当前一组数据在当前一行数据的起始位置,将当前一组数据填充预设数据至当前一行数据的长度。

10.根据权利要求8所述的方法,其特征在于,所述打印机记录当前一组数据的信息之后还包括:判断填充后的当前一组数据的长度是否与当前一行数据的长度相同,是则直接锁存当前一组数据;否则根据当前一组数据的信息将当前一组数据填充预设数据至当前一行数据的长度。

11.根据权利要求2所述的方法,其特征在于,所述根据所述组数确定打印头加热时间,具体为:所述打印机设定每组数据的打印头加热时间,根据所述每组数据的打印头加热时间和所述组数确定打印头加热时间。

12.根据权利要求11所述的方法,其特征在于,所述打印机设定每组数据的打印头加热时间,具体为:所述打印机检测打印头环境温度,根据检测到的打印头环境温度设定每组数据的打印头加热时间。

13.根据权利要求1所述的方法,其特征在于,所述步骤S2中还包括:所述打印机根据所述打印头加热时间确定电机脉冲时间;

所述步骤S3中,所述带动打印纸前进第一预设距离,具体为:带动打印纸在所述电机脉冲时间内前进第一预设距离。

14.根据权利要求1所述的方法,其特征在于,所述步骤S1之前还包括:所述打印机接收待打印数据,并将所述待打印数据存在缓存区中;

所述步骤S1,具体为:所述打印机从所述缓存区中读取预设长度的待打印数据作为当前一行数据;

所述步骤S2中还包括:所述打印机根据所述打印头加热时间确定电机脉冲时间。

15.根据权利要求14所述的方法,其特征在于,所述带动打印纸在所述电机脉冲时间内前进第一预设距离之后,返回步骤S1之前还包括:所述打印机判断所述缓存区中的待打印数据是否打印完,是则打印结束,否则执行步骤S1。

16.一种打印机,其特征在于,包括:

读取模块,用于读取预设长度的待打印数据作为当前一行数据;

获取模块,用于获取所述读取模块读取的当前一行数据中有效数据位的位数,根据所述有效数据位的位数确定打印头加热时间;

打印模块,用于根据所述获取模块确定的所述打印头加热时间,加热打印头,打印当前一行数据并带动打印纸前进第一预设距离;

所述读取模块,还用于所述打印模块打印当前一行数据并带动打印纸前进第一预设距离后,读取预设长度的待打印数据作为当前一行数据。

17.根据权利要求16所述的打印机,其特征在于,所述获取模块包括:第一获取单元、第一确认单元和第二确认单元;

所述第一获取单元,用于获取当前一行数据中有效数据位的位数;

所述第一确认单元,用于根据所述第一获取单元获取的有效数据位的位数确定所述当前一行数据的组数;

所述第二确认单元,用于根据所述第一确认单元确定的所述组数确定打印头加热时间。

18.根据权利要求17所述的打印机,其特征在于,所述第一确认单元,具体用于根据预设最大位数的有效数据位和所述有效数据位的位数确定所述当前一行数据的组数。

19.根据权利要求18所述的打印机,其特征在于,所述获取模块还包括:第一截取单元和锁存单元;所述打印模块包括:加热单元、打印单元、更新单元、第二获取单元、第一判断单元、转动模块和读取模块;

所述第一截取单元,用于从所述第一获取单元获取的当前一行数据中顺序截取包含所述预设最大位数的有效数据位的数据作为当前一组数据;还用于当所述第一判断单元判断当前一行数据未打印完时,顺序截取包含所述预设最大位数的有效数据位的数据作为当前一组数据;

所述锁存单元,用于锁存所述第一截取单元确定的所述当前一组数据;

所述第二确认单元,具体用于所述锁存单元确定当前一组数据的打印头加热时间;

所述加热单元,用于加热打印头;

所述打印单元,用于打印当前一组数据;

所述更新单元,用于更新当前一行数据中已打印数据的长度;

所述第二获取单元,用于获取当前一行数据中已打印数据的长度;

所述第一判断单元,用于根据所述第二获取单元获取到的当前一行数据中已打印数据的长度判断当前一行数据是否打印完成;

所述转动模块,用于当所述第一判断单元判断当前一行数据打印完成后,带动打印纸前进第二预设距离;

所述读取模块,还用于读取预设长度的待打印数据作为当前一行数据。

20.根据权利要求19所述的打印机,其特征在于,所述打印机还包括第一判断模块;

所述第一判断模块,用于判断当前一行数据的有效数据位的位数是否大于预设最大位数的有效数据位;

所述第一截取单元,具体用于当所述第一判断模块判断当前一行数据的有效数据位的位数大于预设最大位数的有效数据位时,从所述第一获取单元获取的当前一行数据中顺序截取包含所述预设最大位数的有效数据位的数据作为当前一组数据;

所述锁存单元,还用于当所述第一判断模块判断当前一行数据的有效数据位的位数小于预设最大位数的有效数据位时,将当前一行数据作为当前一组数据,锁存当前一组数据;

所述加热单元,用于加热打印头;

所述打印单元,用于打印当前一组数据;

所述更新单元,用于更新当前一行数据中已打印数据的长度。

21.根据权利要求19所述的打印机,其特征在于,所述打印模块还包括:增加单元;

所述增加单元,用于增加预设位半个像素点标志位。

22.根据权利要求21所述的打印机,其特征在于,所述打印模块还包括第二判断单元;

所述第二判断单元,用于获取半个像素点标志位并判断所述半个像素点标志位是否等于第一预设值;

所述读取模块,还用于当所述第二判断单元判断所述半个像素点标志位等于第一预设值时,读取预设长度的待打印数据作为当前一行数据;

所述第一截取单元,还用于当所述第二判断单元判断所述半个像素点标志位不等于第一预设值时,从所述第一获取单元获取的当前一行数据中顺序截取包含所述预设最大位数的有效数据位的数据作为当前一组数据。

23.根据权利要求19所述的打印机,其特征在于,所述获取模块还包括:记录单元和填充单元;

所述记录单元,用于记录当前一组数据的信息;

所述填充单元,用于根据所述记录单元记录的当前一组数据的信息将当前一组数据填充预设数据至当前一行数据的长度。

24.根据权利要求23所述的打印机,其特征在于,所述记录单元,具体用于记录当前一组数据的长度和所述当前一组数据在当前一行数据的起始位置;

所述填充单元,具体用于所述打印机根据当前一组数据的长度和所述当前一组数据在当前一行数据的起始位置,将当前一组数据填充预设数据至当前一行数据的长度。

25.根据权利要求23所述的打印机,其特征在于,所述获取模块还包括:第三判断单元;

所述第三判断单元,用于判断填充后的当前一组数据的长度是否与当前一行数据的长度相同;

所述锁存单元,还用于当所述第三判断单元判断当前一组数据的长度与当前一行数据的长度相同时,直接锁存当前一组数据;

所述填充单元,用于当所述第三判断单元判断当前一组数据的长度与当前一行数据的长度不相同时,用于根据所述记录单元记录的当前一组数据的信息将当前一组数据填充预设数据至当前一行数据的长度。

26.根据权利要求17所述的打印机,其特征在于,所述第二确认单元包括设定子单元和确定子单元;

所述设定子单元,用于设定每组数据的打印头加热时间;

所述确定子单元,用于根据所述设定子单元设定的所述每组数据的打印头加热时间和所述组数确定打印头加热时间。

27.根据权利要求26所述的打印机,其特征在于,所述设定子单元,具体用于检测打印头环境温度,根据检测到的打印头环境温度设定每组数据的打印头加热时间。

28.根据权利要求16所述的打印机,其特征在于,所述获取模块还包括:确定单元;

所述确定单元,用于根据所述打印头加热时间确定电机脉冲时间;

所述打印模块,具体用于根据所述获取模块确定的所述打印头加热时间,加热打印头,打印当前一行数据并带动打印纸在所述电机脉冲时间内前进第一预设距离。

29.根据权利要求16所述的打印机,其特征在于,所述打印机还包括:接收模块;

所述接收模块,用于接收待打印数据,并将所述待打印数据存在缓存区中;

所述读取模块,具体用于从所述缓存区中读取预设长度的待打印数据作为当前一行数据;

所述确定单元,用于根据所述打印头加热时间确定电机脉冲时间。

30.根据权利要求29所述的打印机,其特征在于,所述打印模块还包括第四判断单元;

所述第四判断单元,用于判断所述缓存区中的待打印数据是否打印完,若所述第四判断单元判断结果为是,则打印结束;

所述读取模块,还用于当所述第四判断单元判断所述缓存区中的待打印数据未打印完时,用于读取预设长度的待打印数据作为当前一行数据。

说明书 :

一种打印机及提高打印速度的方法

技术领域

[0001] 本发明涉及计算机应用领域,尤其涉及一种打印机及提高打印速度的方法。

背景技术

[0002] 热敏打印机的原理是打印头上安装有半导体加热元件,在淡色材料上(通常是纸)覆上一层透明膜,将膜加热一段时间后变成深色(一般是黑色,也有蓝色)。热敏打印机有选择地在热敏纸的确定位置上加热,由此就产生了相应的图形。图像是通过加热,在膜中产生化学反应而生成的。
[0003] 随着热敏打印机的不断推广与使用,热敏打印机的打印速度也成为人们关注的方面。现在有很多热敏打印机存在打印速度慢的情况,降低了用户体验。

发明内容

[0004] 本发明的目的是为了解决现有技术中存在的问题,提供了一种打印机及提高打印速度的方法。
[0005] 本发明提供了一种提高打印速度的方法,包括:
[0006] 步骤S1、打印机读取预设长度的待打印数据作为当前一行数据;
[0007] 步骤S2、打印机获取当前一行数据中有效数据位的位数,根据有效数据位的位数确定打印头加热时间;
[0008] 步骤S3、打印机根据打印头加热时间,加热打印头,打印当前一行数据并带动打印纸前进第一预设距离,返回步骤S1。
[0009] 本发明还提供了一种打印机,包括:
[0010] 读取模块,用于读取预设长度的待打印数据作为当前一行数据;
[0011] 获取模块,用于获取读取模块读取的当前一行数据中有效数据位的位数,根据有效数据位的位数确定打印头加热时间;
[0012] 打印模块,用于根据获取模块确定的打印头加热时间,加热打印头,打印当前一行数据并带动打印纸前进第一预设距离;
[0013] 读取模块,还用于打印模块打印当前一行数据并带动打印纸前进第一预设距离后,读取预设长度的待打印数据作为当前一行数据。
[0014] 本发明取得的有益效果是:采用本发明的技术方案,能够调整打印机打印的速度,缩短打印时间,用户体验良好。

附图说明

[0015] 为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0016] 图1为本发明实施例一中提供的一种提高打印速度的方法的流程图;
[0017] 图2为本发明实施例二中提供的一种提高打印速度的方法的流程图;
[0018] 图3-图4为本发明实施例三中提供的一种提高打印速度的方法的流程图;
[0019] 图5为本发明实施例四中提供的一种打印机的装置图。

具体实施方式

[0020] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0021] 实施例一
[0022] 本实施例提供了一种提高打印速度的方法,如图1所示,包括:
[0023] 步骤S1、打印机读取预设长度的待打印数据作为当前一行数据;
[0024] 步骤S2、打印机获取当前一行数据中有效数据位的位数,根据有效数据位的位数确定打印头加热时间;
[0025] 步骤S3、打印机根据打印头加热时间,加热打印头,打印当前一行数据并带动打印纸前进第一预设距离,返回步骤S1。
[0026] 可选地,步骤S2具体包括:打印机获取当前一行数据中有效数据位的位数,根据有效数据位的位数确定当前一行数据的组数,根据组数确定打印头加热时间。
[0027] 可选地,根据有效数据位的位数确定当前一行数据的组数,具体为:打印机根据预设最大位数的有效数据位和有效数据位的位数确定当前一行数据的组数。
[0028] 可选地,步骤S2-S3具体为:
[0029] 步骤X1、打印机获取当前一行数据中有效数据位的位数;
[0030] 步骤X2、从当前一行数据中顺序截取包含预设最大位数的有效数据位的数据作为当前一组数据,锁存当前一组数据,确定当前一组数据的打印头加热时间后,加热打印头,打印当前一组数据,更新当前一行数据中已打印数据的长度;
[0031] 步骤X3、打印机获取当前一行数据中已打印数据的长度,根据已打印数据的长度判断当前一行数据是否打印完成,是则带动打印纸前进第二预设距离,返回步骤S1;否则返回步骤X2。
[0032] 可选地,步骤X1之后、步骤X2之前还包括:打印机判断当前一行数据的有效数据位的位数是否大于预设最大位数的有效数据位,是则执行步骤X2;否则将当前一行数据作为当前一组数据,锁存当前一组数据,确定当前一组数据对应的打印头加热时间后,加热打印头,打印当前一组数据,更新当前一行数据中已打印数据的长度。
[0033] 可选地,带动打印纸前进第二预设距离之后还包括:增加预设位半个像素点标志位。
[0034] 可选地,带动打印纸前进第二预设距离之后还包括:
[0035] 打印机获取半个像素点标志位并判断半个像素点标志位是否等于第一预设值,是则返回步骤S1;否则执行步骤X2。
[0036] 在本实施例中,第二预设距离为半个像素点对应的距离,第一预设距离为一个像素点对应的距离。
[0037] 可选地,锁存当前一组数据之前还包括:打印机记录当前一组数据的信息,根据当前一组数据的信息将当前一组数据填充预设数据至当前一行数据的长度。
[0038] 可选地,记录当前一组数据的信息,具体为:打印机记录当前一组数据的长度和当前一组数据在当前一行数据的起始位置;
[0039] 根据当前一组数据的信息将当前一组数据填充至当前一行数据的长度具体为:打印机根据当前一组数据的长度和当前一组数据在当前一行数据的起始位置,将当前一组数据填充预设数据至当前一行数据的长度。
[0040] 可选地,打印机记录当前一组数据的信息之后还包括:判断当前一组数据的长度是否与当前一行数据的长度相同,是则直接锁存当前一组数据;否则根据当前一组数据的信息将当前一组数据填充预设数据至当前一行数据的长度。
[0041] 可选地,根据组数确定打印头加热时间,具体为:打印机设定每组数据的打印头加热时间,根据每组数据的打印头加热时间和组数确定打印头加热时间。
[0042] 可选地,打印机设定每组数据的打印头加热时间,具体为:打印机检测打印头环境温度,根据检测到的打印头环境温度设定每组数据的打印头加热时间。
[0043] 可选地,步骤S2中还包括:打印机根据打印头加热时间确定电机脉冲时间;
[0044] 步骤S3中,带动打印纸前进第一预设距离,具体为:带动打印纸在电机脉冲时间内前进第一预设距离。
[0045] 可选地,步骤S1之前还包括:打印机接收待打印数据,并将待打印数据存在缓存区中;
[0046] 步骤S1,具体为:打印机从缓存区中读取预设长度的待打印数据作为当前一行数据。
[0047] 可选地,带动打印纸在电机脉冲时间内前进预设距离之后,返回步骤S1之前还包括:打印机判断缓存区中的待打印数据是否打印完,是则打印结束,否则执行步骤S1。
[0048] 实施例二
[0049] 本实施例提供了一种提高打印速度的方法,如图2所示,包括:
[0050] 步骤101、打印机读取预设长度的待打印数据作为当前一行数据;
[0051] 在本实施例中,步骤101之前还包括:打印机接收待打印数据,并将待打印数据存在缓存区中;
[0052] 相应地,步骤101具体为:打印机从缓存区中读取预设长度的待打印数据作为当前一行数据;
[0053] 步骤101之前还包括:打印机判断缓存区中的待打印数据是否处理完,是则打印结束,否则执行步骤101;
[0054] 步骤101之前还包括:打印机接收打印参数,判断打印参数是否合理,是则执行步骤101,否则报错。
[0055] 具体地,判断打印参数是否合理,具体包括:打印机判断打印参数中的打印头加热时间是否合理,如若加热时间不合理,则报错;如若加热时间合理,打印机判断打印参数中的初始电机速度设置是否合理,是则打印机将电机运行至预设最大速度;否则报错。
[0056] 优选地,步骤101之前还包括:打印机进行初始化。
[0057] 步骤102、打印机判断当前一行数据中未打印数据中的数据有效位是否大于预设最大位数的有效数据位,是则从未打印数据中顺序截取包含预设最大位数的有效数据位的数据作为当前一组数据,记录当前一组数据的信息,执行步骤103;否则将未处理数据作为当前一组数据,记录当前一组数据的信息,执行步骤103;
[0058] 步骤102中将未处理数据作为当前一组数据之前,还包括:打印机判断当前一组数据的长度和已处理数据的长度和是否等于当前一行数据的长度,是则将未处理数据作为当前一组数据,否则报错。
[0059] 步骤103、打印机根据当前一组数据的信息将当前一组数据填充至当前一行数据的长度后,锁存当前一组数据;
[0060] 具体地,记录当前一组数据的信息,具体为:打印机记录当前一组数据的长度和当前一组数据在当前一行数据的起始位置;
[0061] 相应地,步骤103具体为:打印机根据当前一组数据的长度和在当前一行数据的起始位置,将当前一组数据填充预设数据至当前一行数据的长度,锁存当前一组数据。
[0062] 步骤103中,锁存当前一组数据之前,还包括:打印机判断当前一组数据的长度是否等于当前一行数据的长度,是则锁存当前一组数据,否则报错。
[0063] 步骤104、打印机设定当前一组数据对应的打印头加热时间,打印当前一组数据,更新当前一行数据中已打印数据的长度,执行步骤105。
[0064] 在本实施例中,打印机设定当前一组数据对应的打印头加热时间,具体为:
[0065] 1)打印机检测打印头环境温度,根据检测到的打印头环境温度设定当前一组数据对应的打印头加热时间;
[0066] 2)打印机根据预设温度值设定加热时间;
[0067] 步骤105、打印机获取当前一行数据中已打印数据的长度,判断当前一行数据是否打印完成,是则半个像素点标志位加1,确定当前一行数据的打印头加热时间,根据打印头加热时间确定电机脉冲时间,打印机带动打印纸在电机脉冲时间内前进第二预设距离,执行步骤106;否则执行步骤102;
[0068] 步骤106、打印机获取半个像素点标志位并判断半个像素点标志位是否等于预设值,是则当前一行数据打印完成,返回步骤101;否则执行步骤105;
[0069] 在本实施例中,步骤104可以替换为:打印机根据预设温度值设定加热时间。
[0070] 在本实施例中,步骤104之前还包括:打印机判断是否有打印纸;是则执行步骤104,否则报错。
[0071] 在本实施例中,步骤102-104可以替换为:
[0072] 步骤A1、打印机判断根据预设最大位数的有效数据位将当前一行数据划分的组数是否大于预设值,是则读取第一组数据作为当前一组数据,执行步骤A2;否则读取当前一行数据作为当前一组数据,执行步骤A3;
[0073] 在本实施例中,预设值具体为2。
[0074] 步骤A2、打印机记录当前一组数据的信息并根据当前一组数据的信息将当前一组数据填充至当前一行数据的长度,执行步骤A3;
[0075] 步骤A3、打印机锁存当前一组数据,设定当前一组数据对应的打印头加热时间,打印当前一组数据,更新当前一行数据中已打印数据的长度;
[0076] 步骤A4、打印机判断是否还有下一组数据,是则将下一组数据作为当前一组数据,返回步骤A2;否则返回步骤103。
[0077] 在本实施例中,步骤102-104可以替换为:
[0078] 步骤B1、打印机将当前一行数据划分成预设的组数,读取第一组数据作为当前一组数据;
[0079] 步骤B2、打印机记录当前一组数据的信息并根据当前一组数据的信息将当前一组数据填充至当前一行数据的长度,执行步骤B3;
[0080] 步骤B3、打印机锁存当前一组数据,设定当前一组数据对应的打印头加热时间,打印当前一组数据,更新当前一行数据中已打印数据的长度;
[0081] 步骤B4、打印机判断是否还有下一组数据,是则将下一组数据作为当前一组数据,返回步骤B2;否则返回步骤103。
[0082] 实施例三
[0083] 本实施例提供了一种提高打印速度的方法,如图3-图4所示,包括:
[0084] 步骤200、打印机进行初始化;
[0085] 在本实施例中,初始化包括:数据时钟初始化、纸张检测I/O(Input/Output,输入/输出端口)初始化、加热控制IO初始化以及电机初始化。
[0086] 需要说明的是,本实施例中的打印机指的是热敏打印机。
[0087] 步骤201、打印机接收待打印的数据,并将待打印的数据存在缓存区中;
[0088] 在本实施例中,打印机接收待打印的数据的传输方式为有线传输或者是无线传输,且需打印的信息数据包括:文字、图形、数字、字母、颜色中的一种或多种组合。
[0089] 具体地,需打印的信息数据为:
[0090] 0x00,0x04,0x10,0x04,0x03,0xE0,0x10,0x04,0x10,0x04,0x10,0x04,0x03,0xE0,0x10,0x04,0x00,0x00,0x00,0x03,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,
0x07,0xF0,0x10,0x04,0x07,0xF0,0x10,0x04,0x00,0x00,0x18,0x00,0x10,0x00,0x10,
0x00,0x1F,0xC0,0x10,0x04,0x00,0x3C,0x1F,0xFC,0x0C,0x18,0x1F,0xFC,0x1F,0xFC,
0x1F,0xFC,0x0C,0x18,0x1F,0xFC,0x10,0x04,0x00,0x01,0x1F,0xFC,0x1F,0xFC,0x1F,
0xFC,0x1F,0xFC,0x08,0x08,0x1F,0xFC,0x08,0x18,0x1F,0xFC,0x0E,0x1C,0x10,0x00,
0x1F,0xF8,0x1E,0x00,0x10,0x3C,0x18,0x0C,0x03,0xC4,0x11,0x04,0x10,0x04,0x10,
0x04,0x11,0x04,0x11,0x04,0x10,0x04,0x10,0x84,0x10,0x04,0x10,0x01,0x11,0x04,
0x10,0x04,0x1F,0x00,0x0C,0x04,0x10,0x04,0x10,0x84,0x10,0x24,0x11,0x04,0x11,
0x04,0x10,0x04,0x10,0x04,0x11,0xE0,0x00,0xE0,0x16,0x34,0x1C,0x40,0x11,0x04,
0x10,0x04,0x10,0x04,0x11,0x04,0x11,0x00,0x10,0x04,0x00,0x80,0x1F,0xFC,0x10,
0x01,0x03,0x80,0x00,0x04,0x00,0xFC,0x03,0x00,0x10,0x04,0x10,0x80,0x10,0x24,
0x11,0x00,0x10,0x84,0x1F,0xFC,0x00,0x04,0x00,0x1C,0x1F,0x00,0x01,0xC0,0x07,
0x40,0x11,0x04,0x10,0x04,0x10,0x04,0x17,0xC4,0x17,0xC0,0x10,0x44,0x00,0x80,
0x10,0x04,0x1F,0xFE,0x14,0x64,0x00,0x04,0x1F,0x00,0x00,0xE0,0x10,0x04,0x10,
0x80,0x10,0x1C,0x11,0xC0,0x10,0x84,0x10,0x04,0x00,0x04,0x00,0x70,0x00,0xE0,
0x01,0xC0,0x00,0xE4,0x0E,0x88,0x10,0x08,0x08,0x08,0x10,0x04,0x10,0x00,0x1C,
0x78,0x10,0x84,0x10,0x04,0x10,0x00,0x18,0x1C,0x00,0x04,0x1F,0xFC,0x10,0x18,
0x08,0x08,0x10,0x80,0x08,0x0A,0x11,0x30,0x10,0x44,0x10,0x00,0x10,0x04,0x13,
0x80,0x10,0x3C,0x16,0x34,0x00,0x1C,0x00,0x70,0x1C,0x10,0x07,0xF0,0x08,0x18,
0x08,0x00,0x00,0x40,0x1F,0xFC,0x00,0x00,0x10,0x00,0x10,0x04,0x00,0x0C,0x10,
0x04,0x1F,0xFC,0x07,0xF0,0x0F,0x00,0x07,0xF2,0x0E,0x0C,0x1C,0x38,0x18,0x00,
0x1F,0xF8,0x1C,0x00,0x1F,0xC0,0x18,0x0,0x00,0x04,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x10,0x04,
[0091] 步骤202、打印机接收打印参数;
[0092] 在本实施例中,接收的打印参数包括:一行数据的总字节数、初始加热时间、初始电机速度、电机转动方向、预设最大位数的有效数据位及输出数据方向是否正常。
[0093] 具体地,一行数据的总字节数为48字节,初始加热时间为431us(-10℃~70℃8.5V),初始电机最大速度为3200pps(Pulse Per Second,每秒脉冲数(8.5V),电机转动方向是正向,预设最大位数的有效数据位是48位,输出数据方向为正常。
[0094] 步骤203、打印机判断打印参数中的初始加热时间是否合理,是则执行步骤204,否则报错;
[0095] 具体地,在本实施例中,打印机判断初始加热时间为119us~612us(-10℃~70℃,8.5V)时即为合理。
[0096] 步骤204、打印机判断打印参数中的初始电机速度是否合理,是则将电机运行至预设最大速度执行步骤205,否则报错;
[0097] 具体地,在本实施例中,打印机判断电机速度为640pps~3200pps(8.5V)时即为合理。
[0098] 步骤205、打印机从缓存区中读取预设长度的数据作为当前一行数据;
[0099] 在本实施例中,预设长度为48字节。
[0100] 具体地,当前一行数据为:
[0101] 0x00,0x04,0x10,0x04,0x03,0xE0,0x10,0x04,0x10,0x04,0x10,0x04,0x03,0xE0,0x10,0x04,0x00,0x00,0x00,0x03,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,
0x07,0xF0,0x10,0x04,0x07,0xF0,0x10,0x04,0x00,0x00,0x18,0x00,0x10,0x00,0x10,
0x00,0x1F,0xC0,0x10,0x04,
[0102] 步骤206、打印机判断打印参数中的预设最大位数的有效数据位是否正确,是则执行步骤207,否则报错;
[0103] 具体地,打印机判断打印参数中的预设最大位数的有效数据位是否为48位,是则执行步骤207,否则报错;
[0104] 步骤207、打印机判断当前一行数据的有效数据位的位数是否大于预设最大位数的有效数据位,是则执行步骤208,否则执行步骤210;
[0105] 具体地,打印机判断当前一行数据的有效数据位的位数是否大于48位,是则执行步骤208,否则执行步骤210;
[0106] 步骤208、打印机从当前一行数据中顺序截取包含预设最大位数的有效数据位的数据作为当前一组数据,记录当前一组数据的长度和当前一组数据在当前一行数据的起始位置;
[0107] 在本实施例中,打印机根据预设最大位数的有效数据位48位,顺序截取包含预设最大位数的有效数据位的数据作为当前一组数据;
[0108] 具体地,当前一组数据为:
[0109] 0x00,0x04,0x10,0x04,0x03,0xE0,0x10,0x04,0x10,0x04,0x10,0x04,0x03,0xE0,0x10,0x04,0x00,0x00,0x00,0x03,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,
0x07,0xF0,0x10,0x04,0x07,0xF0,0x10,则当前一组数据的长度为35字节(包含48个数据有效位),当前一组数据在当前一行数据的起始位置为:0。
[0110] 步骤209、打印机根据当前一组数据的长度和当前一组数据在当前一行数据的起始位置,将当前一组数据填充预设数据至当前一行数据的长度,执行步骤211;
[0111] 具体地,将当前一组数据填充为:
[0112] 0x00,0x04,0x10,0x04,0x03,0xE0,0x10,0x04,0x10,0x04,0x10,0x04,0x03,0xE0,0x10,0x04,0x00,0x00,0x00,0x03,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,
0x07,0xF0,0x10,0x04,0x07,0xF0,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,
[0113] 步骤210、打印机将当前一行数据作为当前一组数据,获取已打印数据的长度,判断当前一组数据的长度和已打印数据的长度和是否等于当前一行数据的长度,是则执行步骤211,否则报错;
[0114] 例如,打印机获取当前一行数据中已打印数据的长度为0。
[0115] 步骤211、打印机判断当前一组数据的长度是否等于预设长度,是则执行步骤212,否则报错;
[0116] 步骤212、打印机判断打印参数中的数据输出的方向是否与打印参数中设定的输出数据方向一致,是则执行步骤213,否则报错;
[0117] 步骤213、打印机锁存当前一组数据,更新已打印数据的长度;
[0118] 在本实施例中,打印机锁存为:
[0119] 0x00,0x04,0x10,0x04,0x03,0xE0,0x10,0x04,0x10,0x04,0x10,0x04,0x03,0xE0,0x10,0x04,0x00,0x00,0x00,0x03,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,
0x07,0xF0,0x10,0x04,0x07,0xF0,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00;更新已打印数据的长度为35字节。
[0120] 步骤214、打印机判断是否有纸,是则执行步骤215,否则报错;
[0121] 步骤215、打印机设定当前一组数据对应的打印头加热时间;
[0122] 在本实施例中,打印机设定当前一组数据对应的打印头加热时间,具体为:
[0123] 1)打印机检测打印头环境温度,根据检测到的打印头环境温度设定当前一组数据对应的打印头加热时间;
[0124] 在本实施例中,打印机通过AD采集模块采集打印头环境温度,根据采集的温度从预置的第一数据表中查找到相应的加热时间,并进行设定。
[0125] 第一数据表
[0126]
[0127] 具体地,当电压为8.5v时,打印机采集到的打印头环境温度为25℃,则加热时间为0.431ms。
[0128] 需要说明的是,打印机检测打印头环境温度可在本实施例中的任意一个步骤中执行,也可固定打印机检测打印头环境温度的检测时间。
[0129] 在本实施例中,通过对打印头环境温度的采集,根据当前打印头环境温度的不同,通过对加热时间的调整来控制打印机的打印质量和打印时间。
[0130] 在本实施例中,打印机检测打印头环境温度后,判断打印头环境温度是否过高,是则停止加热并报错,执行步骤219,否则根据检测到的打印头环境温度设定加热时间;
[0131] 具体地,当打印机检测打印头环境温度超过70℃时,停止加热。
[0132] 3)打印机根据预设温度值设定加热时间;
[0133] 具体地,打印机以某一固定的温度对应的加热时间进行加热,如设定固定温度为25℃,则固定加热时间为0.431ms。
[0134] 步骤216、打印机打印当前一组数据;
[0135] 步骤217、打印机获取当前一行数据中已打印数据的长度,判断当前一行数据是否打印完,是则执行步骤218,否则返回步骤206;
[0136] 具体地,打印机通过获取当前一行数据中已打印数据的长度,判断是否与当前一行数据的长度是否相同,如若相同表明当前一行数据已经处理完,执行步骤218;如若不同,则执行步骤206。
[0137] 步骤218、半个像素点标志位加1,确定当前一行数据的打印头加热时间,根据打印头加热时间确定电机脉冲时间,打印机带动打印纸在电机脉冲时间内前进第二预设距离;
[0138] 在本实施例中,带动打印纸前进第二预设距离为:0.0625mm,即为半个像素点对应的纸张前进距离。
[0139] 本实施例中,根据预设最大位数的有效数据位将一行数据分为一组或多组数据,每一组数据的打印头加热时间为t0(t0
[0140] 步骤219、打印机获取半个像素点标志位,并判断半个像素点标志位是否等于预设值,是则当前一行数据打印完成,执行步骤220,否则执行步骤217;
[0141] 在本实施例中,打印机的打印头尺寸为半个像素,打印头打印半个像素点,半个像素点标志位为1;打印机完成一行数据的打印需要打印一个像素点,此时半个像素点标志位为2;需要说明的是,半个像素点标志位的初始值为0,预设值为2。
[0142] 步骤220、打印机判断缓存区中的待打印数据是否处理完,是则打印结束,否则执行步骤207。
[0143] 优选地,在本实施例中,步骤213中打印机锁存当前一组数据后,即可执行步骤214,打印机更新已打印数据的长度可在打印机执行步骤214-216之间进行。
[0144] 在本实施例中,打印机通过检测打印头环境温度,进而设定加热时间,通过对加热时间的调整来控制打印质量;根据数据有效位将一行数据分成若干组,组数的多少影响电机脉冲时间的长短;通过对加热时间和电机脉冲时间的动态调整,能够在保证打印机打印质量的同时,缩短打印时间,提高用户的体验。
[0145] 优选地,在本实施例中,步骤207-步骤217,可以替换为步骤A1-A10,具体地:
[0146] 步骤A1、打印机判断根据预设最大位数的有效数据位将当前一行数据划分的组数是否大于等于2,是则读取第一组数据作为当前一组数据,执行步骤A2,否则读取当前一行数据作为当前一组数据直接执行步骤A3;
[0147] 步骤A2、记录当前一组数据的长度和在当前一行数据的起始位置,并将当前一组数据填充预设数据至当前一行数据的长度;
[0148] 步骤A3、打印机判断当前一组数据的长度是否等于预设长度,是则执行步骤A4,否则报错;
[0149] 在本实施例中,预设长度为当前一行数据的长度,即48字节。
[0150] 步骤A4、打印机判断数据输出的方向是否正确,是则执行步骤A5,否则报错;
[0151] 步骤A5、打印机锁存当前一组数据,更新已打印数据的长度;
[0152] 步骤A6、打印机判断是否有纸,是则执行步骤A7,否则报错;
[0153] 步骤A7、打印机设定当前一组数据对应的打印头加热时间;
[0154] 步骤A8、打印机打印当前一组数据;
[0155] 步骤A9、打印机判断是否还有下一组数据,是则将下一组数据作为当前一组数据,返回步骤A2;否则返回步骤A10;
[0156] 步骤A10、打印机获取当前一行数据中已打印数据的长度,判断当前一行数据是否处理完,是则执行步骤218,否则执行步骤A1;
[0157] 优选地,在本实施例中,步骤207-步骤217,可以替换为步骤B0-B8,具体地:
[0158] 步骤B0、打印机将当前一行数据划分成预设的组数,读取第一组数据作为当前一组数据;
[0159] 在本实施例中,打印机将当前一行数据分成8组数据,每组数据为6字节。
[0160] 步骤B1、记录当前一组数据的长度和在当前一行数据的起始位置,并将当前一组数据其他位置填充预设数据至当前一行数据的长度;
[0161] 步骤B2、打印机判断当前一组数据的长度是否等于预设长度,是则执行步骤B3,否则报错;
[0162] 在本实施例中,预设长度为当前一行数据的长度,即48字节。
[0163] 步骤B3、打印机判断数据输出的方向是否正确,是则执行步骤B4,否则报错;
[0164] 步骤B4、打印机锁存当前一组数据,更新已打印数据的长度;
[0165] 步骤B5、打印机判断是否有纸,是则执行步骤B6,否则报错;
[0166] 步骤B6、设定当前一组数据对应的打印头加热时间;
[0167] 步骤B7、打印机打印当前一组数据;
[0168] 步骤B8、打印机判断是否还有下一组数据,是则将下一组数据作为当前一组数据,返回步骤B1;否则执行步骤220;
[0169] 相应地,根据预设最大位数的有效数据位将一行数据分为8组数据,每一组数据的打印头加热时间为t0(t0
[0170] 实施例四
[0171] 本实施例提供一种打印机,如图5所示,包括:
[0172] 读取模块401,用于读取预设长度的待打印数据作为当前一行数据;
[0173] 获取模块402,用于获取读取模块401读取的当前一行数据中有效数据位的位数,根据有效数据位的位数确定打印头加热时间;
[0174] 打印模块403,用于根据获取模块402确定的打印头加热时间,加热打印头,打印当前一行数据并带动打印纸前进第一预设距离;
[0175] 读取模块401,还用于打印模块403打印当前一行数据并带动打印纸前进第一预设距离后,读取预设长度的待打印数据作为当前一行数据。
[0176] 可选地,获取模块402包括:第一获取单元、第一确认单元和第二确认单元;
[0177] 第一获取单元,用于获取当前一行数据中有效数据位的位数;
[0178] 第一确认单元,用于根据第一获取单元获取的有效数据位的位数确定当前一行数据的组数;
[0179] 第二确认单元,用于根据第一确认单元确定的组数确定打印头加热时间。
[0180] 可选地,第一确认单元,具体用于根据预设最大位数的有效数据位和有效数据位的位数确定当前一行数据的组数。
[0181] 可选地,获取模块402还包括:第一截取单元和锁存单元;打印模块403包括:加热单元、打印单元、更新单元、第二获取单元、第一判断单元、转动模块和读取模块401;
[0182] 第一截取单元,用于从第一获取单元获取的当前一行数据中顺序截取包含预设最大位数的有效数据位的数据作为当前一组数据;还用于当第一判断单元判断当前一行数据未打印完时,顺序截取包含预设最大位数的有效数据位的数据作为当前一组数据;
[0183] 锁存单元,用于锁存第一截取单元确定的当前一组数据;
[0184] 第二确认单元,具体用于锁存单元确定当前一组数据的打印头加热时间;
[0185] 加热单元,用于加热打印头;
[0186] 打印单元,用于打印当前一组数据;
[0187] 更新单元,用于更新当前一行数据中已打印数据的长度;
[0188] 第二获取单元,用于获取当前一行数据中已打印数据的长度;
[0189] 第一判断单元,用于根据第二获取单元获取到的当前一行数据中已打印数据的长度判断当前一行数据是否打印完成;
[0190] 转动模块,用于当第一判断单元判断当前一行数据打印完成后,带动打印纸前进第二预设距离;
[0191] 读取模块401,还用于读取预设长度的待打印数据作为当前一行数据。
[0192] 可选地,打印机还包括第一判断模块;
[0193] 第一判断模块,用于判断当前一行数据的有效数据位的位数是否大于预设最大位数的有效数据位;
[0194] 第一截取单元,具体用于当第一判断模块判断当前一行数据的有效数据位的位数大于预设最大位数的有效数据位时,从第一获取单元获取的当前一行数据中顺序截取包含预设最大位数的有效数据位的数据作为当前一组数据;
[0195] 锁存单元,还用于当第一判断模块判断当前一行数据的有效数据位的位数小于预设最大位数的有效数据位时,将当前一行数据作为当前一组数据,锁存当前一组数据;
[0196] 加热单元,用于加热打印头;
[0197] 打印单元,用于打印当前一组数据;
[0198] 更新单元,用于更新当前一行数据中已打印数据的长度。
[0199] 可选地,打印模块403还包括:增加单元;
[0200] 增加单元,用于增加预设位半个像素点标志位。
[0201] 可选地,打印模块403还包括第二判断单元;
[0202] 第二判断单元,用于获取半个像素点标志位并判断半个像素点标志位是否等于第一预设值;
[0203] 读取模块401,还用于当第二判断单元判断半个像素点标志位等于第一预设值时,读取预设长度的待打印数据作为当前一行数据;
[0204] 第一截取单元,还用于当第二判断单元判断半个像素点标志位不等于第一预设值时,从第一获取单元获取的当前一行数据中顺序截取包含预设最大位数的有效数据位的数据作为当前一组数据。
[0205] 可选地,获取模块402还包括:记录单元和填充单元;
[0206] 记录单元,用于记录当前一组数据的信息;
[0207] 填充单元,用于根据记录单元记录的当前一组数据的信息将当前一组数据填充预设数据至当前一行数据的长度。
[0208] 可选地,记录单元,具体用于记录当前一组数据的长度和当前一组数据在当前一行数据的起始位置;
[0209] 填充单元,具体用于打印机根据当前一组数据的长度和当前一组数据在当前一行数据的起始位置,将当前一组数据填充预设数据至当前一行数据的长度。
[0210] 可选地,获取模块402还包括:第三判断单元;
[0211] 第三判断单元,用于判断当前一组数据的长度是否与当前一行数据的长度相同;
[0212] 锁存单元,还用于当第三判断模块判断当前一组数据的长度与当前一行数据的长度相同时,直接锁存当前一组数据;
[0213] 填充单元,用于当第三判断模块判断当前一组数据的长度与当前一行数据的长度不相同时,用于根据记录单元记录的当前一组数据的信息将当前一组数据填充预设数据至当前一行数据的长度。
[0214] 可选地,第二确认单元包括设定子单元和确定子单元;
[0215] 设定子单元,用于根据设定每组数据的打印头加热时间;
[0216] 确定子单元,用于根据设定子单元设定的每组数据的打印头加热时间和组数确定打印头加热时间。
[0217] 可选地,设定子单元,具体用于检测打印头环境温度,根据检测到的打印头环境温度设定每组数据的打印头加热时间。
[0218] 可选地,获取模块402还包括:确定单元;
[0219] 确定单元,用于根据打印头加热时间确定电机脉冲时间;
[0220] 打印模块403,具体用于根据获取模块402确定的打印头加热时间,加热打印头,打印当前一行数据并带动打印纸在电机脉冲时间内前进第一预设距离。
[0221] 可选地,打印机还包括:接收模块;
[0222] 接收模块,用于接收待打印数据,并将待打印数据存在缓存区中;
[0223] 读取模块401,具体用于从缓存区中读取预设长度的待打印数据作为当前一行数据。
[0224] 可选地,打印模块403还包括第四判断单元;
[0225] 第四判断单元,用于判断缓存区中的待打印数据是否打印完,若第四判断单元判断结果为是,则打印结束;
[0226] 读取模块401,还用于当第四判断单元判断缓存区中的待打印数据未打印完时,用于读取预设长度的待打印数据作为当前一行数据。
[0227] 以上,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。