如何发送字符的打印命令,并让他们在同一行打印?

问题描述 投票:1回答:1
public void printText(String text, int fontsize, boolean doubleW, boolean bold, boolean center) {

    if (this.mPrinterModule != null) {

        byte [] alignment = alignRight();
        byte [] alignment = alignCenter();
        byte [] line_space = setLineSpacing(10);
        byte [] font_size  = fontSizeSetBig(fontsize);
        byte [] left_margin = setLeftMargin(24,0);

        this.mPrinterModule.sendData(left_margin);
        this.mPrinterModule.sendData(font_type);
        this.mPrinterModule.sendData(line_space);
        this.mPrinterModule.sendData(font_size);
        this.mPrinterModule.sendData(alignment);

        PrinterModule printerModule = this.mPrinterModule;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append(text);
        stringBuilder.append("\r\n");
        printerModule.sendMessage(stringBuilder.toString(), "GBK");
    }
}

这是我用用我的热敏打印机获得文本打印的打印方法。相反,文字的我想通过特色与自己的个人风格格式发送字符。所有字符应在一个行中打印为好。任何帮助将大大appreciated.Thank你提前

public void sendMessage(String message, String charset) { 

    super.sendMessage(message, charset); 

    if (checkUsbPermission()) { 

        if (this.mConnected) { 

            this.mUsbCtrl.sendMsg(message, charset, this.mDevice); 

        } else { 

            this.mCallback.onError(ErrorCode.DEVICE_NOT_CONNECTED); 

        } 

    } 

} 



public synchronized void sendMsg(String msg, String charset, UsbDevice dev) { 

    if (msg.length() != 0) { 

        byte[] send; 

        try { 

            send = msg.getBytes(charset); 

        } catch (UnsupportedEncodingException e) { 

            send = msg.getBytes(); 

        } 

        sendByte(send, dev); 

        sendByte(new byte[]{(byte) 13, (byte) 10, (byte) 0}, dev); 
    } 
}
android thermal-printer
1个回答
0
投票

大多数的时候,PrinterModule的方法sendMessage()printmoveToNextLine在它执行的方法。因此,该字符被打印并且光标移动到后,立即调用sendMessage()方法下一行。

你将不得不作出的PrinterModule的sendMessage()方法实现更改。取出printnewLinesendMessage()方法调用。然后当你在outputStream希望你可以发送尽可能多的字符。当你想最后打印,只发送print命令到打印机。

UPDATE

sendMessage()方法调用sendMsg()最终执行该语句sendByte(new byte[]{(byte) 13, (byte) 10, (byte) 0}, dev);。这条线是负责每sendMsg()调用后打印。此byteArray包含用于打印和添加新行每次一些消息被发送给它的命令。从这里删除此行。

之后使用sendMessage(),保持字符发送到打印机。当你终于想打印整个语句,则仅发送命令PrinterModule.sendByte(new byte[]{(byte) 13, (byte) 10, (byte) 0}, dev);。您的所有字符将在一行打印,如果有足够的空间,否则移到下一行。

更新2

这里是链接的UsbController。您可以直接将其添加为您的项目中(无需添加SDK文件)的新文件。使用UsbController类的方法是在这里UsbFragment

© www.soinside.com 2019 - 2024. All rights reserved.