010-62105070 EN

常见问题

FAQ

您当前的位置:首页 > 技术服务 > 常见问题

指令问题汇总

1.问题:MP-A24-8如果打印空格,我就发个A2A2字符,但前几天我有买了个串口打印机,也是打空格,发的也是A2A2,但有时打印出来的就乱码,打印汉字正常最近用的这个是RD-A16-SN?
1.问题:MP-A24-8如果打印空格,我就发个A2A2字符,但前几天我有买了个串口打印机,也是打空格,发的也是A2A2,但有时打印出来的就乱码,打印汉字正常最近用的这个是RD-A16-SN?

回答:A1 A1是空格,A2 A2那个区是空区,打的是乱码的。以前的老的好用因为在处理空区字符的时候,数据取的都是0,现在的不是,不一定取什么了,所以会出现乱码。

2.问题:RD系列打印机如何清空打印缓存器?

回答:1B 40清空的是打印缓冲区,时间很短。后面可以紧跟打印命令。打印机不清空自身的数据接受缓冲区,只是清空当前的打印缓冲区。可以这样测试 31 32 1B 40 0D,前面的2个字符是打印不出来,只要前面打印的数据不满一行,就都能被1B 40清掉,如果满一行就会被打印出来。

3.问题:你那打印的图片长度是384、能不能自动调节?一行的长度是384,你如果不够384的话是不是要用0补齐?那现在如果我想打印一个20*20PS的图片?

回答:打印的图片的长度是由程序来给出的,程序给多长就会打印多长。

不够384点不用0补齐,打印图形的长度可以是小于最大值的任意长度。

1B 4B 80 01其中  80 01 就是表示的图片长度 80是十六进制的低8位,01是十六进制的高8位 0x80+0x01 × 256 =384。打印机是根据这两个值来确定图片的长度的。图片宽度为20,那麽就可以写成1B 4B 14 00。后面跟20个字节的数据,然后跟一个回车0x0d,因为不满一行,如果后面再跟图形命令就会继续在这一行打印,直到多有图形的宽度超过384点。但是高度只能为8的倍数,也就是说图片不能20个点高,得调整为24个点高。分3次发送1B 4B的命令,就可以打印出20×24的图形了。

4.问题:(热敏)微型打印机, 如何打印坐标系?我想打印坐标系的同时 还要把曲线打印出来?现在只能做到一个两不能同时打印出来?

回答:用图形来填点、用程序来算才行

5.问题:RD-EH32-SN是否每次打印时都要用1b 40 初始化?电源开启后默认字符集是英文的吗?默认字符大小?

回答:打印机每次上电开机后发送1B 40或者在每个单据数据最开始部分发送1B 40 ,

打印机默认的是打印汉字和字符的,如果收到的字符内码小于0x80打印ascII字符,大于0x80 并且后面紧跟的字节数据也是大于0x80的将打印汉字,汉字是24X24点阵,ASCII码是12X24点阵。

6.问题:命令是否可以连续发送设置(如:1b 40 1b 72....)?发送完命令后是否需要等待再发送需要打印的字符?

回答:可以连续发送,但是在一个表单里只需要在最开始发送而且只发送一次,打印完一张表单后,可以重复上面的操作。

7.问题:您好,我买了你们公司RD-E32-458系列的微型打印机,在测试打印汉字时遇到问题,请问如果汉字和ASCII字符混打,ASCII字符前要加00凑成2字节吗?

回答:内码大于0x80的字符,要麽用命令切换到asc状态打印(24点阵命令为1C 38 ),要麽在字符前或字符后加0x00。

8.问题:RD-TH32-SC_24,打印μ发什么代码,如何发?

回答:有三种打法:1、1C 38 E6   2、直接发送E6 00  3、1B 36 A9

注:24 点阵的要打印不可见字符(80H后字符)需用命令1C 38 来打印,1C 38命令相当于16点阵的1B 38 6调用ASCII集。

00不打印,如打印 123u,则发送如下代码。31 32 33 E6 00 0D, 或31 00 32 00 33 00 E6 00 0D 两都结果一样。

9.问题:在Windows CE系统下怎样打印照片?照片是彩色的,应该通过串口给打印机发什么命令,怎么发命令才能够打印出灰度照片?

