Ver Mensaje Individual
  #19 (permalink)  
Antiguo 10/04/2015, 14:06
dragonfire256
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Enviar comandos a la impresora via socket

Cita:
Iniciado por chuidiang Ver Mensaje
Hola:

No tiene sentido. Si con wireshark ver la trama que va en php y java y son iguales, y con wireshark solo ves la trama de retorno si es php el que ha enviado el comando .... algo tiene que haber distinto en el comando.

Se bueno.
Hola Chui

Ya hemos conseguido la solucion aqui en la oficina, despues de varios dias luchando
Te adjunto el codigo

Código Java:
Ver original
  1. char ESC = (char)27; //Caracter de escape
  2. char CR = (char) 13; //Caracter de retorno de carro
  3. //Aqui hago otras declaraciones
  4. Socket socket = null;
  5. OutputStream output = null;
  6. BufferedReader reader= null;
  7. try
  8. {
  9. socket= new Socket(address,port);
  10. socket.setSoTimeout(5000);
  11. output = socket.getOutputStream();
  12. reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  13. }//Aqui continuo con el manejo de excepciones
  14. if (socket!= null  && output != null)
  15.             {
  16.                 try
  17.                 {
  18.                     String cmd=ESC+command+CR;
  19.                     output.write(cmd.getBytes());
  20.                     output.flush();
  21.                     socket.shutdownOutput();
  22.                    
  23.                     response = reader.readLine();
  24.                    
  25.                     System.out.println(respuesta.toString());
  26.                                        
  27.                     output.close();
  28.                     socket.close();
  29.                 }
  30.  
  31.                 catch (Exception e)
  32.                 {
  33.                     System.out.println(e.toString());
  34.                    
  35.                 }
  36.             }

La diferencia la marca la linea socket.shutdownOutput();. ya que cierra el socket para la salida de datos; probablemente, el dispositivo no puede manejar informacion entrante y saliente, solo puede manejar informacion en un solo sentido, por lo que se quedaba bloqueado el programa al momento de recibir la respuesta (esto lo asumo, debido a que el manual no es muy claro con respecto al tema)

Muchas gracias a ti y a Falken, por su tiempo y disposicion para ayudar

Saludos