这是我的代码
public static byte[] makePrinterData(byte dataType, String sendData) {
System.out.println(sendData);
int dataLen = sendData.length();
byte[] controlData = new byte[6 + dataLen];
controlData[0] = (byte) 0xbc;
controlData[1] = dataType;
controlData[2] = (byte) (dataLen & 0xff);
controlData[3] = (byte) (dataLen >> 8 & 0xff);
controlData[4] = (byte) (dataLen >> 16 & 0xff);
controlData[5] = (byte) (dataLen >> 24 & 0xff);
for (int i = 6; i < dataLen + 6; i++) {
controlData[i] = (byte) (sendData.charAt(i - 6));
}
return controlData;
}
public static void main(String[] args) {
Socket s = null;
try {
JSONObject sendData = new JSONObject();
s = new Socket("192.168.31.217", 10001);
sendData.put("tp","9001");
sendData.put("taskid","123456789");
sendData.put("paper_type",1);
sendData.put("paper_width", 58);
sendData.put("pdata", "<html> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"> </head> <body style=\"width:384px;\"> <p style=\"text-align:center;font-size:48px;\">欢迎光临</p > <h1 style=\"text-align:center;\">测试页</h1> <br> <div> </div> </body> </html>");
byte[] printData = makePrinterData((byte) 0x01,sendData.toString());
InputStream is = s.getInputStream();
OutputStream os = s.getOutputStream();
DataOutputStream output = new DataOutputStream(os);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
output.write(printData, 0, printData.length);
String info = null;
while ((info = br.readLine()) != null) {
System.out.println(info);
}
s.close();
} catch (Exception e) {
System.out.println("发送失败: ");
e.printStackTrace();
}
}
运行结果:
�J {"tp":9002, "did":"20140704Q4", "taskid":"null", "progress":1, "status":1}
根据局域网协议,解析成功了但是打印失败了,感觉应该是数据格式问题 但是不知错在哪了
希望各位帮我看看错在哪了,谢谢!
把tp改成了1002 能打印出纸但是全是空白 不管pdata中输入什么
output.write(printData, 0, printData.length);
这条语句后面加一条语句试试。
output.flush();
发现问题了 编码格式不对 html格式打印机有些不能识别