PAGINA DE CODIGO 437 PARA IMPRESORAS FISCALES HASAR

142 views
Skip to first unread message

Rosario Giuffré

unread,
Aug 2, 2018, 3:00:29 PM8/2/18
to oohg
Colegas, buenas tardes.

Tengo un programa para impresoras fiscales HASAR desde hace años. Hice unas correciones y ya no emite NOTAS de CREDITO. 
Despues de no encontrar la solucion hice una consulta al fabricante enviando los log de funcionamieNto de mi programa a travez del OCX de ellos.
Me contestan que el problema radica en que los comandos de la impresora deben ser de acuerdo a CP437 sino los códigos por encima del 127 no son interpretados.
Utilizo PSPAD como editor, QPM para compilar/linquear y Win10 en la PC.
Lo que no sé es si tengo que modificar configuración del editor o del compilador y como hacerlo claro, porque probé de todo y nada.
Gracias por la atención y espero que haya quedado clara la consulta.
Agradezco por cualquier ayuda.

ROSARIO GIUFFRE
SoftSar Sistemas.

Oscar Martin

unread,
Aug 12, 2018, 2:30:02 PM8/12/18
to oohg
Hola Rosario, 
no sé si lo siguiente te puede ayudar, pero por si acaso te lo digo a ver si le sacas la utilidad que estás buscando.
Existe un utilitario como QPM que se llama HbIDE que está realizado en Harbour, su editor permite la codificación que estás buscando. Yo creo que con alguna adaptación de tu código te podría servir. Te paso imagen de lo que te digo.
La página de descarga es:
Me dices si te sirve o no.
saludos
Oscar Martín
2018-08-12 20_27_26-Window.png

Rosario Giuffré

unread,
Aug 13, 2018, 9:11:09 AM8/13/18
to oo...@googlegroups.com
Que tal Oscar.

Gracias por el aporte.
Teniendo en cuenta que todo lo que he hecho hasta ahora no me dio resultado ( cosa que no entiendo que esta pasando ) voy a probar con otras alternativas.
Hace basante tiempo que usso QPM é hice la consulta al foro pero no tuve respuesta alguna dado que suponia alguna corrección en la forma de compilar.

Pruebo y veo si es dócil con Harbour y OOHG y ademas logro el cometido y te comento. 
Lo estas usando?

Saludos
Rosairo Giufffré


--
Has recibido este mensaje porque estás suscrito al grupo "oohg" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+uns...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a oo...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/oohg.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Fernando Yurisich

unread,
Aug 13, 2018, 9:57:51 AM8/13/18
to oo...@googlegroups.com
Rosario:

El problema no tiene nada que ver con QPM.
¿No será que editaste tus fuentes y les cambiaste el formato a UTF?
Yo utilizo PSPAD y siempre lo configuro para formato ANSI.

Saludos
Fernando Yurisich

Oscar Martin

unread,
Aug 13, 2018, 10:08:07 AM8/13/18
to oohg
Hola Roser, 
Yo no lo he usado, pero creo que te permite editar los fuentes y cambiarlo al 437 y volver a usarlos de nuevo con QPM. De todos modos todos estos lenguajes usan Harbour.
Un saludo
Oscar 
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+unsubscribe@googlegroups.com.

Rosario Giuffré

unread,
Aug 13, 2018, 5:01:43 PM8/13/18
to oo...@googlegroups.com
Fernando, gracias por opinar sobre el tema.

Uso QPM hace mucho y me parece perfecto. NO tengo problemas con ninguna aplicacion incluso con esta para impresoras fiscales.
El formato que utilizo tambien es ANSI y cuando surgieron estos problemas probe, siempre con PSPAD otros formatos que admite sin éxito.
A los compiladores se les suele pasar alguna bandera para obligarlos a usar ciertas paginas; por eso pense que quizas en QPM habia que cargar algo adicional.
Volviendo al problema, Hice una pequeña rutina que compilo con QPM y cuando muestra el CHR(147) es una apertura de comillas y el CHR(128) es el simbolo del euro.
Ambos corresponden al PC1252 de WIN, incluso si no pongo ningún HD.CODEPAGE, para que Harbour tome el 437 por defecto.
Me gustaria saber que estoy hacendo mal...porque no es casualidad.

Saludos y gracias
Rosario Giuffré
SoftSar Sistemas