回答:只能打印黑白图片, 我们的打印机,没有灰度的打印,是驱动在取图的时候,颜色淡的地方相应的点密度小而已。

10.问题:能帮我写这段小程序吗?只要给数组赋值的部分就行,串口初始化部分就不用了,谢谢?

性别:男

年龄20

回答: char Str[]={"性别:男\r\n年龄20\r\n"}。

11.问题:你好,我的打印机打印条码有点问题。如下单片机晶振8M,9600波特率,打印时格式为:

条形码

价格数字

连续循环打印多次。

有两个问题存在:

(1)打印条码后不加回车(0x0d)再打印数字,有时在数字前会有1或2位乱码,

(2)打印条码后加0x0d后再打印数字

打印短条码没问题,

打印长条码(加两个*共15位,连续打印时其中会有有错误的,打印不全)不知道是我的晶振产生的误差还是什么原因?

回答:code39 如果打印的长度过长,请把把条码的宽度设置为1.默认是2倍宽15位打印不下了。还有一种可能为长条码的打印对电流的要求高,电源功率不够起乱码。

12.问题:RD v32没有你说的打印比例的设置,我用1d 6b 45这个指令打印的条形码?

回答:可用1D 77这个命令来设置。

13.问题:如果我在打印的时候想通过打印命令打印一个连续平滑的曲线 有什么比较好的办法吗?看来一行打一个点是不行的对不对,您有什么好办法吗?

回答:只能通过曲线指令来实现,因为线也是由点组成的,曲线的轨迹应该是受您们的程序控制,在每个时间片打印一个点行的曲线点。

14.问题:但是如果在一个点行打印一个点的话是不是还是不能够让他看起来更连续啊,我现在的办法有但是不知道有没有更好的?

回答:在一个点行可以打印不止一个点,,可以打印1--384个点。详见:曲线II数据。

15.问题:RD-TH打印机打印CODE39条形码时 码值最多可以打印多少位?

回答:原倍打印22个字符。

16.问题:说明书,上面没有提到图形格式和条码类型,是否应明确格式,比如图形支持bmp或者其他的?

回答:你们目前的打印机,要打印图形必须是取完图形点阵,按照我们给出的图形命令发送给打印机。不能直接打印任何基于现有计算机操作系统的图形文件。

17.问题:如何打印24点阵图形?

回答:用8点方式打印直接顺序输出就可以,但是用24点的方式输出必须先发第一个数据,然后根据图片宽度找到第二排的第一个数据作为第二个数据然后是第三排的第一个数据作为第三个数据然后再换到第一排的第二个数据,第二排第二个数据,第三排第二个数据按这种方法去设计程序可以实现24位宽度打印图片。

18.问题:想用打印机直接拷屏LCD打印用图形打印的方法应该可以吧? 就是液晶显示模块上显示什么东西,我要用打印机打印出来,是不是直接用图形打印方式1B4B可以打印出来呀?我看炜煌宣传说是可以拷屏打印,是不是也是用图形打印的方式呀?是一样?你那里有没有相关的例程?是要纵向取数?

回答:拷屏打印功能应不是像客户理解的那样,应是LCD上有程序支持这个功能,很多触摸屏支持这种功能,是将程序事先做好放在触摸屏里了。

19.问题:(1)我需要打印的曲线点大约为1000多,横向打印时不可能的,因为一行只有384个点阵,所以必须要纵向打印.走纸的方向是X轴,Y轴是具体曲线的值。

(2)您说如果打印坐标曲线的话应该用图形命令1B 4B n1 n2...data...(打印n1*8点阵图形),我怎样来图形来拼成曲线的坐标和曲线点,来打印坐标轴及其上面的参数那?能将简单的流程图说一下吗?

回答:用图形的方式打印,不要把曲线想成是由点组成,把整个结果想成是一幅图,把你的打印结果想成是由横向384纵向1000的一个图形,把图形按照8*384切割开。用图形命令打印出来, 这个就需要你预先在缓冲区中绘出这个图后,发给打印机。

20.问题:你们的说明书上怎么没有打印直线的命令?如打印横向的直线或竖线怎么打?把命令给我发过来 我试一下你们的打印机 ,打印机型号是 RD-TH32  热敏式的微打,说明上的,只是大概的给条具体的我就试一下打印机 , 比如打一条直线 的十六进制代码。打印横线、竖线或曲线都可以?

