ESC/POS指令的热敏小票打印机打印bmp纪要

为了在小票上打印二维码,折腾了好多天,终于搞定了,现将关键点做个记录。

  • 二维码的打印,首先是根据内容生成二维码bmp图片,这个我是通过网上找的一个叫qrencode的lib实现的,生成的bmp为24位的图片,我花费好多天没有成功的原因首先就是没搞清ESC/POS指令中关于位图打印的命令需要的是单色位图数据,还有对于命令中的宽度高度等参数没有搞清什么nL,nH的含义,原来是用两个自己来表示的一个数值(低8位和高8位,所以一般传的值就是x%256和x/256),搞清了这两点就是成功的关键。所以需要在qrencode生成的bmp基础上对位图进行调整后才能满足打印命令的需要。
  • 第一步就是对生成的24位二维码bmp进行尺寸修正,这个要视小票宽度来定,比如58mm的纸一般384点/行,两边预留一点的话,基本上最大就是344(此值一般定义为8的倍数,否则打印时补的位会是黑块),所以在调整时对于原始的bmp超过此值的话需要进行缩放至此值(bmp缩放可自行搜索,这个简单),调整好宽度后,再将24位图转换为单色图(1位,这个也不难)。
  • 经过第一步的调整后就可以读取并打印bmp了。我使用的是GS v 0 m xL xH yLyH d1...dk 这个命令来打印的,直接上代码了。此打印函数支持58mm和80mm,_nPaperType=0表示58mm,1表示80mm。其中的Write函数是向打印机写数据的。Feed是调用Write打印空行的。如下:

void printBmp(LPCSTR _file, BOOL _bCenter, int _nPaperType)
{
    long lWidth, lHeight;

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值