我能够打印文字,但是当涉及到条形码时,它始终没有显示或只显示数字参数
这是我的源代码
$(this).nextAll('.tileinfo:first').addClass('active');
但结果条形码没有显示,我错过了什么
请帮帮我
修改
我找到了ESC / POS代码:
GS k m d1 ... dk NUL或GS k m n d1 ... d k
但仍然无法正常工作
答案 0 :(得分:3)
GS k
POS代码有两个版本(正如您已经发现的那样):
GS k - print one dimensional barcode
m - barcode mode selector
[d]k - data bytes
NUL - terminator
此版本仅适用于纯ASCII数据,因为它使用0x00
(NUL)作为终止符
GS k - print one dimensional barcode
m - barcode mode selector
n - content length in bytes
[d]k - data bytes
此版本使用额外的长度字节n
来表示数据部分(它也仅适用于某些编码,包括CODE128
)。
您的代码在命令字节中有一个迷路0x0d
,也可能使用了错误的格式。
如果您打算打印纯ASCII数据格式,请执行以下命令:
byte[] formats = {(byte) 0x1d, (byte) 0x6b, (byte) 0x49};
byte[] contents = content.getBytes();
byte[] bytes = new byte[formats.length + contents.length + 1];
System.arraycopy(formats, 0, bytes, 0, formats.length );
System.arraycopy(contents, 0, bytes, formats.length, contents.length);
// add a terminating NULL
bytes[formats.length + contents.length] = (byte) 0x00;
或更安全的版本,因为它也具有预期的数据长度:
byte[] contents = content.getBytes();
// include the content length after the mode selector (0x49)
byte[] formats = {(byte) 0x1d, (byte) 0x6b, (byte) 0x49, (byte)content.length};
byte[] bytes = new byte[formats.length + contents.length];
System.arraycopy(formats, 0, bytes, 0, formats.length );
System.arraycopy(contents, 0, bytes, formats.length, contents.length);
如果两者中的 都不起作用,那么您的打印机可能根本不支持CODE128
。
5890是一个很常见的规格,市场上有很多便宜的“插入式”替代产品,省去了更复杂的条形码实现,只包括EAN8
,EAN13
这样的简单编码等