如何将字符发送到打印命令并将它们打印在一行中?

How to send characeters to the print command and have them printed in one line?

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); 
    } 
}

大多数时候,PrinterModule 的方法 sendMessage() 中实现了 printmoveToNextLine 的方法。因此,在您调用 sendMessage() 方法后,字符被打印出来并且光标立即移动到下一行。

您必须更改 PrinterModule 的 sendMessage() 方法实现。从 sendMessage() 方法中删除 printnewLine 调用。然后你可以在 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);。如果有足够的 space,您所有的字符将打印在一行中,否则将移至下一行。

UPDATE 2

这是 UsbController. You can directly add this as a new file in your project(no need to add the SDK files). The way to use the UsbController class is here in UsbFragment 的 link。