Gprinter热敏打印机光栅位图点阵数据解析工具

    最近参与的项目有一个需求,解析佳博热敏打印机的光栅位图点阵数据并保存为图片文件。数据是通过Bus Hound抓取的,如下图所示。

  其中1b 40为初始化打印机的指令,对应的ASCII码为ESC @,1b 4a 18为打印并走纸的指令,对应的ASCII码为ESC J,1d 76 30为打印光栅位图的指令,对应的ASCII码为GS v 0,其后紧跟光栅位图模式(0x00)、水平方向位图字节数(0x0036)和垂直方向位图点数(0x0018),后面则为本帧的位图数据(0x36*0x18=1296字节)。数据文件后续以1b 4a 18的打印走纸帧和1d 76 30的位图数据帧循环往复,直至打印内容结束。

  数据解析是关键一环,同时还需要考虑光栅位图点阵数据的无损压缩并评估压缩效率。为了直观显示解析后的图像和相关信息,并保存成bmp和png格式的图片,基于MFC写了一个小工具,界面如下图所示。

  窗口左侧白色区域显示解析后的图像,右侧显示原始数据的信息及生成的Zip包、Bitmap及PNG图片的信息。为了方便调试,数据文件支持通过Bus Hound抓取的txt,原始的光栅位图点阵数据,及其它们的zip压缩包,只需将文件拖拽到窗口内部即可完成解析。生成Bitmap时,支持选择扫描的方向,并可选择生成原始数据的二进制文件(Plain Binary)、经过zip压缩的原始数据的二进制文件以及剔除原始数据中ESC指令的纯数据文件(Pure Data)。

  解析点阵数据后的图像及相关信息如下图所示。

  在将光栅位图点阵数据保存为Bitmap时,需要特别注意,如果水平方向位图字节数不是4的整倍数,则需要扩展到4的整倍数才可以。如本例中原始宽度为54字节,需扩展到56字节,扩展后的像素宽度为448(56*8)。另外,原始光栅位图点阵数据是从上到下(Top-Down)排列的,如果生成Bitmap时选择同向扫描,则BITMAPINFOHEADER结构体中biHeight需为负数,而一般的Bitmap文件为从下到上扫描(Bottom-Up),与原始数据排列方向刚好相反,此时biHeight为正。可以看到经过zip压缩后的数据约为原有大小的1/5。PNG图片大小也约为BMP的1/5,但通过Beyond Compare工具比较,图像并未有任何损失,如下图所示。

  本次任务基本完成并达到预期效果。第一次接触热敏打印机,算是有了一个初步的认识,后面有时间可以考虑把这个事情反过来做一遍,即把任意图片文件转换为光栅位图点阵数据,这样就可以打印二维码或其他复杂图像了。

时间: 2024-09-29 05:13:13

Gprinter热敏打印机光栅位图点阵数据解析工具的相关文章

21款超实用的酷炫「数据可视化工具」

  辛辛苦苦分析一堆大数据,竟然没人看!到底怎么办?俗话说,有图有真相,一图胜千言,取悦了眼球,剩下的都好说.如果你正着手于从数据中洞察出有用信息,那你所需要的正是--数据可视化.本文挖掘了21款炙手可热的数据可视化工具,干净利落的高颜值信息图,就要这样做! 译者微信公众号:特赞Design,欢迎关注唷. FusionCharts FusionCharts Suite XT不仅可以为带给你漂亮的图表,还能帮你制作出生动的动画.巧妙的设计和丰富的交互性.它在PC端.Mac.iPad.iPhone和

Android网络之数据解析----使用Google Gson解析Json数据

[正文] 文章回顾: Android网络之数据解析----SAX方式解析XML数据 一.Json数据的介绍                                                                                                                 Json(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JS的一个子集. Json采用完全独立于语言的文本格式,这使得Jso

Linux 数据可视化工具

Linux 上用来实现数据的图形可视化的应用程序有很多,从简单的 2-D 绘图到 3-D 制图,再到科学图形编程和图形模拟.幸运的是,这方面的工具有很多开放源码实现,包括 gnuplot.GNU Octave.Scilab.MayaVi.Maxima 等.每个工具都有自己的优缺点,并且都是针对不同的应用程序而设计的.对这些开放源码图形可视化工具进行一下探索,有助于我们更好地决定哪个工具最适合我们的应用程序. 内容 Gnuplot GNU Octave Scilab MayaVi Maxima 展

免费才是王道:盘点开发者须知的25个免费数据可视化工具

原文 http://www.csdn.net/article/2013-05-10/2815214-free-data-visualization-25-best-tools 摘要:数据可视化可以帮助人们直观的从数据中获得信息,其作用可见一斑.然而数据可视化的过程却并不是件容易的事情,这里给大家分享多个领域可以用到的25个免费数据可视化工具. 如果你还没意识到许多工具可以帮助你完成这项工作,数据可视化可能会成为一个非常头痛的问题.数据可视化的宗旨是借助图形化手段,让人们更 容易的去理解数据.数据

iOS开发之网络数据解析(二)--XML解析简介

前言:本篇随笔介绍的是XML解析.   正文:   1.XML解析方式有2两种: DOM:一次性将整个XML数据加载进内存进行解析,比较适合解析小文件 SAX:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件   2.IOS中XML解析方案有很多种: 2-1.第三方框架: libxml2:纯C语言,默认包含在iOS SDK中,同时支持DOM和SAX解析 GDataXML:DOM方式解析,由Google开发,基于libxml2 2-2.苹果原生 NSXMLParser:SAX方式解

你会用吗?Linux五大数据可视化工具

可视化工具的简短列表 在本文中,将对很多流行的 Linux 数据可视化工具进行一下调查,并对其中一些工具进行更深入的探讨.例如,某个工具是否为进行数值计算而提供了一种语言?这个工具是交互式的还是提供了一种批处理模式来单独进行操作?可以使用这个工具进行图像或数字信号处理吗?这个工具是否提供了语言绑定来支持与用户应用程序的集成(例如 Python.Tcl.Java 编程语言等)?另外还将展示一些工具的图形化处理能力.最后,将分析每个工具的长处,从而帮助我们确定哪个工具最适合完成计算任务或数据可视化.

Java:JSON解析工具-org.json

一.简介  org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,现在就各个类的使用解释如下.  二.准备  1.在使用org.json之前,我们应该先从该网址https://github.com/douglascrockford/JSON-java下载org.json源码,并将源码其加入到Eclipse中,即可调用.  2.查看相关的API文档,访问:https://github.com/douglascrockford/JSON-java. 

[开源]C#二维码生成解析工具,可添加自定义Logo

原文:[开源]C#二维码生成解析工具,可添加自定义Logo 二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,中文等等.今天就来跟大家分享一下我的二维码生成解析工具,主要功能就是生成二维码,并且可以添加自定义的Logo.当然,网络上面生成二维码的工具多如牛毛,生成二维码早已不再新鲜.这个工具的一个亮点就是可以识别二维码,下面就来具体看看吧

[开源]C#二维码生成解析工具,可添加自定义Logo (转)

  二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,中文等等.今天就来跟大家分享一下我的二维码生成解析工具,主要功能就是生成二维码,并且可以添加自定义的Logo.当然,网络上面生成二维码的工具多如牛毛,生成二维码早已不再新鲜.这个工具的一个亮点就是可以识别二维码,下面就来具体看看吧,不过首先要补充一点二维码的知识. 一.二维码基础知识