Page 1 of 1

Para Antonio Linares.

Posted: Mon May 17, 2010 3:07 pm
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.

Re: Para Antonio Linares.

Posted: Mon May 17, 2010 6:23 pm
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
 

Re: Para Antonio Linares.

Posted: Mon May 17, 2010 10:07 pm
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.

Re: Para Antonio Linares.

Posted: Tue May 18, 2010 7:42 am
by Antonio Linares
Leo,

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

"OCXSAM350Lib.Ocxsam350"

Re: Para Antonio Linares.

Posted: Tue May 18, 2010 3:21 pm
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.

Re: Para Antonio Linares.

Posted: Tue May 18, 2010 4:54 pm
by Antonio Linares
Que PROGID estas usando ?

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

Re: Para Antonio Linares.

Posted: Tue May 18, 2010 5:25 pm
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.

Re: Para Antonio Linares.

Posted: Wed May 19, 2010 2:48 pm
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.

Re: Para Antonio Linares.

Posted: Wed May 19, 2010 4:43 pm
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

Re: Para Antonio Linares.

Posted: Thu May 20, 2010 8:41 pm
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?

Re: Para Antonio Linares.

Posted: Thu May 20, 2010 10:12 pm
by Antonio Linares
Leo,

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

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

Re: Para Antonio Linares.

Posted: Wed Nov 16, 2011 7:15 pm
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