DJ-*_*DOO 2 java printing android hex thermal-printer
我正在开发一个需要直接打印到ESC/POS打印机的应用程序.打印很好,但是当向打印机发出命令时,它们只是打印!! 我正在尝试转换一些c#代码,我尝试发送的命令是十六进制字符串,如下所示:
public static String PRINTLOGOCOMPANY = "\x1c\x70\x01\x30";
Run Code Online (Sandbox Code Playgroud)
当然我知道这里有非法的转义字符所以我把它改成了:
"\\x1c\\x70\\x01\\x30"
Run Code Online (Sandbox Code Playgroud)
然后我转换为一个字节数组并尝试通过dataoutput流发送它,如下所示:
String WIDTH_1 ="\\x1d\\x57\\x120\\x01";
Log.i("Width String: ", WIDTH_1);
final byte [] width = WIDTH_1.getBytes();
final int portNo = xxxx;
final String ipAddress = "xxx.xxx.x.xxx";
Thread thread = new Thread() {
@Override
public void run() {
try {
Socket sock = new Socket(ipAddress, portNo);
DataOutputStream dOut = new DataOutputStream(sock.getOutputStream());
dOut.writeInt(width.length);
dOut.write(width);
dOut.close();
sock.close();
} catch (UnknownHostException e) {
e.printStackTrace();
Log.i("Unknown Host Exception Error: ", String.valueOf(e));
} catch (IOException e) {
e.printStackTrace();
Log.i("IO Exception Error: ", String.valueOf(e));
}
}
};
thread.start(
Run Code Online (Sandbox Code Playgroud)
但它只是在另一端打印出来;
任何人都可以提供任何关于此的建议我非常感激.
小智 5
如果我理解您的问题,您无法向打印机发送命令,它只会打印您的所有符号.您只需要发送字节.例如,打开您需要执行的操作:
Socket mSocket = new Socket(PRINTER_IP, PRINTER_PORT);
OutputStream mPrinter = mSocket.getOutputStream();
mPrinter.write(0x1B);
mPrinter.write(0x70);
mPrinter.write(0);
mPrinter.write(200); // t1
mPrinter.write(255); // t2
Run Code Online (Sandbox Code Playgroud)