Печать QR-кода на принтере zebra с android



У меня есть принтер Zebra MZ 220, и мне нужно распечатать QR-код из моего приложения для android через bluetooth. Я могу печатать текст и изображения, но не QR-код.



Я нашел это: https://km.zebra.com/kb/index?page=content&id=SO7133&actp=LIST_POPULAR



Итак, вот мой код:



new Thread(new Runnable() {
public void run() {
try {

// Instantiate connection for given Bluetooth® MAC Address.
ZebraPrinterConnection thePrinterConn = new BluetoothPrinterConnection("XX:XX:XX:XX:XX:XX");

// Initialize
Looper.prepare();

// Open the connection - physical connection is established here.
thePrinterConn.open();



// SO THIS SHOULD PRINT THE QR CODE BUT DOESN'T :(
thePrinterConn.write("! 0 200 200 500 1rnB QR 10 100 M 2 U 10rnMA,QR code ABC123rnENDQRrnFORMrnPRINT".getBytes());



//Make sure the data got to the printer before closing the connection
Thread.sleep(500);

// Close the connection to release resources.
thePrinterConn.close();

Looper.myLooper().quit();

} catch (Exception e) {
// Handle communications error here
e.printStackTrace();
}
}
}).start();


Это не работает. Так.... любая помощь ценится:)

717   2  

2 ответов:

Похоже, вы были очень, очень близки. В CPCL (родном языке RW) все команды должны заканчиваться как новой строкой, так и символом возврата каретки. В вашем коде это соотносится с "\r\n " после каждой команды CPCL. Похоже, вы забыли поставить "\r\n " после последней команды печати в цепочке CPCL.

Надеюсь, что эта информация поможет в будущем вместо переключения на другую структуру. Использование Zebra SDK для отправки чистых команд CPCL в принтер будет иметь значительно меньшую пропускную способность и должен печатать быстрее, чем создание растрового изображения QR-штрих-кода и отправка всего этого. Он может даже печатать с более высоким качеством (и, следовательно, легче сканировать) при использовании собственного CPCL. И вам не придется связывать еще одну банку в вашем приложении.

Ссылка: руководство по CPCL (раздел 2 стр. 1 Примечание): http://www.zebra.com/content/dam/zebra/manuals/en-us/printer/cpcl-pm-en.pdf

Хорошо... чтобы ответить на мой собственный вопрос.... :D

Во-первых, я отказался от попыток использовать этот интегрированный материал Zebra и решил пойти с ZXing ("Zebra Crossing") (http://code.google.com/p/zxing/). Я нашел этот учебник http://www.mysamplecode.com/2012/09/android-generate-qr-code-using-zxing.html и был в состоянии сделать это.

Итак, сначала я загрузил ZXing и включил 'zxing-2.1 > core > core.баночки для моего проекта. Затем я добавил " GenerateQRCodeActivity.Ява', - QRCodeEncoder.java ' и ' содержание.java " из учебника выше.

И вот мой код:

// Value for encoding
String encode_value = "http://www.google.com/";

// Size of the QR code
int qr_size = 200 * 3/4;

QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(encode_value,
        null,
        Contents.Type.TEXT, 
        BarcodeFormat.QR_CODE.toString(),
        qr_size);

// Get QR code as bitmap
final Bitmap bitmap = qrCodeEncoder.encodeAsBitmap();

new Thread(new Runnable() {
    public void run() {
        try {

            // Instantiate connection for given Bluetooth® MAC Address.
            ZebraPrinterConnection thePrinterConn = new BluetoothPrinterConnection("XX:XX:XX:XX:XX:XX");

            // Initialize 
            Looper.prepare();

            // Open the connection - physical connection is established here.
            thePrinterConn.open();


            // Print QR code
            ZebraPrinter printer = ZebraPrinterFactory.getInstance(thePrinterConn);
            printer.getGraphicsUtil().printImage(bitmap, 75, 0, 250, 250, false);


            //Make sure the data got to the printer before closing the connection
            Thread.sleep(500);

            // Close the connection to release resources.
            thePrinterConn.close();

            Looper.myLooper().quit();

        } catch (Exception e) {

            // Handle communications error here
            e.printStackTrace();

        }
    }
}).start();
Так что, надеюсь, это кому-то поможет...

Comments

    Ничего не найдено.