Ver Mensaje Individual
  #9 (permalink)  
Antiguo 23/04/2011, 00:11
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: imprimiendo en Impresora ibm 4610 1NR

Hola,

No he tenido la oportunidad de usar esa impresora exactamente, pero creo que el problema sigue estando aquí:

Código Java:
Ver original
  1. public boolean setCommand(String line, String comand)

Aunque no tengo ni idea qué es 'line' ni 'command', voy a suponer que 'command' es un comando, es decir, una serie de bytes específicos de la tabla ASCII, que tienen un significado exacto para la impresora; como el caso de 'ç' que deber ser exactamente el ordinal 0x87 en hexadecimal de la tabla ASCII.

Como te pudiste dar cuenta, Java usa conversión de tablas de caracteres y a veces es difícil detectar que tabla está usando exactamente. (Por lo menos para mí). Pero posiblemente puedas cambiar lo siguiente, solo por probar:

Código Java:
Ver original
  1. finalComand.toCharArray()
  2. finalComand.getBytes("ASCII")

El método getBytes() acepta como parámetro un charset o un string con el nombre de un charset, pero devuelve un array de bytes en lugar de un array de chars como lo hace toCharArray. La diferencia creo que va a ser evidente para ti, por lo que te pudiste dar cuenta al intentar mostrar el valor ordinal de ç.

En Java 6 podrías usar:

Código Java:
Ver original
  1. byte[] fc = finalComand.getBytes("ASCII");
  2. for (byte b : fc) {
  3.   // show the value of byte 'b' on the screen
  4.   // send the byte 'b' to the printer
  5. }

Saludos,