¿Puedo incluir una rutina VB en una fuente xHarbour?

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

¿Puedo incluir una rutina VB en una fuente xHarbour?

Post by Leon Valenzuela »

¿Puedo incluir una rutina VB en una fuente xHarbour?

Tengo problemas para programar con una ocx que no se como abrir...

Ayuda please...
Quiero hacer facturación electrónica...

Leon Valenzuela.
Santiago - Chile.
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: ¿Puedo incluir una rutina VB en una fuente xHarbour?

Post by Daniel Garcia-Gil »

Leon

saludos, enviame el ocx a mi correo a ver que puedo ayudar, o puedes comunicarte conmigo por chat gmail: danielgarciagil@gmail.com o msn: danielgarciagil@cantv.net
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
Leon Valenzuela
Posts: 57
Joined: Tue Nov 04, 2008 2:08 pm
Location: Santiago - Chile
Contact:

Re: ¿Puedo incluir una rutina VB en una fuente xHarbour?

Post by Leon Valenzuela »

Daniel, gracias por responder, he puesto un mail para ti.

De antemano, gracias.
Quiero hacer facturación electrónica...

Leon Valenzuela.
Santiago - Chile.
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: ¿Puedo incluir una rutina VB en una fuente xHarbour?

Post by Daniel Garcia-Gil »

Leon...

esto es un pequeño ejemplo con el ocx que me enviaste, espero te sirva de punto de partida

Code: Select all

#include "FiveWin.ch"

//TxBaundRate
#define TXBR1200   0
#define TXBR2400   1
#define TXBR4800   2
#define TXBR9600   3
#define TXBR19200  4
#define TXBR38400  5

//TxCommPort
#define  TXCOM1    0
#define  TXCOM2    1
#define  TXCOM3    2
#define  TXCOM4    3

//TxErrorType
#define EFP_Success                   0
#define EFP_E_ComInUse                1
#define EFP_E_InvalidCom              2
#define EFP_E_ComAlreadyOpen          3
#define EFP_E_ComAlreadyClose         4
#define EFP_E_BadInitialization       5
#define EFP_E_ComClose                6
#define EFP_E_MaxDataLengthReached    7
#define EFP_E_InvalidDataInField      8
#define EFP_E_OperationInProgress     9
#define EFP_E_WriteError              10
#define EFP_E_ReadTimeOut             11
#define EFP_E_NackReceived            12
#define EFP_E_InvalidIndex            13

//TxFiscalState
#define EFP_S_Close 0
#define EFP_S_Idle  1
#define EFP_S_Busy  2

//TxProtocolType
#define protocol_Compatible  0
#define protocol_Extended    1

function Main()

   local oWnd, oEpson

   DEFINE WINDOW oWnd TITLE "Epson Activex"

   oEpson = TEpsonFPHostControl():New( oWnd ) //TActiveX():New( oWnd, "EpsonFPHostControlX.EpsonFPHostControl" )//
   oEpson:bOnOpen  = {|| Msginfo( "Port Opened" ) }
   oEpson:bOnClose = {|| Msginfo( "Port Closed" ) }
   oEpson:bOnError = {|| MsgInfo( oEpson:LastError ) } 
   oEpson:OpenPort()
   ? "BaudRate ANTES", oEpson:BaudRate
   oEpson:BaudRate = TXBR19200
   ? "BaudRate DESPUES", oEpson:BaudRate
   ? "CommPort", oEpson:CommPort
   ? "ExtraFieldsCount", oEpson:ExtraFieldsCount
   ? "FiscalStatus", oEpson:FiscalStatus
   ? "LastError", oEpson:LastError
   ? "PrinterStatus", oEpson:PrinterStatus
   ? "ProtocolType", oEpson:ProtocolType
   ? "ReturnCode", oEpson:ReturnCode
   ? "State", oEpson:State
   oEpson:ClosePort()
  
   ACTIVATE WINDOW oWnd 
      
return nil


CLASS TEpsonFPHostControl FROM TActiveX

   DATA oActiveX
   DATA oWnd
   
   DATA bOnOpen
   DATA bOnAck
   DATA bOnClose
   DATA bOnError
   DATA bOnFinalAnswer
   DATA bOnIntermediateAnswer
   DATA bOnNack
   DATA bOnRead
   DATA bOnWrite
   
   METHOD New( oWnd ) 
   
   METHOD HandleEpsonEvent( event, aParams, pParams )
   
ENDCLASS

