求助POS小票打印图片!(200)

Z

zzf888

Unregistered / Unconfirmed
GUEST, unregistred user!
串口直接打印,无驱动!安装驱动可以打印,但在我的T88II上打印完成图片就切纸了!没办法应用下面是其它公司的参考资料,但我理解不了。请大家帮忙! QQ:96491 图形打印命令 ESC K [ 打印点阵图形 ] 格式: ASCII : ESC K n1 n2 …data… 十进制: 27 75 n1 n 2…data… 十六进制: 1B 4B n1 n2 …data… 说明: 该命令打印 n1 ×8 点阵图形。该图形的宽度为 n1 点,高度为 8 点。每一列的 8 个点可以由一个 8 位的字节来表示,最高位在上。 n1 ,n2 的数值代表一个 16 位的二进制数 , , n1 为低 8 位字节, n2 为高 8 位字节,表示 ESC K 命令要打印的图形宽度为 n2 ×256+n1 。新荣达微打: n2 应是 0 或 1 ,点数之和小于等于 384 ,若超出则自动清除。 n1 应在 1 到该机型的每行最大点数之间。 Data 是该点阵图形从左到右每列的字节内容 . 字节数应等于 n1 。 注:新荣达微打在连续发送两次或两次以上图形命令后,打印出的图形与第一列对齐自动迭加,且宽度可以不同,可以与任何字符一起混打。 当图形的高度大于 8 点时,可按每 8 点行一个图形单元划分成多个单元。不足 8 点的用空点补齐。然后按顺序每个图形单元分别用 ESC K 命令打印出来,最后组成一个完整的图形。 注意: 当采用反向打印方式时,要按图形从下到上的顺序依次打印每个图形单元。 例如:用 ESC K 命令打印两个汉字“中文”这两个汉字的点阵如下图所示。每个字符由 7 × 8 点阵组成有 7 列。两字符之间有一空格,因此共有 15 例,于是 n1=15, n2=0,15 个字节的数据以十六进制表示如下: 7C,44,44,FF,44,44,7C,00,41,62,54,C8,54,62,41. 关于这个例子的 BASIC 程序如下: 10 LPRINT CHR $(27) ;“ W ”; CHR$(2) ; ‘横向纵向放大 2 倍 20 LPRINT CHR $ ( 27 );“ K ”; CHR$ ( 15 ); CHR$ ( 0 );‘ ESC K 命令 30 FOR I=1 TO 15 40 READ D : LPRINT CHR $ ( D ) ‘输入 15 个字节数据 50 NEXT I 60 LPRINT CHR$ ( 13 ) ‘输入 CR 70 DATA &H7C , &H44 , &H44 , &HFF , &H44 , &H44 , &H7C , 0 80 DATA &H41 , &H62 , &H54 , &HC8 , &H54 , &H62 , &H41 在 MP-A153-8+ 上的打印结果如下:
 
Z

zzf888

Unregistered / Unconfirmed
GUEST, unregistred user!
真的没有人做过嘛?
 
Z

zzf888

Unregistered / Unconfirmed
GUEST, unregistred user!
有人做过嘛?
 
H

haidy

Unregistered / Unconfirmed
GUEST, unregistred user!
我也找了很久,找不到解决方法,帮你顶
 
Y

yuxiaoxue

Unregistered / Unconfirmed
GUEST, unregistred user!
没POS机,没测试过。但应该和针打一样操作,给出我的想法供参考。1、对要打印的图片进行处理: 对图片进行剪裁,小于Pos机的打印能力,宽度和高度 处理色彩,转换成黑白二色图片2、将图片转换成打印数据 按8行象素转换成一次打印数据 1AAAA... 2AAAA... 3AAAA... 4AAAA... 5AAAA... 6AAA... 7AAAA... 8AAAA.. 9AAAA.. .... 第一行对应一个字节的最高位即第7位,第八行对应一个字节的最低位即0位,图片的黑色点对应二进制位的1,白色对应0(当然反过来也可以),按列转换成字节数据。 每8行转成一个字节数组,如果最后不够8行则补成8行处理,也可以丢弃(图片少了一块)3、打印图片 计算n1,n2的值,图片的宽度整除256放入n2,余数放入n1 向打印机写打印命令ESC K n1 n2 生成的字节数据 重复打印..直到打印完成
 
Z

zzf888

Unregistered / Unconfirmed
GUEST, unregistred user!
感谢大家!完成了!但由于数据里比较大使用9600速度打印一个450*450的图片需要 26秒.....用19200可以提高到13秒左右,但我不太知道怎么样不用控件动态设置波特率!
 
Z

zzf888

Unregistered / Unconfirmed
GUEST, unregistred user!
yuxiaoxue 兄弟,我给分时点错了!你加我QQ我再开个贴子给你加分!请说POS小票打印,加的人太多不一定会看到!
 
H

haidy

Unregistered / Unconfirmed
GUEST, unregistred user!
哈哈,我捡到了。不如这样,zzf888,你把代码贴出来。我开贴给回分你?
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
990
DelphiTeacher的专栏
D
D
回复
0
查看
840
DelphiTeacher的专栏
D
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部