打印
[应用相关]

STM32热敏打印机打印二维码

[复制链接]
336|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-10-23 12:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是炜煌WH-A9热敏打印机。

要打印二维码首先要生成二维码,借鉴了站内二维码生成库:简谈二维码(QRcode)的C语言生成,在单片机平台的实现_二维码c语言-CSDN博客

只需要移植其中的三个文件data_type.h,QR_Encode.c和QR_Encode.h。

移植之后包含头文件,使用函数EncodeData(char *lpsSource),参数就填写要转为二维码的字符串,生成的数据为0和1,保存在全局变量的二维数组m_byModuleData中。         

参数MAX_MODULESIZE可以根据要生成二维码的字符长度来调整,代码中有注释。

到这里数据有了,接下来开始打印。

我在这里用的是 打印点行图形 命令,格式如下:





n1只有最低两位有效,用来修改倍高倍宽打印,n2是每一点行打印的字节数,可以填m_nSymbleSize。

这个命令一次只能打印一点行,需要循环打印。

注意:

        这个库生成的数据,一个字节打一个点,我这里将其改为八个点,也就是遍历一下数组,将

0x01全改为0xFF,这样打印出来的二维码很扁,配合倍高或倍宽命令倒是可以进行扫描。

        为了解决过扁的问题,我在每次循环打印的时候将同一点行数据打印了四遍,这样打印出来的效果还可以,起码看着是个二维码了方方正正的。

遍历数组:

for(int i=0;i<sizeof(m_byModuleData);i++){
                for(int j=0;j<sizeof(m_byModuleData);j++){
                        if(m_byModuleData[j]==0x01)
                        {
                                m_byModuleData[j]=0XFF;
                        }
                }
        };
循环打印:

        for(int i=0;i<m_nSymbleSize;i++){
                for(int j=0;j<4;j++){//串口发给打印机 打印
                 //这里放打印指令和要打印的数据
                }
        }


————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_40637013/article/details/143054568

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2028

主题

15902

帖子

13

粉丝