//*********************************
#include 'oohg.ch'
FUNCTION MAIN()

 REQUEST HB_LANG_ES
 HB_LANGSELECT("ES")
   
  DEFINE WINDOW WinCliTICK OBJ oWTICK ;
     AT 0,0 ;
     WIDTH 500 ;
     HEIGHT 500 ;
     TITLE 'TEST de Comprobantes FISCALES' ;
     NOSYSMENU;
     NOMAXIMIZE ;                            
     MAIN
         
          msginfo( HB_LANGNAME() )
          
          MSGINFO( STR(147)+ ' ->'+ CHR(147))
          MSGINFO( STR(127)+ ' ->'+ CHR(128))
          
          msginfo( 'La imagen de los códigos pertenecen a PC1252' )

          @ 400, 20 LABEL Lb VALUE 'ESCAPE para TERMINAR'  AUTOSIZE
  
  ON KEY ESCAPE ACTION oWTICK:RELEASE()
  
  END WINDOW

  oWTICK:Center()
oWTICK:activate( )
   
RETURN NIL


Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+uns...@googlegroups.com.

Para publicar en este grupo, envía un correo electrónico a oo...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/oohg.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
Has recibido este mensaje porque estás suscrito al grupo "oohg" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+uns...@googlegroups.com.

Fernando Yurisich

unread,
Aug 13, 2018, 5:29:11 PM8/13/18
to oo...@googlegroups.com
Prueba así:

hb_langSelect("ES", "CP437" )

Saludos
Fernando Yurisich

Rosario Giuffré

unread,
Aug 14, 2018, 10:24:24 AM8/14/18
to oo...@googlegroups.com
Que tal Fernando, buenn día.

Utilice la instruccion indicada en la rutina de testeo y compila todo bien, pero al correr da el error que adjunto.

Saludos
ROSARIO GIUFFRE
SoftSar Sistemas
ERROR.png

Rosario Giuffré

unread,
Aug 14, 2018, 10:33:17 AM8/14/18
to oo...@googlegroups.com
Fernando pido disculpas.
Al agregar REQUEST HB_LANG_ES el error no ocurre, pero de todas formas al comprobar el conternido de los CHR(128) Y CHR(147) siguen mostrando el simbolo del EURO y apertura de comillas 
respetivamente. 
Para mí ya es un misterio. Lo mas grave que no puedo resolver el  problema.

Saludos
Rosario Giuffré 

Ciro Vargas C

unread,
Aug 14, 2018, 10:59:08 AM8/14/18
to oo...@googlegroups.com


rosario que verison de harbour y oohg esta usando ?

saludos
Ciro

Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+unsubscribe@googlegroups.com.

Para publicar en este grupo, envía un correo electrónico a oo...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/oohg.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
Has recibido este mensaje porque estás suscrito al grupo "oohg" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+unsubscribe@googlegroups.com.

Para publicar en este grupo, envía un correo electrónico a oo...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/oohg.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
Has recibido este mensaje porque estás suscrito al grupo "oohg" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+unsubscribe@googlegroups.com.

Para publicar en este grupo, envía un correo electrónico a oo...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/oohg.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
Has recibido este mensaje porque estás suscrito al grupo "oohg" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+unsubscribe@googlegroups.com.

Para publicar en este grupo, envía un correo electrónico a oo...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/oohg.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
Has recibido este mensaje porque estás suscrito al grupo "oohg" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+unsubscribe@googlegroups.com.

Para publicar en este grupo, envía un correo electrónico a oo...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/oohg.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Juan Manuel Del Valle

unread,
Aug 14, 2018, 11:15:43 AM8/14/18
to oohg
Hola Rosario ayer conteste lo siguiente no se porque no llego...

Hola Rosario, proba reemplazando     CHR(147) POR CHR(244) (ES SU IGUAL EN UTF8)
                                                       CHR(128) POR CHR(199)    "

https://en.wikipedia.org/wiki/Code_page_437
http://kellykjones.tripod.com/webtools/ascii_utf8_table.html

Parece loco pero funciona ?

Saludos.
Juan Manuel Del Valle

Rosario Giuffré

unread,
Aug 14, 2018, 6:05:27 PM8/14/18
to oo...@googlegroups.com
Que tal Ciro.

La version de Harbour es 3.2 ( r.1503120841 ) y el OOHG ver. 2015.03.14.

Gracias y Saludos
Rosario Giuffré
SoftSar Sistemas

--
Has recibido este mensaje porque estás suscrito al grupo "oohg" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+uns...@googlegroups.com.

Rosario Giuffré