回答:打印240个曲线点(十进制命令):

10

27 39 240 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 995 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 213 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 13

21.问题:我新买的打印机为什么不能执行和设置水平造表?麻烦给个实例我测试一下是否打印的问题?我输入的是 要打印说明书上P18页的例子我输入的是“1234567890123456789”,然后输入1b 44 02 09 0e 00 然后又输入09再输入“TH1”指令对吗?为什么不行?

回答:1b 44 02 09 0e 00 09 30 30 30 09 31 31 31 09 32 32 32 0d,客户的指令可能没有给全而造成的。

22.问题:网上的C语言例程编译不能通过,需要打印如图例程?

回答:给客户做例程如下:

例程如下:

/*

1b 40 初始化打印机

1b 20 0 设置字间距为0

1b 63 0 反向打印

1b 38 0 16*16 汉字打印

1b 57 2 放大两倍

1b 36   调用字符集1

0A 0D   换行,回车

*/

#include <dos.h>

#include <stdio.h>

#define PROTADDRESS 0x378

#define DATA PROTADDRESS+0

#define CONTROL PROTADDRESS+2

#define STATUS PROTADDRESS+1

unsigned char init[11] ={0x1b,0x40,0x1b,0x20,0x00,0x1b,0x63,0x0,0x1b,0x38,0x0};

unsigned char fangda[3]={0x1b,0x57,0x02};

unsigned char huanyuan[3]={0x1b,0x57,0x01};

unsigned char shuju[11]="   灭菌记录";

unsigned char shuju1[45]={0x1b,0x36,

0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,

0x1b,0x38,0x00};

unsigned char shuju2[]="日期:2008年7月21日";

unsigned char shuju3[]="批号:000012456";

unsigned char shuju4[]="品名:ABC";

unsigned char shuju5[]="操作员:001";

unsigned char shuju6[]="设定温度:121℃";

unsigned char shuju7[]="设定时间:30分";

unsigned char shuju8[]="时间:08-07-21 温度  F0值";

char lprintf(unsigned char value)

{ int c=0;

while (c==0x00)

{ c=inportb(STATUS)&0x80; }

outportb(DATA, value);

c=0x03;

outportb(CONTROL,c);

c=inportb(CONTROL);

c=0x02;

outport(CONTROL,c);

return 0;

}

main()

{int i;

i=inportb(STATUS);

i=inportb(CONTROL);

i=0x02;

outportb(CONTROL,i);

i=inportb(CONTROL);

for (i=0;i<11;i++)

{ lprintf(init[i]); }

for (i=0;i<3;i++)

{ lprintf(fangda[i]); }

for (i=0;i<11;i++)

{ lprintf(shuju[i]);}

lprintf(0x0d);

for(i=0;i<3;i++)

lprintf(huanyuan[i]);

for (i=0;i<strlen(shuju1);i++)

{ lprintf(shuju1[i]);}

lprintf(0x0d);

for (i=0;i<strlen(shuju2);i++)

{ lprintf(shuju2[i]);}

lprintf(0x0d);

for (i=0;i<strlen(shuju3);i++)

{ lprintf(shuju3[i]);}

lprintf(0x0d);

for (i=0;i<strlen(shuju4);i++)

{ lprintf(shuju4[i]);}

lprintf(0x0d);

for (i=0;i<strlen(shuju5);i++)

{ lprintf(shuju5[i]); }

lprintf(0x0d);

for (i=0;i<strlen(shuju1);i++)

{ lprintf(shuju1[i]);}

lprintf(0x0d);

for (i=0;i<strlen(shuju6);i++)

{ lprintf(shuju6[i]); }

lprintf(0x0d);

for (i=0;i<strlen(shuju7);i++)

{ lprintf(shuju7[i]); }

lprintf(0x0d);

for (i=0;i<strlen(shuju1);i++)

{ lprintf(shuju1[i]); }

lprintf(0x0d);

for (i=0;i<strlen(shuju8);i++)

{ lprintf(shuju8[i]); }

lprintf(0x0d);

lprintf(0x0d);

lprintf(0x0d);

lprintf(0x0d);

lprintf(0x0d);

printf("\n press ENTER to quit \n");

while ((i = getchar()) != '\n')

printf("%c", i);

return 0;

}

