Принтер Epson Bluetooth не подключается дважды - PullRequest
0 голосов
/ 02 февраля 2020

Мне нужна помощь в подключении принтера Bluetooth TM-M10 к моему приложению android. Я могу подключиться к принтеру и успешно распечатать данные. Но он печатает только один раз и в следующий раз дает сообщение ERR_CONNECT Поделиться своим кодом ниже.

        if(!initializeObject()){
            Toast.makeText(mContext,"Unable to initialize printer",Toast.LENGTH_LONG).show();
        }

        if (!createPrintBillData()) {
            Toast.makeText(mContext,"Unable to create Receipt",Toast.LENGTH_LONG).show();
            finalizeObject();
        }


        if (!printData()) {
            Toast.makeText(mContext,"Error in printing",Toast.LENGTH_LONG).show();
            finalizeObject();
        }

Мои дальнейшие функции подробно:

private boolean initializeObject() {
    try {

        mPrinter = new Printer(Printer.TM_M10, Printer.MODEL_ANK, mContext);
    }
    catch (Exception e) {
        Log.e("Printer", e.toString());
        return false;
    }

    mPrinter.setReceiveEventListener(this);
    return true;
}



private boolean createPrintBillData() {

    if (mPrinter == null) {
        Log.d(TAG, "createReceiptData: mprinter is null");
        return false;
    }

    try {
        mPrinter.clearCommandBuffer();
        String method = "";
        mPrinter.addPageBegin();
        mPrinter.addPagePosition(0, 255);
        mPrinter.addPageArea(0,0,combined.getWidth(),combined.getHeight()+20);
        mPrinter.addTextAlign(Printer.ALIGN_CENTER);
        mPrinter.addImage(combined, 0, 0, combined.getWidth(), combined.getHeight(),
                Builder.COLOR_1,
                Builder.MODE_MONO,
                Builder.HALFTONE_DITHER,
                Builder.PARAM_DEFAULT,
                Builder.COMPRESS_DEFLATE);


        method = "addCut";
        mPrinter.addPageEnd();
        mPrinter.addCut(Printer.CUT_FEED);

        if(istracking){
            mPrinter.addPageBegin();
            mPrinter.addPagePosition(0, 255);
            mPrinter.addPageArea(0,0,combined.getWidth(),combined.getHeight()+20);

            mPrinter.addTextAlign(Printer.ALIGN_CENTER);
            mPrinter.addFeedLine(2);
            mPrinter.addImage(tracking_slip, 0, 0, tracking_slip.getWidth(), tracking_slip.getHeight(),
                    Builder.COLOR_1,
                    Builder.MODE_MONO,
                    Builder.HALFTONE_DITHER,
                    Builder.PARAM_DEFAULT,
                    Builder.COMPRESS_DEFLATE);


            method = "addCut";

            mPrinter.addPageEnd();
            mPrinter.addCut(Printer.CUT_FEED);
        }



        return true;
    }
    catch (Exception e) {
        //ShowMsg.showException(e, method, mContext);
        Log.d(TAG, "createReceiptData: "+e.getMessage());
        return false;
    }

}



private boolean printData() {
    if (mPrinter == null) {
        Log.d(TAG, "mprinter is null in printdata");
        return false;
    }



    if (!connectPrinter()) {

        Log.d(TAG, "printer not connected");
        return false;
    }
    PrinterStatusInfo status = mPrinter.getStatus();

    try {
        mPrinter.sendData(Printer.PARAM_DEFAULT);

    }
    catch (Exception e) {
        Log.e("Printer", e.getMessage());
        try {

            mPrinter.clearCommandBuffer();
            mPrinter = null;
        }
        catch (Exception ex) {
            // Do nothing
            mPrinter.clearCommandBuffer();
            mPrinter = null;
        }
        return false;
    }

    if(mPrinter != null){
        try{
            mPrinter.clearCommandBuffer();
            mPrinter = null;
        }catch(Exception e){
            mPrinter = null;
        }
    }

    return true;
}

Поскольку я пытаюсь снова напечатать, я инициализирую принтер, а затем создаю данные для orint и печатать данные каждый раз. В соответствии с журналами ошибка приходит в функцию connectPrinter при попытке подключения дважды. По некоторым причинам это не подключение. Пожалуйста помоги!! Заранее спасибо.

...