【定义用户自定义字符】
格式: 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值是什么   哪里看  字符的结构码哪里查 比如我想打一个辽字

解决方案 »

  1.   

    因为我直接 comport1.writestr('辽宁0123456789');
    这样打印出来的字体比数字大很多  数字应该是  6x8的   点阵   汉字好像是12*12或者16*16的我使用的是m-150ii微型打印机 还有就是  我打印出来的 0是中间带斜杠  如果我想打印中间带点的如何打印我想使用自定义的字符  还不知道如何弄  请大家帮忙  谢谢 
      

  2.   

    我看了下,有2个解决方案
    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');
    //其它的待打印内容
      

  3.   

    1、我不想使用放大的那种  想要 汉字缩小和数字一样大2、具体  ESC &这个自定义的命令谁会用呢  帮忙给个例子  继续等待  谢谢   给大家拜年  大家过年好哈,龙年大吉大利,多多发财!
      

  4.   

    手头没打印机了,没法试,ESC &没法帮你了,不过。我给的第二种方法还是可以的.