FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour 驴Puedo incluir una rutina VB en una fuente xHarbour?
Posts: 57
Joined: Tue Nov 04, 2008 02:08 PM
驴Puedo incluir una rutina VB en una fuente xHarbour?
Posted: Mon May 17, 2010 04:42 PM

驴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.
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: 驴Puedo incluir una rutina VB en una fuente xHarbour?
Posted: Mon May 17, 2010 05:02 PM

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

Posts: 57
Joined: Tue Nov 04, 2008 02:08 PM
Re: 驴Puedo incluir una rutina VB en una fuente xHarbour?
Posted: Mon May 17, 2010 10:26 PM

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

De antemano, gracias.

Quiero hacer facturaci贸n electr贸nica...



Leon Valenzuela.

Santiago - Chile.
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: 驴Puedo incluir una rutina VB en una fuente xHarbour?
Posted: Tue May 18, 2010 11:37 AM
Leon...

esto es un peque帽o ejemplo con el ocx que me enviaste, espero te sirva de punto de partida
Code (fw): Select all Collapse
#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
Posts: 57
Joined: Tue Nov 04, 2008 02:08 PM
Re: 驴Puedo incluir una rutina VB en una fuente xHarbour?
Posted: Tue May 18, 2010 03:29 PM
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 (fw): Select all Collapse
xHarbour Compiler build 1.2.1 (SimpLex) (Rev. 6406)
Copyright 1999-2009, http://www.xharbour.org <!-- m --><a class="postlink" href="http://www.harbour-project.org/">http://www.harbour-project.org/</a><!-- m -->
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.
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: 驴Puedo incluir una rutina VB en una fuente xHarbour?
Posted: Tue May 18, 2010 03:44 PM
Leon

Cambia el SWITCH por DO CASE

ejemplo

Code (fw): Select all Collapse
   
   DO CASE 
      CASE cEvent == "ONOPEN"
      ...
      CASE cEvent == "ONCLOSE"
   ...
  ENDCASE


elimina los EXIT
Posts: 57
Joined: Tue Nov 04, 2008 02:08 PM
Re: 驴Puedo incluir una rutina VB en una fuente xHarbour?
Posted: Tue May 18, 2010 04:05 PM

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.
Posts: 337
Joined: Fri Oct 07, 2005 02:44 PM
Re: 驴Puedo incluir una rutina VB en una fuente xHarbour?
Posted: Tue May 18, 2010 05:01 PM
Hola,

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

Code (fw): Select all Collapse
   ...
   oEpson:AddDataField(....) //<-- No olvidar poner los parametros correctos

   ...
   ...


Saludos,

Lautaro Moreira
Hola,

Soy un Contador que por necesidad aprendio a programar y se quedo programando.
Posts: 57
Joined: Tue Nov 04, 2008 02:08 PM
Re: 驴Puedo incluir una rutina VB en una fuente xHarbour?
Posted: Tue May 18, 2010 05:15 PM
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 (fw): Select all Collapse
? "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.
Posts: 57
Joined: Tue Nov 04, 2008 02:08 PM
Re: 驴Puedo incluir una rutina VB en una fuente xHarbour?
Posted: Tue May 18, 2010 05:16 PM

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.
Posts: 57
Joined: Tue Nov 04, 2008 02:08 PM
Re: 驴Puedo incluir una rutina VB en una fuente xHarbour?
Posted: Tue May 18, 2010 10:20 PM
Help! C贸mo env铆o las cadenas hexadecimales, como la siguiente l铆nea de comando en visual basic?

Code (fw): Select all Collapse
 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.
Posts: 364
Joined: Tue Oct 25, 2005 07:06 PM
Re: 驴Puedo incluir una rutina VB en una fuente xHarbour?
Posted: Sun Aug 15, 2010 03:30 PM

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
Posts: 883
Joined: Tue Oct 11, 2005 11:57 AM
Re: 驴Puedo incluir una rutina VB en una fuente xHarbour?
Posted: Mon Aug 16, 2010 01:20 PM

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
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650

Continue the discussion