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()
有print
和moveToNextLine
在它执行的方法。因此,该字符被打印并且光标移动到后,立即调用sendMessage()
方法下一行。
你将不得不作出的PrinterModule的sendMessage()
方法实现更改。取出print
和newLine
从sendMessage()
方法调用。然后当你在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。