在蓝牙热敏打印机上打印条码

Printing barcodes on a bluetooth thermal printer

我正在使用蓝牙热敏打印机,并且能够打印普通文本和发票。但是我无法打印条形码。

我正在使用 ZXING 库生成条码

OutputStream os = mBluetoothSocket.getOutputStream();

String text = mEditText.getText().toString();

MultiFormatWriter multiFormatWriter = new MultiFormatWriter();

BitMatrix bitMatrix = multiFormatWriter.encode(text,BarcodeFormat.CODE_128,200,200);

BarcodeEncoder barcodeEncoder = new BarcodeEncoder();

Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);

os.write("Hello".getBytes()); //Prints Hello 

如何使用相同的逻辑打印位图?

我试过一些代码,比如

int size = bitmap.getRowBytes() * bitmap.getHeight();

ByteBuffer byteBuffer = ByteBuffer.allocate(size);

bitmap.copyPixelsToBuffer(byteBuffer);

byte[] byteArray = byteBuffer.array();

os.write(byteArray);

但是这给出了一个空白打印和滚动继续滚动

我正在使用 Godex-MX30 打印机

您需要告诉打印机您正在发送要打印的图像并指定打印方式。

通常这是使用 ESC/POS 代码完成的。大多数像这样的打印机使用 ESC/POS 代码。

ESC * 是指定的方式。您也可以查看此问题中的许多示例 java code or in this

有关详细信息,请参阅精工爱普生 reference

不确定这台打印机,但许多热敏收据打印机也支持使用 Esc/Pos 代码创建和打印条形码。你可以试试 this.