Page 1 of 1

Caracteres de escape para la impresora

Posted: Fri Mar 02, 2007 12:21 pm
by softruz
Muy buenas, ¿alguien sabe como puedo mandar el caracter de escape:
"ESC C 42" a la impresora STAR DP8340S?
me dice que le tengo que mandar "ESC C n" (donde n es el número de líneas) y lo que es lo mismo en hexadecimal: "(1B)H (43)H n"

decirme como puede mandarlo gracias.
Gracias.

Un Saludo.

Posted: Fri Mar 02, 2007 12:51 pm
by pymsoft
prueba con: CHR(27) + "C5"

donde 5 es el numero de lineas

Posted: Fri Mar 02, 2007 2:37 pm
by Biel EA6DD
Tal cual te comentan en el post anterior, pero ten en cuenta que n (nº de lineas) es el valor ascii del caracter que le pasas. P.e. 48 lineas seria

Code: Select all

Chr(27)+"C0" 
o si mas claro

Code: Select all

Chr(27)+"C"+Chr(48) 

No funciona

Posted: Fri Mar 02, 2007 5:20 pm
by softruz
Muy buenas, he probado de todo y no funciona sigue imprimiendo 33 líneas de dicha impresora no que se hacer, si alguien sabe como mandar el código de escape o configurar la STAR DP8340S, decirme algo.

Gracias.

Un Saludo.

Posted: Fri Mar 02, 2007 5:30 pm
by Biel EA6DD
Un cliente mio tiene Star Dp8340S y el código que antes te he puesto funciona para el cambio de lineas.

Tu quieres poner la impresora a 42 lineas, entonces seria

Code: Select all

Chr(27)+"C*"

Posted: Fri Mar 02, 2007 5:44 pm
by softruz
Me prodrías decir el código para enviar el codigo de escape, mira yo creo un fichero y en la primera línea pongo:

WriteByte( cConexion,Chr(27)+"C*")

es decir, mi codigo es:

local cConexion := CreateFile( "COM8:",GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL )
if (cConexion==-1)
MsgStop('No hay conexion con la impresora',vTitulo)
else
WriteByte( cConexion,Chr(27)+"C*")
for n = 1 to Len( cTexto )
WriteByte( cConexion, Asc( SubStr( cTexto, n, 1 ) ) )
next
CloseHandle( cConexion )

¿Está bien?¿Debería funcionar?
Gracias

Un Saludo.

Posted: Fri Mar 02, 2007 7:42 pm
by Biel EA6DD
Creo que no es correcto, en principio entiendo que writebyte envia byte a byte al puerto de comunicaciones.

Prueba de la siguiente manera.

Code: Select all

//WriteByte( cConexion,Chr(27)+"C*") 
cTexto:=Chr(27)+"C*"+cTexto
for n = 1 to Len( cTexto ) 
   WriteByte( cConexion, Asc( SubStr( cTexto, n, 1 ) ) ) 
next 

No me funciona

Posted: Mon Mar 05, 2007 8:29 am
by softruz
Muy buenas, no se que hacer la impresora no funciona, he llamado al servicio técnico y dicen que debe ser de programación y yo no hago nada más que el código anterior, decirme que puedo hacer, es decir, si hay otra forma de comunicarse con la impresora, otra forma de imprimir, no se algo para que esto funcione.

También he probado con otra impresora nueva para ver si es que estuviese rota, y también pasa lo mismo.

Bueno, gracias de antemano.

Un Saludo.

Posted: Mon Mar 05, 2007 9:04 am
by Biel EA6DD
Pues no se que decirte, el codigo anteriro a mi me funciona. Pro probar, pero es lo mismo.

Code: Select all

WriteByte(cConexion,27)
WriteByte(cConexion,Asc('C')
WriteByte(cConexion,48)  //Lineas 
for n = 1 to Len( cTexto ) 
   WriteByte( cConexion, Asc( SubStr( cTexto, n, 1 ) ) ) 
next 
Puedes probar de imprimir con cable directo, entiendo que lo haces via Bluetooth.

No se por que no

Posted: Mon Mar 05, 2007 9:38 am
by softruz
¿Sabes algún caracter de escape que tengamos que complementar a ese? es decir, lo mismo tengo que reiniciar la impresora, limpiar buffer, no se algo que complemente que haga que funcione de una vez.

Gracias.

Un Saludo.

Posted: Mon Mar 05, 2007 9:53 am
by softruz
Lo hemos probado también con el cable directo y no funciona, es de la impresora que no coje el caracter de escape

Muchas gracias

Posted: Tue Mar 06, 2007 11:32 am
by softruz
Muy buenas, ya ha solucionado el problema de la impresión muchas gracias por todo.

Posted: Tue Mar 06, 2007 12:00 pm
by Biel EA6DD
Por curiosidad, cual ha sido la solución.