前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >驯服蓝牙打印机2-打印图片指令

驯服蓝牙打印机2-打印图片指令

作者头像
加菲猫的VFP
发布2021-08-16 14:35:48
1K0
发布2021-08-16 14:35:48
举报
文章被收录于专栏:加菲猫的VFP

1 查看图片打印文档

可以得出几个参数

指令开始的头为 1B 2A

m 的值是分辨率,我们使用 33 ,也就是 22DPI的密度来打印

nL nH为图片的宽度

nL用1字节来存放低位的数据

nH用1字节来存放高位的数据

不知道字节的,好好复习一下计算机的容量单位.

举例说明

100像素宽的图片

nL=100%256

nH=int(100/256)

d1-dk 是图片的真实数据存放地方了

k的大小是由m,nL,nH来决定的.

当m=33时

k=(nL+nHx256)x3

举例说明,刚刚100像素宽的图片

k=(100+0x256)x3=300

也就是说图片数组的大小为300个

2 数组的里面放什么数据?

可到了这里,这个数组的大小是知道了,里面放什么可不知道.不着急,我们继续往下看

因为我们选的是m=33,因为打印头是坚向排列的,一次是24个点.

数据d是一个字节,只有8位.

24个点,就是 d1 d2 d3来表示打印出一竖

也就是说

d1 d2 d3 第一竖

d4 d5 d6 第二竖

....

d(k-2) d(k-1) dk 最后一竖

d=8位都是1=0XFF

代表8个像素都是黑点

d=8位都是0=0X00

代表8个像素都是白点

如果我要打印100排黑点

d1-d300 通通都是0XFF

3 最后放上程序代码

代码语言:javascript
复制
*--打印出一个100x24像素的黑条
*--头指令为5位数组,图像数组长度为100*24/8
Dimension imgdata[100*24/8+5]
k=1
*--图片头指令
imgdata[k] = 0x1B
k=k+1
imgdata[k] = 0x2A
k=k+1
imgdata[k] = 33 &&十六进制 0x21 
k=k+1
imgdata[k] =100%256 &&nL 图像宽度,低位
k=k+1
imgdata[k] =INT(100/256) &&nH,图像宽度,高位
k=k+1
*--nL+nHx256 图片宽度,(nL+nHx256)x3 图片数据
For i=1 To 100
For j=1 To 3
imgdata[k]=0xFF
k = k + 1
Endfor
Endfor
Set Library To MYFLL
HCOM1=COMOPEN(14,"9600,N,8,1")
If HCOM1==""
?"端口打开失败"
Return
Endif
writearray(HCOM1,@imgdata,k)
COMWRITE(HCOM1,Chr(10))&&换行输出
COMCLOSE(HCOM1) &&关闭端口
*--将数组输出
Function writearray
Lparameters mycom,myarray,k
For lni=1 To k-1
COMWRITE(mycom,Chr(myarray[lni]))
Endfor
Endfunc
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲猫的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 查看图片打印文档
  • 2 数组的里面放什么数据?
  • 3 最后放上程序代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档