我用的是炜煌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
|