Hola:
Lo del retorno de carro es según uses out.print() o out.println(). La segunda forma lo añade automáticamente, así que no sería necesario que lo añadieras tú en el comando.
Si se te queda en el readLine(), o bien no está enviando nada la impresora, o está enviando algo que no termina en retorno de carro. Para verificar cual de las dos opciones es, vete leyendo byte a byte, cambia el while readLine por
Código Java:
Ver originalint caracterLeido;
while ((caracterLeido = in.read()) != -1) {
System.
out.
println(caracterLeido
); }
Si va escribiendo código ascii, es que la impresora está devolviendo algo. Si no es que la impresora no envía nada. Si devuelve un CR al final, deberías ver el 13 en la salida.
De todas formas, el código que tienes actualmente
Código Java:
Ver originalwhile ((response= in.readLine()) != null) {
}
se quedará bloqueado en algún momento, ya que cuando la impresora deje de enviar respuestas y si ella no cierra el socket (no creo que lo haga), readLine se quedará bloqueado. Entiendo que cuando dices que se te queda bloqueado, es que ni siquiera ha enviado la primera respuesta (no sale el System.out.println(response).
Se bueno.