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等。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