Test.txt内容:
参考打印到文档功能:
初识打印机驱动
http://www.cnblogs.com/MrDing/p/4078189.html
热敏打印头打印原理和C实现黑白位图的放大
https://www.jianshu.com/p/c754bfa377e4
ascii码 :
十六进制 | 十进制 | 字符 | 含义 |
---|---|---|---|
0a | 10 | \n | LF |
0d | 13 | \r | CR |
1b | 27 | esc | |
1d | 29 | gs |
热敏打印机参数:
首先佳博GP-L80180I票据打印机技术参数
打印方式 | 直接热敏式 |
---|---|
打印密度 | 576点/行或512点/行 |
打印速度 | 180毫米/秒 |
接口类型 | 串口+USB+网口 |
打印纸宽 | 79.5±0.5毫米 |
纸张厚度 | 0.06~0.08毫米 |
纸卷外径 | 83毫米 |
可靠性 | 100公里 |
使用字库 | 简体中文GB18030大字库 |
条形码类型 | UPC-A/UPC-E/JAN13(EAN13)/JAN8(EAN8)/CODE39/ITF/CODABAR/CODE93/CODE128 |
字符大小 | ANK字符:FontA:12×24点 FontB:9×17点 简体/繁体:24×24点 |
打印命令 | 兼容ESC/POS命令 |
log与流程的对应关系:
对应的代码如下:
// 打印头宽度约为 80mm 的打印函数
BOOL USB_GPL801_PrintInStandardMode80(void)
{
int ret ;
ret = VC_POS_Reset();
printf("VC_POS_Reset ret = %d\r\n",ret);
VC_POS_FeedLine();
VC_POS_FeedLine();
//VC_POS_PreDownloadBmpToRAM("a.BMP",3);
ret = VC_POS_PreDownloadBmpToRAM("Kitty.bmp",3);
printf("VC_POS_PreDownloadBmpToRAM ret = %d\r\n",ret);
int nRet = VC_POS_SetMotionUnit(180, 180);
if(POS_SUCCESS != nRet)
{
return false;
}
VC_POS_SetMode(POS_PRINT_MODE_STANDARD);
VC_POS_FeedLine();
VC_POS_FeedLine();
VC_POS_FeedLine();
VC_POS_S_TextOut("通行卡ID:", 70, 1, 1, POS_FONT_TYPE_CHINESE,
POS_FONT_STYLE_NORMAL);
VC_POS_S_TextOut("3303000012345678", 190, 1, 1, POS_FONT_TYPE_CHINESE,
POS_FONT_STYLE_NORMAL);
VC_POS_FeedLine();
VC_POS_S_TextOut("入口时间:", 70, 1, 1, POS_FONT_TYPE_CHINESE,
POS_FONT_STYLE_NORMAL);
VC_POS_S_TextOut("2018-04-20 10:10:10", 190, 1, 1, POS_FONT_TYPE_CHINESE,
POS_FONT_STYLE_NORMAL);
VC_POS_FeedLine();
VC_POS_S_TextOut("金额:", 70, 1, 1, POS_FONT_TYPE_CHINESE,
POS_FONT_STYLE_NORMAL);
VC_POS_S_TextOut("86.00元", 190, 1, 1, POS_FONT_TYPE_CHINESE,
POS_FONT_STYLE_NORMAL);
VC_POS_FeedLine();
VC_POS_S_TextOut("车牌:", 70, 1, 1, POS_FONT_TYPE_CHINESE,
POS_FONT_STYLE_NORMAL);
VC_POS_S_TextOut("鲁A66001[蓝色]", 190, 1, 1, POS_FONT_TYPE_CHINESE,
POS_FONT_STYLE_NORMAL);
VC_POS_FeedLine();
VC_POS_FeedLine();
//VC_POS_S_PrintBmpInRAM(3,20,POS_BITMAP_PRINT_NORMAL);
VC_POS_S_PrintBmpInRAM(3,20,POS_BITMAP_PRINT_QUADRUPLE);
VC_POS_FeedLine();
VC_POS_FeedLine();
VC_POS_FeedLine();
VC_POS_FeedLine();
VC_POS_FeedLine();
VC_POS_FeedLine();
// 切纸
VC_POS_CutPaper(POS_CUT_MODE_FULL, 0);
return TRUE;
}
设置的太小,容易丢数据
log如下:
打印出来的效果如下:
下面开始分析:
1b 40
0a 0a —– 两次换行
1d 23 03
应该是 定义 ID号为03
1d 2a 10 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
x = 0x10
y = 0x06
下面的是位图数据:
101x46像素
这个文件头 54个字节 可能是理解不对
发送的数据 和 bmp 的数据 有点不一致 ,有空分析一下
16 x 6 x 8 = 768个字节
24 x 32 = 768 字节
继续下面的操作:
1d 50 b4 b4 1b 53 0a 0a 0a
1b 24 46 00 1b 4d 03
1d 42 00
1d 62 00
1d 21 00
1b 45 00
1b 7b 00
1b 2d 00
1c 2d 00
1b 56 00
cd a8 d0 d0 bf a8 49 44 3a
1b 24 be 00
1b 4d 03
1d 42 00
1d 62 00
1d 21 00
1b 45 00
1b 7b 00
1b 2d 00
1c 2d 00 1b 56 00
33 33 30 33 30
30 30 30 31 32 33 34 35 36 37 38 0a
1b 24 46 00
1b 4d 03 1d 42 00 1d 62 00 1d 21 00 1b 45 00 1b
7b 00 1b 2d 00 1c 2d 00 1b 56 00
c8 eb bf da ca b1 bc e4 3a
1b 24 be 00 1b 4d 03 1d 42 00 1d 62
00 1d 21 00 1b 45 00 1b 7b 00 1b 2d 00 1c 2d 00 1b 56 00
32 30 31 38 2d 30 34 2d 32 30 20 20 31
30 3a 31 30 3a 31 30 0a
1b 24 46 00 1b 4d 03 1d 42 00 1d 62 00 1d 21 00 1b 45 00 1b 7b 00 1b 2d
00 1c 2d 00 1b 56 00 bd f0 b6 ee 3a
1b 24 be 00 1b 4d 03 1d 42 00 1d 62 00 1d 21 00 1b 45 00 1b
7b 00 1b 2d 00 1c 2d 00 1b 56 00 38 36 2e 30 30 d4 aa 0a
1b 24 46 00
1b 4d 03 1d 42 00 1d 62 00
1d 21 00 1b 45 00 1b 7b 00 1b 2d 00 1c 2d 00 1b 56 00 b3 b5 c5 c6 3a
1b 24 be 00
1b 4d 03 1d 42
00 1d 62 00 1d 21 00 1b 45 00 1b 7b 00 1b 2d 00 1c 2d 00
1b 56 00
c2 b3 41 36 36 30 30 31 5b c0
b6 c9 ab 5d 鲁A66001[蓝色]
0a 0a
1b 24 14 00 1d 23 03 1d 2f 03 0a 0a 0a 0a 0a 0a 1d 56 00
1d 50 b4 b4
1b 53
1b 24 46 00
0x46 = 70
1b 4d 03 选择中文 字体
1d 42 00
1d 62 00 —- 这个不知道
1d 21 00
1b 45 00
1b 7b 00
1b 2d 00
1c 2d 00
1b 56 00
cd a8 d0 d0 bf a8 49 44 3a
http://www.mytju.com/classcode/tools/encode_gb2312.asp
1b 24 be 00
VC_POS_S_PrintBmpInRAM(3,20,POS_BITMAP_PRINT_QUADRUPLE);
1b 24 14 00
1d 23 03 --- 选择ID 03
1d 2f 03 0a 0a 0a 0a 0a 0a 1d 56 00
1d 2f 03
1d 56 00
《佳博热敏票据打印机编程手册.pdf》有二维码指令
page49