unread,
Aug 14, 2018, 6:07:17 PM8/14/18
to oo...@googlegroups.com
Que tal Juan.

Gracias por el aporte, pero realmente no funciona.
No sé cual es el problema.
Normalmente cuando suceden estas cosas termina siendo un tonteria. Pero hay que encontrarla.

Saludos
Rosario Giuffré
SoftSar Sistemas

Juan Manuel Del Valle

unread,
Aug 15, 2018, 8:16:35 AM8/15/18
to oohg
Hola Rosario probando lo que comentas con diferentes code page(s) .... no importa cual  el resultado es siempre el mismo en entorno gráfico y los carcteres representados no son lo que se espera.

En modo mixto / consola funciona.

Aca va un ejemplo funcional para los mas ilustres del grupo....


#include 'oohg.ch'

FUNCTION MAIN()

LOCAL cdp

REQUEST HB_GT_WIN_DEFAULT


? STR(147)+ ' -> '+ CHR(147)
? STR(128)+ ' -> '+ CHR(128)
? "la imagen de los codigos pertenecen a CP437"
INKEY(0)

 
 DEFINE WINDOW WinCliTICK OBJ oWTICK ;
             AT 0,0 ;
             WIDTH 500 ;
             HEIGHT 500 ;
             TITLE 'TEST de Comprobantes FISCALES' ;
             NOSYSMENU;
             NOMAXIMIZE ;                           
             MAIN
            
           FOR EACH cdp IN get_list_of_real_codepages()
                     msginfo(hb_cdpUniID( cdp ))
              NEXT
  
          msginfo( HB_LANGNAME() )        
         
          msginfo( STR(147)+ ' -> '+ CHR(147)+CHR(10)+CHR(13)+STR(128)+ ' -> '+ CHR(128)+CHR(10)+CHR(13)+"La imagen de los códigos pertenecen a CP1252"+CHR(10)+CHR(13)+"LOS RESULTADOS SON DIFERENTES POR QUE FUNCIONA SOLO EN MODO CONSOLA?" )

         
         oWTICK:RELEASE()
 
  END WINDOW

  oWTICK:Center()
  oWTICK:activate( )
 
 
 
  
RETURN NIL
FUNCTION get_list_of_real_codepages()
   LOCAL s_uni := { => }
   LOCAL cdp
   s_uni := { => }
   FOR EACH cdp IN hb_cdpList()
      s_uni[ hb_cdpUniID( cdp ) ] := cdp
   NEXT
RETURN s_uni

Rosario Giuffré

unread,
Aug 15, 2018, 9:02:29 AM8/15/18
to oo...@googlegroups.com
Tal cula Juan.

Tengo una rutinita similar que corre en DOS y muestra la tabla ASCII hasta el codigo 255-
Segun modifiques con CHCP el codigo de pagina la tabla cambia; en sistesis funciona. No pasa lo mismo en entorno gráfico. 
Es raro lo que sucede o no lo entiendo-
A los fines de mi problema entiendo que es lo que esta pasando. 
PREGUNTA: Porque no sucedia antes.

Saludos
Rosario Giuffré


--

Fernando Yurisich

unread,
Aug 15, 2018, 10:48:57 AM8/15/18
to oo...@googlegroups.com
RESPUESTA: pregunta en el grupo de usuarios de Harbour, hace un tiempo hicieron muchas modificaciones relacionadas a las codepages.

Saludos
Fernando Yurisich

Juan Manuel Del Valle

unread,
Aug 15, 2018, 2:24:41 PM8/15/18
to oohg
Rosario por lo que estuve viendo desde la version 3 o 3.2 de harbour pasó a UNICODE y solo deja CP437/etc en consola para compatibilidad con viejos sistemas clipper.


Ahora en tu programa

oHX:Enviar( ArmaCMD( CHR( 147 ), { "1", cNumCom } ))  // ENVIA A LA IMPRESORA EL COMPROBANTE QUE GENERA LA N/C.

oHX:Enviar( ArmaCMD( CHR( 128 ), { "R", "T"} ))         // ABRE DOCUMENTO NO FISCAL HOMOLOGADO PARA N/C "A"

oHX:Enviar( ArmaCMD( CHR( 128 ), { "S", "T"} ))          // ABRE DOCUMENTO NO FISCAL HOMOLOGADO PARA N/C "B"        


si agregas 


request HB_CODEPAGE_ESMWIN

hb_setcodepage("ESMWIN")

set language to spanish


y cambias CHR(147) por HB_UCHAR(244) y CHR(128) por HB_UCHAR(199)


oHX:Enviar( ArmaCMD( HB_UCHAR(244), { "1", cNumCom } ))  // ENVIA A LA IMPRESORA EL COMPROBANTE QUE GENERA LA N/C.

oHX:Enviar( ArmaCMD( HB_UCHAR(199), { "R", "T"} ))         // ABRE DOCUMENTO NO FISCAL HOMOLOGADO PARA N/C "A"

oHX:Enviar( ArmaCMD( HB_UCHAR(199), { "S", "T"} ))          // ABRE DOCUMENTO NO FISCAL HOMOLOGADO PARA N/C "B"       


No te funciona? Si es así podes mandar la rutina ArmaCMD para analizarla...?


Aca va un ejemplo donde te muestro los resultados de la impresíon en pantalla de los caracteres.


#include 'oohg.ch'


FUNCTION MAIN()


REQUEST HB_GT_WIN_DEFAULT


? STR(128)+ ' -> '+ CHR(128)

? STR(147)+ ' -> '+ CHR(147)

? "la imagen de los codigos pertenecen a CP437"

INKEY(0)

 

request HB_CODEPAGE_ESMWIN

hb_setcodepage("ESMWIN")

set language to spanish


DEFINE WINDOW WinCliTICK OBJ oWTICK ;

AT 0,0 ;

  WIDTH 500 ;

  HEIGHT 500 ;

  TITLE 'TEST de Comprobantes FISCALES' ;

  NOSYSMENU;

  NOMAXIMIZE ;                            

  MAIN

 

    msginfo( str(128)+' -> '+HB_UCHAR(199)+chr(10)+chr(13)+str(147)+' -> '+HB_UCHAR(244))

oWTICK:RELEASE()

  

END WINDOW


oWTICK:Center()

oWTICK:activate( )


RETURN NIL

Rosario Giuffré

unread,
Aug 15, 2018, 4:52:39 PM8/15/18
to oo...@googlegroups.com
Gracias por tu trabajo Juan.
LLego a la oficina y pruebo.
Te comento los resultados. No sabi lo que cambiaron la pagina. Fernando tambien me hizo el mismo comentario y que viera en el foro de Harbour.

Saludos
ROSARIO GIUFFRE

--

Rosario Giuffré

unread,
Aug 16, 2018, 2:10:09 PM8/16/18
to oohg
Que tal Juan.

Probe las rutinas que enviaste y si, por pantalla ahora se ve todo bien, como debe ser, pero al hacer las correcciones para enviar la línea de comando a la impresora a la Sra Hasar 715 no le gusta. La verdad que me agoto el problema. No entiendo como antes funcionaba. Desde la era del DOS tengo programas para impresoras fiscales, tanto Hasar como Epson. 
Tendre que seguir investigando. Te copio de todas formas la función que arma las cadenas de comandos y la que la desempaqueta. Veras que son dos rutinas simples que siempren funcionaron perfectamente bien.

Saludos
Rosario Giuffré
SoftSar Sistemas

FUNCTION ArmaCMD( cCMD, aCampos )
 LOCAL cSe:= CHR(28)              // SEPARADOR DE CAMPOS
 LOCAL cCampos:= ""               // Campos del comando
  // Procedimiento: ARMA LA CADENA CON EL COMANDO
 // AGREGANDO LOS SEPARADORES DE CAMPO
  //DEFAULT aCampos TO {}
  IF LEN( aCampos)!= 0
  aEval( aCampos, { |x| cCampos+= cSe+ x } )
  cCampos:=  cCMD+ cCampos
 ELSE
  cCampos:=  cCMD 
  ENDIF
 
 /***
 @ 22, 5 SAY SPACE( 60 )
 @ 22, 5 SAY cCampos
 ESP_TEC()
 ***/
RETURN cCampos
FUNCTION DesArmaCMD( cResp )
   LOCAL cData := ""
   LOCAL aData := {}
   LOCAL cRst  := cResp
   LOCAL cSe   := CHR(28)              // SEPARADOR DE CAMPOS
  
   //MSGINFO( cResp )
  WHILE AT( cSe, cRst )!= 0
   cData:= SUBSTR( cRst, 1, AT( cSe, cRst )- 1 )
     AADD( aData, cData )
     cRst:= SUBSTR( cRst, AT( cSe, cRst )+ 1 )
   ENDDO
   IF !EMPTY( cRst )
      AADD( aData, cRst )
   ENDIF
RETURN( aData )                   

Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages