我想在定制的vkp打印机上打印二维码。打印机支持二维码。我向它发送esc/pos命令,但打印的只是文本而不是二维码。下面是我的代码 Java
:
String content = "Hello !!";
int store_len = content.length() + 3;
byte store_pL = (byte) (store_len % 256);
byte store_pH = (byte) (store_len / 256);
byte ESC = 0x1b;
byte[] INIT = new byte[]{ESC, '@'};
byte[] CUT = new byte[]{0x0c};
byte[] FUNC_165 = new byte[]{Commands.GS, 0x28, 0x6b, 0x04, 0x00, 0x31, 0x41, 0x51, 0x00};
byte[] FUNC_167 = new byte[]{Commands.GS, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x43, 0x64};
byte[] FUNC_169 = new byte[]{Commands.GS, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x45, 0x48};
byte[] FUNC_180 = new byte[]{Commands.GS, 0x28, 0x6b, store_pL, store_pH, 0x31, 0x50, 0x30};
byte[] FUNC_181 = new byte[]{Commands.GS, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x51, 0x48};
byte[] FUNC_182 = new byte[]{Commands.GS, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x52, 0x48};
ByteArrayOutputStream writer = new ByteArrayOutputStream();
writer.write(INIT);
writer.write(FUNC_165);
writer.write(FUNC_167);
writer.write(FUNC_169);
writer.write(FUNC_180);
writer.write(content.getBytes());
writer.write(FUNC_181);
writer.write(FUNC_182);
writer.write(CUT);
writer.close();
输出为 QHello !!
.
我做错什么了。感谢您的帮助。
1条答案
按热度按时间vvppvyoh1#
如果您在epson中引用这些页面,则其中写入的参数的数字是十进制的,而不是十六进制的。
gs(k<函数165>
gs(k<函数167>
gs(k<函数169>
gs(k<函数180>
gs(k<函数181>
gs(k<函数182>
还是自定义vkp打印机的正确参数?
我无法判断,因为我没有自定义vkp打印机的esc/pos命令参考。
从数值上看,好像我在试着打印微qr码,打印机支持吗?
为模块大小指定了一些未知值,但epson在1到16之间。默认值为3。
由于func_182是通知条形码打印大小的函数,因此在打印后调用它没有任何意义。
假设打印机支持microqrcode打印,命令创建部分如下所示:
尽管当前内容没有问题,但实际上将数据长度指定为字节数组的长度,而不是字符串的长度。
所以第一部分是:
实际的写作是这样的?:
请尝试将其调整为自定义vkp打印机实际支持的参数范围。