23.问题:E32SN曲线指令的数据格式及起始点是1还是0?

回答:曲线指令需用曲线II,曲线的数据格式为高字节在后,低在前.数据的高字节取法为DH=INT(DATA/256) ,DL=DATA MOD 256,即高字节数据为:数据整除256,低字节数据为:数据取余256.曲线指令的点是从第1点开始的.

24.问题:打印机如何打印汉字?

回答:打印机内部有汉字库,字库汉字是按内码方式编码。通过相应的汉字调用指令,然后发送相应汉字内码即可发送。客户问怎么确定汉字的内码?可以通过在我们的网站上下载汉字内码表或者从网上下载个汉字码转换工具都可以。客户询问C语言编程上如何发送汉字内码?C语言中可将汉字以字符串形式定义,直接发送就可以了。

25.问题:发过来一段程序代码,说客户的程序编写意图是文字与打印的曲线在同一行上,但打出的结果是坐标打到下一行了?

回答:通过读程序,发现客户用的是1B 27 这个曲线指令来打印的,我们的曲线指令与文字是不能在同一行打印的,它们是不支持混打的, 如客户想将坐标与曲线一起打印,只能用图形命令来拼.

26.问题: 客户用OEM058VF-SN机器打印图形发现有空白?

回答:通过观察图片,发现是每行图形之间有空点行,可以判断是客户在打印图形前没有加行间距指令,于是告诉他说,应在图形命令这前加行距设置指令,将行距设为0,指令为1B 31 00.

27.问题: 用图形命令打印黑块,数据是不是发送FF?

回答:是的,FF表示全黑。

28.问题:我用你公司的打印机已经可以打印出汉字,但数字该如何打印?

回答:数字与汉字一样,直接发送一个字节的数字ASCII码就可以,客户说,我想打印123.5这个数,那该如何打印呢?我们可以在程序中用整除及取余的方式取出这个数字的位数, 像这个数分别取出1 2 3 5,通过ASCII码表可以看出数字与ASCII码有个规律,即他们之间相差30H,所以我们将取出的这些数分别加上30H就可以打印出相应的字符了。

29.问题: 你好,我的RD-DH微型打印机怎么不能设置字体的大小呢?

回答:可以通过1B 57 n(1-8)这个指令来调置打印字体的大小。

29.问题:TH32-SC的 通用的打印机可以使用指令居中打印吗?

回答:通用机器没有居中指令,可以通过空格指令来调整。

30.问题:客户用便携式机器,锂电池供电的,客户反映说按图形指令打印不能打印出图形?

回答:让客户将程序发给我,通过分析后,发现客户的程序写的有问题了

unsigned char code

ch[15]={0x7c,0x44,0x44,0xff,0x44,0x44,0x7c,0x00,0x41,0x62,0x54,0xc8,0x54,0x62,0x41};

print(0x1b),print(0x4b),print(0x15),print(0);

for(int i=0;i<15;i++)

print(ch[i])

print(0x0d)

从以上的程序段能够看出来,客户的图形数据是15点长,在图形指令写数据长度时,客户写的是0X15,转成10进制则为21长度,所以才会打印乱码。

31.问题:我现在用的 rd-d24 针式打印机 ,我对打印的命令看不懂 ?

回答:问客户哪个命令看不懂,客户说,如果要打印”中国”两个字,该如何打印;回答客户说如要打印”中国”两个字,先需用1B 38 00 这个调用汉字指令,然后再发送”中国”两个字的内码,最后加一个0D,0D起回车作用.客户又问内码是如何生成的,答客户说内码是由国家标准定义的,不是生成的,可以通过内码软件不查找内码或通过内码表对应查找,于是,给客户一内码软件.

32.问题:组织的打印数据如上,此时,打印出的单子也是按照该先后顺序,正好与我的目的相反?

回答:观察其打印的数据,发现没有反向指令,于是告诉客户在初始化之前发送反向指令1B 63 00 。问题解决。

33.问题:RD-V32-SN要在一行里,打印"图形+字符+图形"要如何操作?

回答:V32是24点阵字符,要想图形与字符混打,必须保证图形每行的高度与字符是一样高的。于是告诉客户打印机时用1B 2A的指令选择为24高图形打印。在图形后不要用CR命令,后直接接字符打印。

