【定义用户自定义字符】
格式: ASCII: ESC & m n1 n2...ni
10进制: 27 38 m n1 n2...ni
16进制: 1B 26 m n1 n2...ni
分为汉字16点阵和24点阵两种类型
这个命令允许用户定义一个字符, m是该用户自定义字符码,32≤m≤61。参数n1,n2,...ni是这个字符的结构码。其中i需要根据所用微打的汉字打印类型而定:
请教这个怎么使用m值是什么 哪里看 字符的结构码哪里查 比如我想打一个辽字
格式: ASCII: ESC & m n1 n2...ni
10进制: 27 38 m n1 n2...ni
16进制: 1B 26 m n1 n2...ni
分为汉字16点阵和24点阵两种类型
这个命令允许用户定义一个字符, m是该用户自定义字符码,32≤m≤61。参数n1,n2,...ni是这个字符的结构码。其中i需要根据所用微打的汉字打印类型而定:
请教这个怎么使用m值是什么 哪里看 字符的结构码哪里查 比如我想打一个辽字
这样打印出来的字体比数字大很多 数字应该是 6x8的 点阵 汉字好像是12*12或者16*16的我使用的是m-150ii微型打印机 还有就是 我打印出来的 0是中间带斜杠 如果我想打印中间带点的如何打印我想使用自定义的字符 还不知道如何弄 请大家帮忙 谢谢
1.把英文字符搞大comport1.writestr(#$1D'!'#0'辽宁'#$1D'!'#17'0123456789');
辽宁是用普通高宽打GS ! #0(对应16进制1D 21 00),英文及数字部分2倍高宽打GS ! #17(对应16进制1D 21 11)2.加个TImage在窗体里,用mImage.Canvas.TextOut(x,y,'辽宁0123456789');等语句把待打印内容“画”出来
然后用下列方法输出位图var
i,j: integer;
f: TextFile;
p: pByteArray;
begin
Assignfile(f,'LPT1');
rewrite(f);
write(f,#$1b'@'); //初始化打印机
write(f,#$1b'3'#49); //49/144inch
//打印区域设置,定义左起点及总宽度,我那个热敏打,基本上把可用的纸空间都用上了
write(f,#$1d#$4c#1#0);//左边20个点开始打印
write(f,#$1d#$57#100#2);//最大612个点 write(f,#$1d#$76#$30#3); //位图打印模式
i := mImage.Width div 8;
write(f,chr(i mod 256));
write(f,chr(i div 256));
i := mImage.Height;
write(f,chr(i mod 256));
write(f,chr(i div 256));
for i:=0 to mImage.Height-1 do
begin
p := mImage.ScanLine[i];
for j:=0 to (mImage.Width div 8)-1 do
write(f,chr(not p[j]));
end; write(f,#$1b#$64#5#$1d'V'#1); //走纸+切纸
closefile(f);
end;上例是我写的并口热敏打印机代码,你把相应的write(f, 换成串口输出代码。
你主要参考里面所使用的相关命令、位图打印命令及读取Image的canvas的方法,改改应该就可以用的。另:image的相关代码
mImage := TBitMap.Create;
mImage.PixelFormat := pf1bit; mImage.Height := 100;
mImage.Width := 304; mImage.Canvas.Font.Style := [];
mImage.Canvas.TextOut(10,0,'辽宁0123456789');
//其它的待打印内容