可以得出几个参数
指令开始的头为 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个
可到了这里,这个数组的大小是知道了,里面放什么可不知道.不着急,我们继续往下看
因为我们选的是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
*--打印出一个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