Darumaframework.dll com xhb

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

daruma developer
Usuário Nível 2
Usuário Nível 2
Mensagens: 51
Registrado em: 26 Ago 2011 11:51
Localização: São José dos Campos - SP

Darumaframework.dll com xhb

Mensagem por daruma developer »

Segue novamente:

http://www.desenvolvedoresdaruma.com.br ... ntegra.zip

Caso não dê tenta este:

http://bit.ly/npYfs5

Um abraço!
Social Daruma Developer Network | Integração e Desenvolvimento - Daruma Developers Community | Integração com a Comunidade de Desenvolvedores | Daruma nas Redes Sociais |
Twitter: @darumadeveloper | Facebook: http://www.facebook.com/pages/Daruma-De ... 0316809400 | LinkedIn: http://linkd.in/oNXnN4 | Nosso Site: www.desenvolvedoresdaruma.com.br | Channel9: http://www.youtube.com/darumadeveloper
ricardo-barros
Usuário Nível 3
Usuário Nível 3
Mensagens: 104
Registrado em: 29 Out 2009 20:12
Localização: Fortaleza

Darumaframework.dll com xhb

Mensagem por ricardo-barros »

Ótima contribuição a que o colega da DAruma nos deu no link http://bit.ly/npYfs5

Mas compilando o exemplo com Harbour 2.1 e mesmo com o 3.0 dá o seguinte erro:

Undefined reference to HBFUN_DllLoad
Undefined reference to HBFUN_Call
Undefined reference to HBFUN_Unload

Creio que preciso incluir alguma lib; mas qual?

E onde posso encontrar o fivewin.ch? É só um arquivo texto (alguem pode postar na área de downloads?). Pois o exemplo roda em modo console, não é? Seria o fim da picada ter que comprar o Fivewin só para usar a Dll da Daruma (o que eu sei que o Harbour faz sozinho).
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Darumaframework.dll com xhb

Mensagem por lucimauro »

Lembrando ricardo que voce nao poderar usar essas funcoes da daruma para gerar speed e sintegra ja que na homologacao eles vao desligar o ECF para que voce nao possa capturar os dados do mesmo, tera que gerar voce mesmo os relatorios.
daruma developer
Usuário Nível 2
Usuário Nível 2
Mensagens: 51
Registrado em: 26 Ago 2011 11:51
Localização: São José dos Campos - SP

Darumaframework.dll com xhb

Mensagem por daruma developer »

ricardo-barros escreveu:Ótima contribuição a que o colega da DAruma nos deu no link http://bit.ly/npYfs5

Mas compilando o exemplo com Harbour 2.1 e mesmo com o 3.0 dá o seguinte erro:

Undefined reference to HBFUN_DllLoad
Undefined reference to HBFUN_Call
Undefined reference to HBFUN_Unload

Creio que preciso incluir alguma lib; mas qual?

E onde posso encontrar o fivewin.ch? É só um arquivo texto (alguem pode postar na área de downloads?). Pois o exemplo roda em modo console, não é? Seria o fim da picada ter que comprar o Fivewin só para usar a Dll da Daruma (o que eu sei que o Harbour faz sozinho).
Ricardo você está tentando rodar em modo console ou em modo gráfico?
Social Daruma Developer Network | Integração e Desenvolvimento - Daruma Developers Community | Integração com a Comunidade de Desenvolvedores | Daruma nas Redes Sociais |
Twitter: @darumadeveloper | Facebook: http://www.facebook.com/pages/Daruma-De ... 0316809400 | LinkedIn: http://linkd.in/oNXnN4 | Nosso Site: www.desenvolvedoresdaruma.com.br | Channel9: http://www.youtube.com/darumadeveloper
ricardo-barros
Usuário Nível 3
Usuário Nível 3
Mensagens: 104
Registrado em: 29 Out 2009 20:12
Localização: Fortaleza

Darumaframework.dll com xhb

Mensagem por ricardo-barros »

Estou usando o modo console.