34.问题:你好,曲线指令后面的xL,XH也是先低位后高位,对吧??

回答:是的,热敏的曲线指令后面的数据取法与点数的取法是一样的,低位在前,高位在后。

35.问题:你好,打印条码指令,需要先设置吗,可以直接打印吗?

回答:条码可以直接用条码指令打印;但不设置条码的高,宽值,就会把打印机默认的高,宽来打印。

37.问题:V80设置行间距为0时,打印点距好像不对?

回答:该客户说V80打印机在设置行间距为0时,打印时还有1个点的距离,于是,让客户将数据发过来,发现客户是用曲线打印点的,但在其前面客户用了一个设置行距命令:1B 31 01 ,于是与客户说是这个命令将打印机的的行距设置成了1个点行,所以打印时会有距离,让客户将该命令设置成1B 31 00问题解决.

38.问题:用V80打印机用曲线命令打印一条横线,宽度为50,为了打印清晰,设置没有间距的间距重复打印3次,可是不清晰?

回答:可以在其前面加一加深命令,这样打印出来的就会清晰了,V80的命令格式为1B 72 n(0<=n<=255),让客户按N从小到大的原则试验,加上此命令后,客户反映效果已OK了.

39.问题:客户用的是V80的打印机,说例程的图形打印打不出来?

回答:客户将数据发过来”1B 40 1B 4B 0F 7C 44 44 FF 44 44 7C 00 41 62 54 C8 54 62 41 0D”发现例程的数据有问题,第五个数据”0F”后面少个”00”,于是将数据改好用给客户” 1B 40 1B 4B 0F 00 7C 44 44 FF 44 44 7C 00 41 62 54 C8 54 62 41 0D”.

39.问题:客户用的是V80的打印机,问如何打印出图形?

回答:客户现在是想打印出图形来,我与客户说可以用1B 4B的这个指令来打印,客户说这个指令只能打印8个高的图形,而他要打印80个高的该如何打印呢?于是与客户讲了一下图形打印命令的方法,告诉客户可将这个N*80的图形,分成10行来打印,每行是N*8,将每行的内容拼起来就是一个完整的图形了.如打印机有行间距,可用1B 31  00这个命令将行距设置为0.后又问客户有电子开发手册没?客户说没有,于是传给客户一开发手册.

40.问题:320x240的图片打印出来的效果将非常小,能够动态放大吗?

回答:可以,可以用放大命令进行放大,1B 58 M,N这个指令就可以的\

41.问题:EH32-V2型的不能调整热敏纸打印深度吗?

回答:可以调整,命令为1B 73 2B N 或1B 73 2D N,一个是加深一个是变浅,N取值为0-255.

42.问题:RD-EH32V2的打印机为什么会多打印出一个“8”的字符?

回答:你将例程中的1B 38 00 这个命令去掉就可以了,V2的汉字调用指令不是1B 38 00 所以会打出来一个“8”.

43.问题:你好,我用你们的针打打印字符集1“元”字,如何打印?

回答:你好,请先发送字符集1调用指令,1B 36 再发送字符“元”的ASICC值8BH就能打印元字了。

44.问题:你好,我用你们的针打打印字符,我自已编程序的打出的“9”与另一个软件打印出的“9”不一样呢?

回答:你好,你打出的9是我们打印机字库的,而另一个软件打出的9是他们自已造的字,所以不一样,打印方法为你可参照自定义字符指令,自已造一个6*8的字符,然后打印出来。

45.问题:RD-V80的1B 72是什么命令?

回答:1B 72的命令为调整深度命令,取值范围为10-255,是在当前的基础上加深,无变淡效果。

46.问题:向RD-V80发送1B 76命令检测打印机状态时,只有偶尔返回01?

回答:经与客远程测试发现确实有些问题,于是与开发部联系,开发部说是因为V80休眠导制的,在休眠时会将电源全部切断,来数据后,启动需要个时间,约为28MS时间,于是我让客户发送308个00(客户波特率为115200) 再发送1B 76命令,给打印机充足的恢复时间,故障解决。
Copyright © 2017~2019 北京荣达创新科技有限公司 All rights reserved   网站建设:网势科技   京ICP备17040619号