METHOD New( oWnd ) CLASS TEpsonFPHostControl

   ::oWnd = oWnd
   
   Super:New( oWnd, "EpsonFPHostControlX.EpsonFPHostControl" )

   ::bOnEvent = { | event, aParams, pParams | ::HandleEpsonEvent( event, aParams, pParams ) }
   
RETURN Self   

//-------

METHOD HandleEpsonEvent( event, aParams, pParams ) CLASS TEpsonFPHostControl

   LOCAL cEvent := UPPER( event )
   
   SWITCH cEvent
      CASE "ONOPEN"
         IF ::bOnOpen != NIL .AND. ValType( ::bOnOpen ) == "B"
            Eval( ::bOnOpen, aParams )
         ENDIF
         EXIT
      CASE "ONACK"
         IF ::bOnAck != NIL .AND. ValType( ::bOnAck ) == "B"
            Eval( ::bOnAck, aParams )
         ENDIF
         EXIT
      CASE "ONCLOSE"
         IF ::bOnClose != NIL .AND. ValType( ::bOnClose ) == "B"
            Eval( ::bOnClose, aParams )
         ENDIF
         EXIT
      CASE "ONERROR"
         IF ::bOnError != NIL .AND. ValType( ::bOnError ) == "B"
            Eval( ::bOnError, aParams )
         ENDIF
         EXIT
      CASE "ONFINALANSWER"
         IF ::bOnFinalAnswer != NIL .AND. ValType( ::bOnFinalAnswer ) == "B"
            Eval( ::bOnFinalAnswer, aParams )
         ENDIF
         EXIT
      CASE "ONINTERMEDIATEANSWER"
         IF ::bOnIntermediateAnswer != NIL .AND. ValType( ::bOnIntermediateAnswer ) == "B"
            Eval( ::bOnIntermediateAnswer, aParams )
         ENDIF
         EXIT
      CASE "ONNACK"
         IF ::bOnNack != NIL .AND. ValType( ::bOnNack ) == "B"
            Eval( ::bOnNack, aParams )
         ENDIF
         EXIT
      CASE "ONREAD"
         IF ::bOnRead != NIL .AND. ValType( ::bOnRead ) == "B"
            Eval( ::bOnRead, aParams )
         ENDIF
         EXIT
      CASE "ONWRITE"
         IF ::bOnWrite != NIL .AND. ValType( ::bOnWrite ) == "B"
            Eval( ::bOnWrite(), aParams )
         ENDIF
         EXIT
   ENDSWITCH
   
RETURN NIL
   
 
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
Leon Valenzuela
Posts: 57
Joined: Tue Nov 04, 2008 2:08 pm
Location: Santiago - Chile
Contact:

Re: ¿Puedo incluir una rutina VB en una fuente xHarbour?

Post by Leon Valenzuela »

Daniel, muchas gracias por lo gráfico de tu ejemplo, lo he copiado tal cual en una prg llamada EpsonOCX.prg, y al compilarla con FiveWin 9.08 y xHarbour, me arroja los siguientes errores:

Code: Select all

xHarbour Compiler build 1.2.1 (SimpLex) (Rev. 6406)
Copyright 1999-2009, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'epsonocx.prg' and generating preprocessed output to 'epsonocx.ppo'...

epsonocx.prg(109) Error E0059  Invalid SWITCH Constant 'ONOPEN'.

epsonocx.prg(114) Error E0059  Invalid SWITCH Constant 'ONACK'.

epsonocx.prg(119) Error E0059  Invalid SWITCH Constant 'ONCLOSE'.

epsonocx.prg(124) Error E0059  Invalid SWITCH Constant 'ONERROR'.

epsonocx.prg(129) Error E0059  Invalid SWITCH Constant 'ONFINALANSWER'.

epsonocx.prg(134) Error E0059  Invalid SWITCH Constant 'ONINTERMEDIATEANSWER'.

epsonocx.prg(139) Error E0059  Invalid SWITCH Constant 'ONNACK'.

epsonocx.prg(144) Error E0059  Invalid SWITCH Constant 'ONREAD'.

epsonocx.prg(149) Error E0059  Invalid SWITCH Constant 'ONWRITE'.

9 errors

No code generated
Agradecería una orientación, puesto que los bucles SWITCH no los manejo, de antemano, gracias.


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

Leon Valenzuela.
Santiago - Chile.
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: ¿Puedo incluir una rutina VB en una fuente xHarbour?

Post by Daniel Garcia-Gil »

Leon

Cambia el SWITCH por DO CASE

ejemplo

Code: Select all

   
   DO CASE 
      CASE cEvent == "ONOPEN"
      ...
      CASE cEvent == "ONCLOSE"
   ...
  ENDCASE
 
elimina los EXIT
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
Leon Valenzuela
Posts: 57
Joined: Tue Nov 04, 2008 2:08 pm
Location: Santiago - Chile
Contact:

Re: ¿Puedo incluir una rutina VB en una fuente xHarbour?

Post by Leon Valenzuela »

Daniel, gracias otra vez, por intuición lo hice, y funcionó, ahora, la pregunta es, ¿cómo uso la función "AddDataField" de la ocx? tengo que definirla?

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

Leon Valenzuela.
Santiago - Chile.
User avatar
Lautaro
Posts: 322
Joined: Fri Oct 07, 2005 2:44 pm
Location: Osorno, Chile
Contact:

Re: ¿Puedo incluir una rutina VB en una fuente xHarbour?

Post by Lautaro »

Hola,

Disculpen que me intrometa, pero si no me equivoco deberias llamarlo asi :

Code: Select all

   ...
   oEpson:AddDataField(....) //<-- No olvidar poner los parametros correctos

   ...
   ...
 
Saludos,

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

Re: ¿Puedo incluir una rutina VB en una fuente xHarbour?

Post by Leon Valenzuela »

Daniel, tu class ha sido muy valiosa para mi desarrollo, y estoy seguro que será de mucha utilidad para varios en el foro. Te cuento, incluí éstas líneas de código, y supongo que por la respuesta están bien...

Code: Select all

? "Añadiendo venta", oEpson:AddDataField("hola")
    ? "Añadiendo venta", oEpson:AddDataField("Holanda")
A ambas la respuesta es .T., intuyo que ha añadido la venta a la memoria fiscal de impresora.

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

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

Re: ¿Puedo incluir una rutina VB en una fuente xHarbour?

Post by Leon Valenzuela »

Lautaro, muchas gracias por tu aporte... creo que la cosa funcionará...
al menos, eso espero...

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

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

Re: ¿Puedo incluir una rutina VB en una fuente xHarbour?

Post by Leon Valenzuela »

Help! Cómo envío las cadenas hexadecimales, como la siguiente línea de comando en visual basic?

Code: Select all

 Me.EpsonFPHostControl1.AddDataField Chr$(&H2) & Chr$(&HA)
Me.EpsonFPHostControl1.AddDataField Chr$(&H0) & Chr$(&H1)
De antemano, gracias.
Quiero hacer facturación electrónica...

Leon Valenzuela.
Santiago - Chile.
User avatar
QAZWSX2K
Posts: 359
Joined: Tue Oct 25, 2005 7:06 pm
Location: Bogota - Caracas

Re: ¿Puedo incluir una rutina VB en una fuente xHarbour?

Post by QAZWSX2K »

saludos

amigo leon, pudistes por fin grabar la venta, tengo el mismo problema ahora y quizas me puedas ayudar, como vi tu ultima pregunta sin responder no se si al fin lo pudistes hacer
Software especializado para oficinas contables con grandes volumenes de Informacion
Impresion de todos los formularios del Seniat, Dian

alex_patino74@hotmail.com
whatsapp 57+3214777217
User avatar
Adolfo
Posts: 815
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile
Contact:

Re: ¿Puedo incluir una rutina VB en una fuente xHarbour?

Post by Adolfo »

QAZWSX2K, Leon

Haganlo asi...
Ejemplos

//--------------------------------------------
Comando:=Chr(5) + Chr(1)
lRes:=EF:AddDataField(Comando)

Extension:=VtArrayWrapper(VT_UI1,( Chr(0) + Chr(0) + Chr(0) + Chr(0) ) )
lRes:=EF:AddDataField(Extension)
lRes:=SendCommand()
//---------------------------------------------


En el cuerpo de la Boleta, cada linea de productos, hacer esto.

//---------------------------------------------
Comando:=Chr(10) + Chr(6)
lRes:=EF:AddDataField(Comando)

Extension:=VtArrayWrapper(VT_UI1,( Chr(0) + Chr(0) + Chr(1) + Chr(0) ) )
EF:AddDataField(Extension)

EF:AddDataField("")
EF:AddDataField("")
EF:AddDataField("")
EF:AddDataField("")
EF:AddDataField("")
EF:AddDataField( Substr(cProducto,1,30))
EF:AddDataField( nCantidad )
EF:AddDataField( nValorUnidad )
EF:AddDataField( 1900 )

lRes:=SendCommand()


//---------------------------------------------


Cualquier avance o duda, posteenla..
Saludos

Desde Chile
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
Post Reply