Não me preocupo com homologação pois não uso TEF e o ECF já está em uso, com o driver Observer 2, fornecido pelo fabricante. Ele permite que aplicações 16 bits imprimam cupons fiscais atraves da monitoração de arquivos de texto gerados pelo ERP. Mas agora que eu migrei para Harbour pretendo usar a nova DLL Darumaframework. Mesmo porque o driver Observer 2 foi descontinuado pela Daruma.

Portanto solicito encarecidademente que algum colega me diga por que o Harbour 2.1 e o 3.0 cujos instaladores foram baixados do site Sourceforge.net estão estranhando as funções DllLoad, DllUnload e DllCall.

Tentei usar em seu lugaras funções loadlibrary e freelibrary (para isso, incluí a XHB.Lib que permite usar funções do xHarbour no Harbour) Mas nao adiantou pois elas tambem nao foram reconhecidas.

Agradeço a quem puder colaborar.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Darumaframework.dll com xhb

Mensagem por Itamar M. Lins Jr. »

Já passou do tempo de mover este tópico para outra seção, quem sabe Dicas e Tutoriais ?.
Link a lib hbxpp.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
ricardo-barros
Usuário Nível 3
Usuário Nível 3
Mensagens: 104
Registrado em: 29 Out 2009 20:12
Localização: Fortaleza

Darumaframework.dll com xhb

Mensagem por ricardo-barros »

Itamar, a lib que você recomendou existe na pasta Lib tanto do Harbour 2.1 como do 3.0

E aqui está o script de linkedição:

-xHb
-hbxpp
-quiet
-oDaruma
Daruma.prg

Compilei assim:
\hb21\bin\hbmk2 @Daruma.hbm

Agora veja o erro que dá:
Error F0034 Bad command line option 'bxpp'

Ele ignora o h
Essa eu não entendi.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Darumaframework.dll com xhb

Mensagem por Itamar M. Lins Jr. »

Olaaaaa!!!!!
Que tal ler mais o manual da HBMK2 ? ou estudar os exemplos ?

-lMinha_Lib
Opções
-o<outname> nome de arquivo de saída
-l<libname> linkar com a biblioteca <libname>. <libname> deve omitir
path, extensão e o prefixo 'lib' (à menos que faça parte
do nome-de-arquivo).
Mas sinta-se a vontade para perguntar sempre.


Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
daruma developer
Usuário Nível 2
Usuário Nível 2
Mensagens: 51
Registrado em: 26 Ago 2011 11:51
Localização: São José dos Campos - SP

Darumaframework.dll com xhb

Mensagem por daruma developer »

Olá pessoal, para quem utiliza o Console dá tranquilo também viu Ricardo!

Segue um exemplo de como fazer um cupom no console:
www.desenvolvedoresdaruma.com.br/home/d ... XTO_xH.zip

Obs. Rodar em xHB 2.1 ou superior.

Qualquer duvida estamos à disposição!
A principio também tem uma versão do FiveWin Free!

Um abraço!
Social Daruma Developer Network | Integração e Desenvolvimento - Daruma Developers Community | Integração com a Comunidade de Desenvolvedores | Daruma nas Redes Sociais |
Twitter: @darumadeveloper | Facebook: http://www.facebook.com/pages/Daruma-De ... 0316809400 | LinkedIn: http://linkd.in/oNXnN4 | Nosso Site: www.desenvolvedoresdaruma.com.br | Channel9: http://www.youtube.com/darumadeveloper
ricardo-barros
Usuário Nível 3
Usuário Nível 3
Mensagens: 104
Registrado em: 29 Out 2009 20:12
Localização: Fortaleza

Darumaframework.dll com xhb

Mensagem por ricardo-barros »

Compilou!!!

Obrigado Itamar.

Depois que você disse que há um manual eu achei o arquivo hbmk2help.txt que esclarece o uso do hbmk2. isto ajudará muito. Agradeço também ao colega Vailtom que o traduziu.

Porém o código abaixo só resulta na mensagem: Impressora desligada.

Código: Selecionar todos

#include "Fileio.ch"
*#include "hbxml.ch" Não tem isto no Harbour 2.1 nem no 3.0
*#include "WinUser.ch" Não tem isto no Harbour 2.1 nem no 3.0
#include "hbclass.ch"
#include "Inkey.ch"
#include "common.ch"
#define CRLF     Chr(13) + Chr(10)
#define True     .t.
#define False    .f.
#xtranslate FTELL(<fhandle>) => Fseek( <fhandle>, 0, FS_RELATIVE )

Function Main()
   Public nLib32 := DllLoad( "DarumaFrameWork.dll" )
   CLEAR
   iRetorno := DllCall( nLib32, 32, "rVerificarImpressoraLigada_ECF_Daruma" ) 
   IF iRetorno = 1
      Alert( 'Impressora Ligada' )
   Else
      Alert( 'Impressora Desligada' )
   EndIF
   DllCall( nLib32, 32, "iLeituraX_ECF_Daruma" )
Return nil
Aí resolvi testar o executável fornecido pelo colega da Daruma. Copiei integralmente o exemplo (inclusive é claro a Dll) e até o exe fornecido diz que a impressora está desligada e não imprime a Leitura X.

E agora?
daruma developer
Usuário Nível 2
Usuário Nível 2
Mensagens: 51
Registrado em: 26 Ago 2011 11:51
Localização: São José dos Campos - SP

Darumaframework.dll com xhb

Mensagem por daruma developer »

Pelo DOS comunica?
Pode ser o DarumaFramework.XML que não está configurado.
Verifica nele se a porta e a velocidade estao diritinhos, ou então chama o comando.

Código: Selecionar todos

eBuscaPortaVelocidade_ECF_Daruma
Ele possivelmente equalizara o XML com a velocidade que se encontra a impressora.
Caso isto não dê me manda uma email ai com seu telefone que eu te ligo beleza?
social.developer@daruma.com.br

Abraços!
Social Daruma Developer Network | Integração e Desenvolvimento - Daruma Developers Community | Integração com a Comunidade de Desenvolvedores | Daruma nas Redes Sociais |
Twitter: @darumadeveloper | Facebook: http://www.facebook.com/pages/Daruma-De ... 0316809400 | LinkedIn: http://linkd.in/oNXnN4 | Nosso Site: www.desenvolvedoresdaruma.com.br | Channel9: http://www.youtube.com/darumadeveloper
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Darumaframework.dll com xhb

Mensagem por lucimauro »

Ricardo primeiro somos de cidade bem proximas(CE),depois podemos trocar msn,par trocar ideias sobre PAF-ECF certo.

No caso de de seu exemplo acima,tente tirar o CLEAR, ja que esse comando limpa os valores das variares da memoria se nao me engano.

e faça o teste.
ricardo-barros
Usuário Nível 3
Usuário Nível 3
Mensagens: 104
Registrado em: 29 Out 2009 20:12
Localização: Fortaleza

Darumaframework.dll com Harbour

Mensagem por ricardo-barros »

Lucimauro, apreciei muito a idéia de manter contato.
Enviei-lhe uma mensagem privada informando o meu msn

Tirei o clear, acrescentei a sugestão do colega da Daruma, testei em outros computadores e em outras impressoras mas continua mostrando "Impressora desligada" e a leitura X não sai.

O código agora está mais simplificado:

Código: Selecionar todos

*#include "WinUser.ch" // Harbour nao tem
*#include "hbxml.ch"   // Harbour nao tem
#include "Fileio.ch"
#include "hbclass.ch"
#include "Inkey.ch"
#include "common.ch"

Function Main()
   Public nLib32 := DllLoad( "DarumaFrameWork.dll" )
   DllCall( nLib32, 32, "eBuscaPortaVelocidade_ECF_Daruma")
   IF DllCall( nLib32, 32, "rVerificarImpressoraLigada_ECF_Daruma" ) = 1
      Alert( 'Impressora Ligada' )
   Else
      Alert( 'Impressora Desligada' )
   EndIF
   ? DllCall( nLib32, 32, "iLeituraX_ECF_Daruma" )
Return nil
Será que não precisa registrar a dll? Se for isso, como se faz?
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Darumaframework.dll com xhb

Mensagem por rochinha »

Amiguinho,

As DLLs ecf dificilmente são registradas, este não é o caso.

Algo está sendo deixado de passar.

Voce esta fazendo um trace apenas no final do arquivo, sem saber qual o resultado dos comandos anteriores. Faça o trace em todas as chamadas DllCall().

Código: Selecionar todos

Function Main()
   Public nLib32 := DllLoad( "DarumaFrameWork.dll" )
   ? nDllRetorno := DllCall( nLib32, 32, "eBuscaPortaVelocidade_ECF_Daruma")
   ? nDllRetorno := DllCall( nLib32, 32, "rVerificarImpressoraLigada_ECF_Daruma" )
   IF nDllRetorno = 1
      Alert( 'Impressora Ligada' )
   Else
      Alert( 'Impressora Desligada' )
   EndIF
   ? nDllRetorno := DllCall( nLib32, 32, "iLeituraX_ECF_Daruma" )
Return nil
Desta forma voce realmente fica sabendo qual o valor de retorno que provavelmente lhe dará o caminho correto a seguir para corrigir as operações. A chamada pode estar retornando outros valores enquanto voce esta criticando apenas um.

Como dica, para registro de DLLs e OCXses podemos facilitar isto sem recorrer ao uso do REGSVR32.EXE fazendo isto usando apenas um clique com o botão esquerdo sobre a mesma. Mas para isto é necessário incluir o trecho abaixo no registro.

Código: Selecionar todos

Windows Registry Editor Version 5.00

;================================================
; \\\\\\\\\\\\\\   Context Menus   //////////////
;================================================
;------------------------------------------------------------------------------------------------------------
;Add register / unregister to the context menu for .dll files
[HKEY_CLASSES_ROOT\.dll]
"Content Type"="application/x-msdownload"
@="dllfile"
[HKEY_CLASSES_ROOT\dllfile]
@="Application Extension"
[HKEY_CLASSES_ROOT\dllfile\Shell\Registrar\command]
@="regsvr32.exe \"%1\""
[HKEY_CLASSES_ROOT\dllfile\Shell\DesRegistrar\command]
@="regsvr32.exe /u \"%1\""

;------------------------------------------------------------------------------------------------------------
;Add register / unregister to the context menu for .ocx files
[HKEY_CLASSES_ROOT\.ocx]
@="ocxfile"
[HKEY_CLASSES_ROOT\ocxfile]
@="OCX"
[HKEY_CLASSES_ROOT\ocxfile\Shell\Registrar\command]
@="regsvr32.exe \"%1\""
[HKEY_CLASSES_ROOT\ocxfile\Shell\DesRegistrar\command]
@="regsvr32.exe /u \"%1\""
Basta salvar o conteudo como registrar.reg, clicar duas vezes e confirmar a inclusão. Duas opções aparecerão no menu de contexto.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
ricardo-barros
Usuário Nível 3
Usuário Nível 3
Mensagens: 104
Registrado em: 29 Out 2009 20:12
Localização: Fortaleza

Darumaframework.dll com Harbour

Mensagem por ricardo-barros »

Ok, Rochinha.

Posto agora os retornos como comentários ao lado de cada chamada à Dll:

Código: Selecionar todos

Function Main()
   Public nLib32 := DllLoad( "DarumaFrameWork.dll" )
   ? DllCall( nLib32, 32, "eBuscaPortaVelocidade_ECF_Daruma") // Retorna Nil
   ? DllCall( nLib32, 32, "rVerificarImpressoraLigada_ECF_Daruma" )   // Retorna -6
   ? DllCall( nLib32, 32, "iLeituraX_ECF_Daruma" )  // Retorna -1
Return nil
Sei apenas que rVerificarImpressoraLigada_ECF_Daruma deveria retornar 1 (ligada).
O que estes valores indicam e quais eu deveria esperar?

E se o amigo na Daruma compilasse e executasse este código, quais retornos encontraria?
Responder