Ir al contenido


Foto

Escribir Widestring en codificación CP437


  • Por favor identifícate para responder
14 respuestas en este tema

#1 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 604 mensajes
  • LocationMar del Plata / Bs As / Argentina

Escrito 06 enero 2015 - 12:51

Trabajo con Lz V1.2.4
El problema me surgió al enviar una cadena de comandos a una impresora fiscal.
Le debo enviar:

Cadena = Comando + separador + dato + separador + dato;

Donde:
Comando es: ô (ASCII 147)
Separador es: (ASCII 28)
Dato es: datos del comando

Me funciona este comando:


delphi
  1. cadena := '9' + #28 + 'X';  (Comando + separador + dato)



Lo que no me funciona es:


delphi
  1. cadena:= 'ô' + #28 + '1' + #28 + '0002-00000123';
  2. ni
  3. cadena:= Chr(147)+ #28 + '1' + #28 + '0002-00000123';
  4. ni
  5. cadena:= #147+ #28  + '1' + #28  + '0002-00000123';
  6. ni
  7. cadena:= UTF8ToCP437(#147) + #28  +'1' + #28  + '0002-00000123';
  8. ni
  9. cadena:= UTF8ToSys('c3 b4')  + #28  + '1' + #28 + '0002-00000123';



Entiendo que Lazarus codifica en UTF8 por defecto y que debo utilizar ASCII extendido.

Pero sigo sin lograrlo  :)
¿Sugerencias?  (li)

  • 0

#2 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 264 mensajes
  • LocationMedellín Colombia

Escrito 06 enero 2015 - 02:29

Hola a todos,

¿Yá probaste a enviar cada caracter de DATO en formato HEX?


Saludos
  • 0

#3 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 604 mensajes
  • LocationMar del Plata / Bs As / Argentina

Escrito 06 enero 2015 - 03:11

Hola a todos,

¿Yá probaste a enviar cada caracter de DATO en formato HEX?
Saludos


en realidad no porque me dejaron bien claro que debe ser ASCII.

pd:

por si no me explique, el error es unicamente en el "comando".
  • 0

#4 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 604 mensajes
  • LocationMar del Plata / Bs As / Argentina

Escrito 06 enero 2015 - 03:12

Hola a todos,

¿Yá probaste a enviar cada caracter de DATO en formato HEX?
Saludos


en realidad no porque me dejaron bien claro que debe ser ASCII.

pd:

por si no me explique, el error es unicamente en el "comando".
  • 0

#5 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 264 mensajes
  • LocationMedellín Colombia

Escrito 06 enero 2015 - 03:44

Hola,

¿Y lo siguiente te funciona?:


cadena := '9' + #28 + '0002-00000123';

cadena := '9' + #28 + #41+#42; // AB

Saludos
  • 0

#6 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 604 mensajes
  • LocationMar del Plata / Bs As / Argentina

Escrito 06 enero 2015 - 03:52

Hola,

¿Y lo siguiente te funciona?:


cadena := '9' + #28 + '0002-00000123';

cadena := '9' + #28 + #41+#42; // AB

Saludos


si pero es incorrecto por los datos.
Osea:
el "9" esta bien por ser el comando
el "#28" esta bien por ser el separador
el "0002-00000123" no es un dato valido para ese comando.
  • 0

#7 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 264 mensajes
  • LocationMedellín Colombia

Escrito 06 enero 2015 - 04:05

Hola,

Bien, en el comando específicamente que es DATO, o bien DATO es lo que tiene que imprimir, recalco:

¿Qué resultado muestra lo siguiente?


cadena := '9' + #28+#48+#48+#48+#50+#45+#48+#48+#48+#48+#49+#50+#51;


Saludos

  • 0

#8 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 604 mensajes
  • LocationMar del Plata / Bs As / Argentina

Escrito 06 enero 2015 - 04:32

cadena := '9' + #28+#48+#48+#48+#50+#45+#48+#48+#48+#48+#49+#50+#51;


eso me dice:

- que reconoce el comando pero los N datos son incorrectos.
  • 0

#9 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 264 mensajes
  • LocationMedellín Colombia

Escrito 06 enero 2015 - 04:42

Hola,

Revisa estos enlaces:


http://stackoverflow...ctly-to-printer

http://www.scalabium...faq/dct0087.htm

http://stackoverflow...ecific-commands

De pronto te pueden orientar a encontrar la solución




Saludos
  • 0

#10 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 264 mensajes
  • LocationMedellín Colombia

Escrito 06 enero 2015 - 04:50

También encontré esto en los foros:

http://forum.lazarus....html#msg133226

Al final dice que en los ejemplos de Lazarus se encuentra uno sobre envío de comandos.


Saludos
  • 0

#11 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 604 mensajes
  • LocationMar del Plata / Bs As / Argentina

Escrito 06 enero 2015 - 04:52

Hola,

Revisa estos enlaces:


http://stackoverflow...ctly-to-printer

http://www.scalabium...faq/dct0087.htm

http://stackoverflow...ecific-commands

De pronto te pueden orientar a encontrar la solución

Saludos


En realidad no, porque se envian por un metodo quien se encarga de la comunicacion.
  • 0

#12 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 604 mensajes
  • LocationMar del Plata / Bs As / Argentina

Escrito 06 enero 2015 - 04:58

También encontré esto en los foros:

http://forum.lazarus....html#msg133226

Al final dice que en los ejemplos de Lazarus se encuentra uno sobre envío de comandos.

Saludos


Deberia probarlo de todas maneras.
  • 0

#13 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 264 mensajes
  • LocationMedellín Colombia

Escrito 13 enero 2015 - 07:53

Hola,

¿Lograste solucionar tu problema?


Saludos
  • 0

#14 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 604 mensajes
  • LocationMar del Plata / Bs As / Argentina

Escrito 13 enero 2015 - 08:10

Aun no.
con este codigo veo el simbolo pero no lo recibo correctamente en la impresora.



delphi
  1. uses
  2. Windows;
  3. ..
  4. procedure TForm1.Button1Click(Sender: TObject);
  5. var
  6.   ws: WideString;
  7. begin
  8.   ws := UTF8Decode('Test this char: ô');
  9.   MessageBoxW(0, @ws[1], 'Test', MB_OK);
  10. end;



no estoy seguro donde esta problema ahora.
  • 0

#15 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 604 mensajes
  • LocationMar del Plata / Bs As / Argentina

Escrito 22 enero 2015 - 07:23

Para poder continuar con este proyecto, lo solucione momentaneamente con un .exe hecho en visual studio 2013  *-)
pero no cierro el tema por si alguien le encuentra la vuelta a este problema.

saludos.
  • 0




IP.Board spam blocked by CleanTalk.