CN109799963B - 微型打印机点阵指令解析方法 - Google Patents
微型打印机点阵指令解析方法 Download PDFInfo
- Publication number
- CN109799963B CN109799963B CN201910068443.7A CN201910068443A CN109799963B CN 109799963 B CN109799963 B CN 109799963B CN 201910068443 A CN201910068443 A CN 201910068443A CN 109799963 B CN109799963 B CN 109799963B
- Authority
- CN
- China
- Prior art keywords
- data
- instruction
- raster
- width
- height
- 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
Images
Landscapes
- Accessory Devices And Overall Control Thereof (AREA)
Abstract
本发明公开了一种微型打印机点阵指令解析方法,包括如下步骤:S1、遍历文件,获取各段光栅宽高参数;S2、排列内容,将数据按光栅矩阵存储;S3、处理S2中存储的光栅矩阵,拼接各光栅数据;S4、将S3中的数据填充到BMP结构。本发明支持解析所有格式为“指令+普通数据”的打印机点阵数据文件,适用范围广。
Description
技术领域
本发明涉及一种微型打印机点阵指令解析方法,属于打印机指令解析方法领域。
背景技术
随着大数据相关技术的发展,客户消费信息的汇总、分析工作在商业领域的重要性日渐凸显。通过对各类消费记录的大数据分析,商家可以准确而快速地掌握消费趋势,及时调整销售策略顺应市场潮流,从而取得行业竞争优势。大到一个商业综合体的各类型门店占比,小到一个店铺的各商品进货数量,消费型大数据的应用无处不在。而此种大数据的来源,便是每家店铺都有的微型票据打印机,由此,市场上出现了各类打印机数据采集方案,而打印机指令解析方法是其中不可或缺的重要组成部分。
由行业内公知可以得出:微型票据打印机的原始输出信息有两种,一种是可见字符形式,另一种是点阵形式。本方案所论述的方法只针对后一种打印机数据类型。
根据各类已有打印机数据采集方案中关于点阵指令解析方法的论述,可知当前所有公开的该功能方法原理都为:根据打印机厂商开放或网络公开的指令手册,在代码中预设对应微型打印机核心打印指令,每次接收到打印机原始数据便进行指令匹配,再按匹配的指令格式对其进行各项操作后填充为BMP图片数据,得到最终指令还原后图片。此型方法的缺陷及要解决的问题有以下几点:
只能处理核心打印指令与代码预设类型匹配的打印机型号,单次版本代码兼容性有限。
每次添加新型打印机指令都需要重新改写相关功能代码,单次升级代价较高。
代码预设打印指令类型只能通过打印机厂商或其他渠道公示的技术文档获取。而部分打印机厂商并未使用行业内微型热敏打印机最通用的ESC\PK2指令系,且并未公开其指令协议;而用于打印发票的各型针式打印机,更是难寻其通用指令系。故该型方法存在明显的技术瓶颈。
发明内容
为了解决上述问题,本发明提供一种微型打印机点阵指令解析方法,支持解析所有格式为“指令+普通数据”的打印机点阵数据文件。
解决上述问题的技术方案为:一种微型打印机点阵指令解析方法,包括如下步骤:
S1、遍历文件,获取各段光栅宽高参数;
S2、排列内容,将数据按光栅矩阵存储;
S3、处理S2中存储的光栅矩阵,拼接各光栅数据;
S4、将S3中的数据填充到BMP结构。
进一步地,S1具体步骤为:
S11、匹配内置打印机指令,直接获取宽高参数位置;
S12、统计字符段概率确定指令头,匹配相邻指令头间数据量确定宽高参数位置;
S13、限值假设法推测指令头,遍历假定指令头后续若干数据,查看是否有满足数值乘积与相邻假定指令头间数据量相符的宽高参数组合,是,则确定指令头及宽高参数位置。
进一步地,S2具体步骤为:
S21、将指令头后续普通数据直接按对应宽高值填充到矩阵数组;
S22、添加过滤算法,识别并删除部分打印机在随机光栅段添加的固定校验数据,再将指令头后续普通数据按对应宽高值填充到矩阵数组。
进一步地,S3具体步骤为:
S31、将各光栅直接对齐后拼接;
S32、根据各光栅宽度波动范围判断指定宽高参数指令前是否含有光栅偏移指令头,对各光栅进行偏移值校准后再进行拼接;
S33、根据各光栅高度值判断普通数据排列是高度固定的光栅行还是高度不一的光栅段,在每个光栅行之间添加空白行数据再进行拼接,以保证解析后图片文字排版更接近原打印文件排版样式。
进一步地,S4具体步骤为:编写BMP数据结构体,根据计算得出的拼接后光栅宽高填充BMP文件头,信息头位置;将处理后光栅数据填充到图片数据部分。
本发明的优点在于:不再只采用“匹配代码中预设打印机指令”的方法来识别一次打印机数据中的指令类型;支持解析所有格式为“指令+普通数据”的打印机点阵数据文件。
每次添加新支持的打印机指令类型,无需改写功能代码,只用改变本方法接口里相关样本训练参数即可;对于已支持的打印指令,再使用与样本库中指令匹配的方式快速解析,从而保证实际应用中批量解析处理效率。使项目开发摆脱打印机厂商及打印机类型的束缚。
下面结合附图对本发明作进一步详细描述。
附图说明
图1为本发明流程示意图。
具体实施方式
为了加深对本发明的理解,下面将结合实施例和附图对本发明作进一步详述,该实施例仅用于解释本发明,并不构成对本发明保护范围的限定。
如图1所示,一种微型打印机点阵指令解析方法,包括如下步骤:
S1、遍历文件,获取各段光栅宽高参数;
S2、排列内容,将数据按光栅矩阵存储;
S3、处理S2中存储的光栅矩阵,拼接各光栅数据;
S4、将S3中的数据填充到BMP结构。
S1具体步骤为:
S11、匹配内置打印机指令,直接获取宽高参数位置;
S12、统计字符段概率确定指令头,匹配相邻指令头间数据量确定宽高参数位置;
S13、限值假设法推测指令头,遍历假定指令头后续若干数据,查看是否有满足数值乘积与相邻假定指令头间数据量相符的宽高参数组合,是,则确定指令头及宽高参数位置。
S2具体步骤为:
S21、将指令头后续普通数据直接按对应宽高值填充到矩阵数组;
S22、添加过滤算法,识别并删除部分打印机在随机光栅段添加的固定校验数据,再将指令头后续普通数据按对应宽高值填充到矩阵数组。
S3具体步骤为:
S31、将各光栅直接对齐后拼接;
S32、根据各光栅宽度波动范围判断指定宽高参数指令前是否含有光栅偏移指令头,对各光栅进行偏移值校准后再进行拼接;
S33、根据各光栅高度值判断普通数据排列是高度固定的光栅行还是高度不一的光栅段,在每个光栅行之间添加空白行数据再进行拼接,以保证解析后图片文字排版更接近原打印文件排版样式。
S4具体步骤为:编写BMP数据结构体,根据计算得出的拼接后光栅宽高填充BMP文件头,信息头位置;将处理后光栅数据填充到图片数据部分。
实施例:
首次传入该型打印指令数据(训练样本过程):
遍历打印机原始数据文件(注:用作样本的点阵数据文件,其对应的每个可见打印字符必须保持严格差异)前100字节,以某数值(传入参数)作为指令检索样本长度,将该100字节分成若干样本组(过滤掉全为0x00的样本),再依次计算组中样本在整个数据文件中出现的次数并按照样本位置顺序依次记录。根据打印机点阵数据都遵循的排列规则,可通过上述样本出现的次数与位置信息定位到决定后续点阵排布长宽的点阵指令头以及指令段复用起始指令头。然后以某数值(传入参数)作为宽高参数检索样本长度,将该命令头后续20字节分为若干样本组,以小端排序的规则计算得到每个样本相应的宽高数值(高度值在前,计算值为零时用定高值(传入参数)替代;宽度值在后,计算值为零则舍弃该样本)。再与宽高字节数据位置到下个指令段起始指令头位置的偏移量进行对比,该偏移量减去换行标识值(传入参数)再乘以密度因子(传入参数)得到的数值应该与宽高乘积相等。由此可以得到该型打印指令数据中每个点阵宽高数值。根据每段点阵数据计算的宽高值将其紧跟的普通数据排列成相应的矩阵数组,再结合BMP文件宽度值要求计算出解析后图片宽度,对部分矩阵数组进行补零处理。解析后图片高度即为所有点阵高度值之和。
使用反色函数处理处矩阵数组后,再按BMP图片数据排列规则将其依次填充到BMP结构数组,其中的BMP文件头及数据头结构体根据解析后图片的相应参数计算值填充。
输出带传入参数组合标识符的BMP文件或返回对应步骤错误码。
根据返回的图片效果,确定最佳传入参数组合。调用接口将该型打印指令解析规则添加到已识别指令队列。
非首次传入该型打印指令数据(批量解析过程):
遍历数据文件,与已识别指令队列中各条核心指令头进行匹配。得到该数据点阵参数计算规则。
跳转到点阵数据处理排列过程。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种微型打印机点阵指令解析方法,其特征在于,包括如下步骤:
S1、对于首次传入的打印指令数据,遍历数据文件,限值假设法推测指令头,以传入参数作为指令检索样本长度,将数据文件分成若干样本组,根据样本在整个数据文件中出现的次数与位置信息确定假定指令头,遍历假定指令头后续若干数据,查看是否有满足数值乘积与相邻假定指令头间数据量相符的宽高参数组合,是,则得到每个点阵宽高数值,获取各段光栅宽高参数;
对于非首次传入的打印指令数据,遍历数据文件,与已识别指令队列中各条核心指令头进行匹配,得到该数据点阵参数计算规则;
S2、排列内容,添加过滤算法,识别并删除部分打印机在随机光栅段添加的固定校验数据,再将指令头后续普通数据按对应宽高值填充到矩阵数组,按光栅矩阵存储;
S3、处理S2中存储的光栅矩阵,根据各光栅宽度波动范围判断指定宽高参数指令前是否含有光栅偏移指令头,对各光栅进行偏移值校准后再拼接各光栅数据;
S4、将S3中的数据填充到BMP结构。
2.根据权利要求1述的方法,其特征在于,S4具体步骤为:编写BMP数据结构体,根据计算得出的拼接后光栅宽高填充BMP文件头,信息头位置;将处理后光栅数据填充到图片数据部分。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910068443.7A CN109799963B (zh) | 2019-01-24 | 2019-01-24 | 微型打印机点阵指令解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910068443.7A CN109799963B (zh) | 2019-01-24 | 2019-01-24 | 微型打印机点阵指令解析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109799963A CN109799963A (zh) | 2019-05-24 |
CN109799963B true CN109799963B (zh) | 2022-06-07 |
Family
ID=66560213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910068443.7A Active CN109799963B (zh) | 2019-01-24 | 2019-01-24 | 微型打印机点阵指令解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109799963B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5293466A (en) * | 1990-08-03 | 1994-03-08 | Qms, Inc. | Method and apparatus for selecting interpreter for printer command language based upon sample of print job transmitted to printer |
US5982996A (en) * | 1997-03-13 | 1999-11-09 | Hewlett-Packard Company | Mechanism for printer driver switching in windows operating systems to allow distribution of print jobs to an output device from a single print request within an application |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AUPQ905800A0 (en) * | 2000-07-28 | 2000-08-24 | Canon Kabushiki Kaisha | Rendering page descriptions |
US7271822B2 (en) * | 2004-07-28 | 2007-09-18 | Hewlett-Packard Development Company, L.P. | Seamless stitching of multiple image fields in a wide-format laser printer |
JP2010130463A (ja) * | 2008-11-28 | 2010-06-10 | Oki Data Corp | 印刷データ生成装置、印刷装置、及び、印刷データ処理システム |
CN104932846B (zh) * | 2015-06-08 | 2018-03-09 | 中国人民解放军91872部队 | 一种测试设备的俄文字符打印输出方法 |
-
2019
- 2019-01-24 CN CN201910068443.7A patent/CN109799963B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5293466A (en) * | 1990-08-03 | 1994-03-08 | Qms, Inc. | Method and apparatus for selecting interpreter for printer command language based upon sample of print job transmitted to printer |
US5982996A (en) * | 1997-03-13 | 1999-11-09 | Hewlett-Packard Company | Mechanism for printer driver switching in windows operating systems to allow distribution of print jobs to an output device from a single print request within an application |
Also Published As
Publication number | Publication date |
---|---|
CN109799963A (zh) | 2019-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1381945B1 (en) | Method and system for reporting xml data based on precomputed context and a document object model | |
CN107015948B (zh) | 一种日志信息格式化方法及系统 | |
US10628403B2 (en) | Annotation system for extracting attributes from electronic data structures | |
US20030110481A1 (en) | Program tuning method | |
JP5374932B2 (ja) | プリンタ、プリンタの制御方法及び動作制御プログラム | |
CN107688591A (zh) | 一种精算处理方法和装置 | |
CN115291967B (zh) | 航天数据分析方法、装置和电子设备 | |
US7200811B1 (en) | Form processing apparatus, form processing method, recording medium and program | |
CN109002425B (zh) | 企业上下游关系的获取方法、终端设备及介质 | |
CN108334622A (zh) | 一种获取格式化复合数据的方法 | |
CN109799963B (zh) | 微型打印机点阵指令解析方法 | |
US20120151441A1 (en) | Efficient generation of executable file from program files when some of the program files expressly incorporate other program files | |
CN103514670B (zh) | 税控清单防伪系统及方法 | |
CN108427580A (zh) | 配置对命名重复的检测方法、存储介质和智能设备 | |
US20050015358A1 (en) | Method of automatically recognizing configuration information units of experimental data and patterns of array rules and storage medium therefor | |
CN110413659B (zh) | 通用购物小票数据精准提取方法 | |
CN114371762A (zh) | 一种打印定制标签的方法、装置和存储介质 | |
CN113676290A (zh) | 一种基于基金系统的数据传输方法及相关设备 | |
CN113127408A (zh) | 数据转换方法及装置 | |
CN107612919B (zh) | 协议配置方法及装置 | |
CN113361256A (zh) | 一种基于Aspose技术的Word文档快速解析方法 | |
CN111125225A (zh) | 账单数据解析方法、装置及服务器 | |
CN110825376B (zh) | 一种解析带注释json文件的方法、存储介质及装置 | |
CN111968022B (zh) | 一种基于json配置方式的业务编号生成系统及方法 | |
CN113723301A (zh) | 一种进口货物报关单ocr识别分行处理方法及装置 |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220509 Address after: No. 18 Ningshuang Road, Yuhuatai District, Nanjing City, Jiangsu Province, 210012 Applicant after: Nanjing qinheng Microelectronics Co.,Ltd. Address before: No. 18 Ningshuang Road, Yuhuatai District, Nanjing City, Jiangsu Province, 210012 Applicant before: JIANGSU QINHENG Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |