Para Antonio Linares.

Post Reply
User avatar
Leon Valenzuela
Posts: 57
Joined: Tue Nov 04, 2008 2:08 pm
Location: Santiago - Chile
Contact:

Para Antonio Linares.

Post by Leon Valenzuela »

Estimado Antonio, estoy en una situación más o menos incómoda... Necesito abrir una OCX de epson, y la verdad, en el foro, no hay indicio alguno de cómo hacerlo. Esto pertenece al manejo de una impresora fiscal, y necesito obtener resultados en un plazo muy breve, (Antes del 21 de mayo), anteriormente te envié algunas cosas que refieren a otro modelo de otra marca de este tipo de dispositovos, y aun no tengo respuesta alguna. Sólo necesito saber, cómo incrusto la ocx en mi código fuente para invocar las funciones... espero puedas ayudarme... a todo aquel que sepa del manejo de estas máquinas fiscales, le estaré agradecido...

Sin más que decir, un abrazo, Leo.
Quiero hacer facturación electrónica...

Leon Valenzuela.
Santiago - Chile.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Para Antonio Linares.

Post by Antonio Linares »

Leon,

Prueba asi (este ejemplo es con el otro OCX que me enviastes):

Code: Select all

   DEFINE WINDOW oWnd TITLE "Test"

   oActiveX = TActiveX():New( oWnd, "OCXSAM350Lib.Ocxsam350" )

  oActiveX :init(2)
  oActiveX :abrirboleta(0, 0)
  oActiveX :agregaitem("Test", 1, 1)
  oActiveX :agregapago(0, 200)
  oActiveX :cierraboleta(0)
  oActiveX :fini()

  ACTIVATE WINDOW oWnd
 
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Leon Valenzuela
Posts: 57
Joined: Tue Nov 04, 2008 2:08 pm
Location: Santiago - Chile
Contact:

Re: Para Antonio Linares.

Post by Leon Valenzuela »

Estimado Antonio, primero que nada, gracias por responder, segundo, al poner esta línea "oActiveX = TActiveX():New( oWnd, "OCXSAM350Lib.Ocxsam350" )", el sistema inmediatamente deja de funcionar, por qué? no lo sé.

Trabajo con fivewin 9.08 y xharbour.

Saludos, Leo.
Quiero hacer facturación electrónica...

Leon Valenzuela.
Santiago - Chile.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Para Antonio Linares.

Post by Antonio Linares »

Leo,

Has comprobado en tus ejemplos que esta sea la descripción que usan ("PROGID") ?

"OCXSAM350Lib.Ocxsam350"
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Leon Valenzuela
Posts: 57
Joined: Tue Nov 04, 2008 2:08 pm
Location: Santiago - Chile
Contact:

Re: Para Antonio Linares.

Post by Leon Valenzuela »

Estimado Antonio, he probado el abrir la ocx con un redefine en un diálogo, y por supuesto, también creando una ventana, de las dos formas el programa se cuelga.

Un abrazo, Leo.
Quiero hacer facturación electrónica...

Leon Valenzuela.
Santiago - Chile.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Para Antonio Linares.

Post by Antonio Linares »

Que PROGID estas usando ?

Si no usas el correcto, la aplicación no podrá crear el ActiveX.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Para Antonio Linares.

Post by Antonio Linares »

Leo,

Por lo que te ha comentado Daniel, parece que el PROGID correcto es "EpsonFPHostControlX.EpsonFPHostControl"

Cada ActiveX tiene su propio PROGID que nos permite crearlo. Si se usa un PROGID equivocado, la aplicación no funciona.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Leon Valenzuela
Posts: 57
Joined: Tue Nov 04, 2008 2:08 pm
Location: Santiago - Chile
Contact:

Re: Para Antonio Linares.

Post by Leon Valenzuela »

Estimado Antonio, si bien es cierto, Daniel ha dado en el clavo, ahora me he entrampado en otra situación...

Hay algunos comandos que debo enviar a la impresora, éstos son hexadecimal, y no veo forma de enviarlos, pués no sé su equivalencia decimal, y menos aún, de qué forma representarlos con fwh...

Una de las tantas secuencias hexadecimal es la siguiente que está hecha en visual basic:

Code: Select all

Private Sub Command5_Click()
    
    ' Obtención de las Caracteristicas fiscales'
    Me.EpsonFPHostControl1.AddDataField Chr$(&H2) & Chr$(&HA)  // Secuencia de comando hexadecimal
    Me.EpsonFPHostControl1.AddDataField Chr$(&H0) & Chr$(&H1)  // Secuencia de comando hexadecimal
    
    Me.EpsonFPHostControl1.SendCommand
    
    While EpsonFPHostControl1.State = EFP_S_Busy
        DoEvents
    Wend

    MsgBox "Fiscal: " & Hex(Me.EpsonFPHostControl1.FiscalStatus)
    MsgBox "Printer: " & Hex(Me.EpsonFPHostControl1.PrinterStatus)
    MsgBox "Return Code: " & Hex(Me.EpsonFPHostControl1.ReturnCode)
    
    MsgBox "Nombre de la Versión     : " & Me.EpsonFPHostControl1.GetExtraField(1)
    MsgBox "ID del País              : " & Me.EpsonFPHostControl1.GetExtraField(2)
    MsgBox "Versión de Firmware Mayor: " & Me.EpsonFPHostControl1.GetExtraField(3)
    MsgBox "Versión de Firmware Menor: " & Me.EpsonFPHostControl1.GetExtraField(4)
    MsgBox "Versión de Firmware Compi: " & Me.EpsonFPHostControl1.GetExtraField(5)
    MsgBox "ID del mecanismo impresor: " & Me.EpsonFPHostControl1.GetExtraField(6)

    MsgBox "Nombre Mecanismo Impresor: " & Me.EpsonFPHostControl1.GetExtraField(7)
    MsgBox "Capacidad Memoria fiscal : " & Me.EpsonFPHostControl1.GetExtraField(8)
    MsgBox "Capacidad Memoria Transac: " & Me.EpsonFPHostControl1.GetExtraField(9)
    MsgBox "Capacidad Memoria Trabajo: " & Me.EpsonFPHostControl1.GetExtraField(10)
    MsgBox "Jumper de Servicio Conect: " & Me.EpsonFPHostControl1.GetExtraField(11)
    MsgBox "Estado de los dip-switche: " & Me.EpsonFPHostControl1.GetExtraField(12)



End Sub
Por cualquier ayuda, de antemano, gracias.

Un abrazo, Leo.
Quiero hacer facturación electrónica...

Leon Valenzuela.
Santiago - Chile.
User avatar
Adolfo
Posts: 815
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile
Contact:

Re: Para Antonio Linares.

Post by Adolfo »

Leon

EF:CreateObject("EpsonFPHostControlX.EpsonFPHostControl" )
.......

Comando:=Chr(10) + Chr(9)
EF:AddDataField(Comando)
EF:SendCommand()

Cuando necesties enviar mas de 2 caracteres de control debes hacer lo siguiente

Comando:=VtArrayWrapper(VT_UI1,(Chr(0) + Chr(0) + Chr(0) + Chr(0) )
EF:AddDataField(Comando)
EF:SendCommand()

Espero te sirva.

Saludos
Adolfo
;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Lenovo Legion Y520, 16GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1050
User avatar
Leon Valenzuela
Posts: 57
Joined: Tue Nov 04, 2008 2:08 pm
Location: Santiago - Chile
Contact:

Re: Para Antonio Linares.

Post by Leon Valenzuela »

Estimado Antonio, sigo con problemas, pues envíe una cadena hexadecimal a la impresora, y obviamente no logré imprimir, pero si logré generarle un bloqueo por software, alguna pista?
Quiero hacer facturación electrónica...

Leon Valenzuela.
Santiago - Chile.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Para Antonio Linares.

Post by Antonio Linares »

Leo,

Esta secuencia:
EpsonFPHostControl1.AddDataField Chr$(&H2) & Chr$(&HA)

es equivalente a:
EF:AddDataField( Chr( 2 ) + Chr( 10 ) )
regards, saludos

Antonio Linares
www.fivetechsoft.com
Gabriel Cortes
Posts: 1
Joined: Wed Oct 26, 2011 2:09 pm

Re: Para Antonio Linares.

Post by Gabriel Cortes »

Estimado

Uso la ocx "ocxsam350.ocx"

Code: Select all

      
        Dim Fiscal As OCXSAM350Lib.Ocxsam350
        Fiscal = New OCXSAM350Lib.Ocxsam350()

        Dim Valor As String

        Valor = Fiscal.init(2)
 
y en "Valor = Fiscal.init(2)" me arroja el siguiente error:

Error catastrófico (Excepción de HRESULT: 0x8000FFFF (E_UNEXPECTED))

Lo he intentado todo pero aun así no obtengo la solución
Ojala me puedan ayudar.

Saludos
Post Reply