Я перепробовал много способов печати на принтере, подключенном к сети.В основном я хочу распечатать на принтере, который подключен к локальной сети.С менеджером NSD по умолчанию мы не можем его обнаружить.Но я смог получить услугу
compile 'com.github.andriydruk:rxdnssd:0.9.10'
Но главная проблема связана с сокетным соединением.В большинстве случаев это вызывает IOException, и в некоторых случаях выполняются целые команды PJL, но принтер их не выполняет.Кто-нибудь может поделиться кодом или примером проекта для печати на этих принтерах?
sendTPrinter() {
DataOutputStream outToServer = null;
Socket clientSocket = null;
String result;
InputStream fileInputStream=null;
try {
clientSocket = new Socket(ipAddress, portNumber);
InputStream inputStream = clientSocket.getInputStream();
outToServer = new DataOutputStream(new BufferedOutputStream(clientSocket.getOutputStream()));
char ESC = 0x1b;// "0x1b";
String UEL = ESC + "%-12345X";
String ESC_SEQ = ESC + "%-12345";
outToServer.write(convertTOUtf(UEL+"@PJL COMMENT *Start Job*"));
outToServer.write(convertTOUtf("@PJL \r\n"));
outToServer.write(convertTOUtf("@PJL JOB NAME = $myjob"));
outToServer.write(convertTOUtf("@PJL SET RET = "));
//outToServer.writeChars(("@PJL SET PAPER=" + "A4"));
outToServer.write((convertTOUtf("@PJL SET COPIES= 1")));
outToServer.write(convertTOUtf("@PJL ENTER LANGUAGE = PCL"));
outToServer.write(convertTOUtf(ESC+"E"));
outToServer.write(convertTOUtf(ESC+"EHello World"));
outToServer.write(convertTOUtf(ESC_SEQ));
outToServer.write(convertTOUtf("@PJL \r\n"));
outToServer.write(convertTOUtf("@PJL RESET \r\n"));
outToServer.write(convertTOUtf("@PJL EOJ NAME = $myjob"));
outToServer.write(convertTOUtf(UEL));
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
int count = bufferedInputStream.available();
Logr.d("count "+count);
result = SUCCESSFULLY_SENT;
} catch (ConnectException connectException){
Log.e(TAG, connectException.toString());
result = connectException.toString();
} catch (UnknownHostException unknownHostException) {
Log.e(TAG, unknownHostException.toString());
result = unknownHostException.toString();
} catch (IOException ioException) {
Log.e(TAG, ioException.toString());
result = ioException.toString();
} finally{
try {
/* if (clientSocket!=null)clientSocket.close();
if (outToServer!=null){
outToServer.close();
}*/
if (fileInputStream!=null){
fileInputStream.close();
}
}catch (IOException ioException){
result = ioException.toString();
}
}
return result;
}`