[RESOLVIDO] DarumaFrameWork.dll - FS600

Discussão em 'EMS , HCM e Totvs 11' iniciado por victorcolombo, Fevereiro 6, 2015.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. lwazevedo

    lwazevedo Membro Ativo

    Bom dia.

    Caro @victorcolombo não utilizo produto totvs mas uso impressoras daruma aqui.


    neste exemplo são duas funções diferentes da dll mas ambas não recebem parâmetros somente
    retornam o parâmetro da dll....

    Toda função da darumaframework tem retorno de erro, então toda e qualquer forma de execução deve ter um
    retorno mesmo a função sendo void.


    Tente executar desta forma.

    Código:
                              /*nome da função */                     /*executar externo*/  /*caminho da dll*/                         /*executar como Windows*/  /*Persistent mantem na memoria*/
    
    DEFINE VARIABLE vha-Call AS HANDLE NO-UNDO.
    DEFINE VARIABLE vin-retorno AS INTEGER.
    
    PROCEDURE  iCFAbrirPadrao_ECF_Daruma EXTERNAL "c:\darumaDLL\DarumaFramework.dll"  STDCALL  PERSISTENT:
    DEF RETURN PARAMETER retorno AS short.  /*na daruma o retorno sempre tem que ser short*/
    END PROCEDURE.
    
    /*se desta forma não funcionar tente executar desta forma.*/
    
    FUNCTION  rStatusImpressora_DUAL_DarumaFramework RETURNS CHARACTER():
    
    CREATECALL  vha-Call.
    ASSIGN
             vha-Call:PERSISTENT = TRUE  /*persistente mantem na memoria*/
             vha-Call:LIBRARY-CALLING-CONVENTION = "STDCALL" /*diz para executar a dll conforme o Windows */
             vha-Call:CALL-NAME = "rStatusImpressora_DUAL_DarumaFramework"  /*nome da função a ser executada exatamente conforme documentação da daruma*/
             vha-Call:LIBRARY = "c:\darumaDLL\DarumaFramework.dll"  /*caminho onde esta a dll */
             vha-Call:CALL-TYPE = DLL-CALL-TYPE /*Diz que o tipo e de uma dll*/
             vha-Call:NUM-PARAMETERS = 0          /*quantidade de parâmetros sem contar o de retorno*/
            vha-Call:RETURN-VALUE-DLL-TYPE = "short".  /* na daruma o tipo de retorno sempre tem que ser short */
    
            vha-Call:INVOKE ().
           vin-retorno = vha-Call:RETURN-VALUE.  /*armazena o retorno da dll*/
           DELETE OBJECT vha-Call.
             RETURN vch-msg.
    
    END FUNCTION.
    Segundo exemplo com parêmetros.
    Código:
    PROCEDURE iCFImprimirParametrizado_NFCe_Daruma:
    
    DEFINE INPUT PARAMETER vch-pathXmlVenda AS CHARACTER NO-UNDO.
    DEFINE INPUT PARAMETER vch-parhXmlRetWs AS CHARACTER NO-UNDO.
    DEFINE INPUT PARAMETER vch-linkQrCode AS CHARACTER NO-UNDO.
    DEFINE INPUT PARAMETER vin-NumColunas AS INTEGER NO-UNDO.
    DEFINE INPUT PARAMETER vin-tipoNf AS INTEGER NO-UNDO.
    DEFINE INPUT PARAMETER vch-txtlivre AS CHARACTER NO-UNDO.
    DEFINE OUTPUT PARAMETER vin-retorno AS INTEGER NO-UNDO.
    
    CREATECALLvha-Call.
    ASSIGN
    
    
    vha-Call:PERSISTENT = TRUE
    
    vha-Call:LIBRARY-CALLING-CONVENTION = "CDECL"
    
    vha-Call:CALL-TYPE = DLL-CALL-TYPE
    
    vha-Call:RETURN-VALUE-DLL-TYPE = "short"
    
    vha-Call:LIBRARY = DirLibDaruma
    
    vha-Call:CALL-NAME = "iCFImprimirParametrizado_NFCe_Daruma"
    
    vha-Call:NUM-PARAMETERS = 6.
    
    vha-Call:SET-PARAMETER (1,"character","input", vch-pathXmlVenda).
    
    vha-Call:SET-PARAMETER (2,"character","input", vch-parhXmlRetWs).
    
    vha-Call:SET-PARAMETER (3,"character","input", vch-linkQrCode).
    
    vha-Call:SET-PARAMETER (4,"short","input", vin-NumColunas).
    
    vha-Call:SET-PARAMETER (5,"short","input", vin-tipoNf).
    
    vha-Call:SET-PARAMETER (6,"character","input", vch-txtlivre).
    
    vha-Call:INVOKE ().
    
    
    vin-retorno = vha-Call:RETURN-VALUE.
    
    DELETE OBJECT vha-Call.
    
    END PROCEDURE.
     
    Espero que consiga executar com alguma destas formas.

    se precisar manda ai.
    abraço
    Agnaldo e rafael.andrade curtiram isso.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página