如何将字符发送到打印命令并将它们打印在一行中?
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()
中实现了 print
和 moveToNextLine
的方法。因此,在您调用 sendMessage()
方法后,字符被打印出来并且光标立即移动到下一行。
您必须更改 PrinterModule 的 sendMessage()
方法实现。从 sendMessage()
方法中删除 print
和 newLine
调用。然后你可以在 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。
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()
方法实现。从 sendMessage()
方法中删除 print
和 newLine
调用。然后你可以在 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。