Página 1 de 2

Como usar das DLL´s com xharbour

Enviado: 15 Jun 2007 10:07
por luizservulo
Minha eterna dúvida...


qual a formula para se usar as funções das mais variadas DLL´s existentes???

Alguem com paciência para descrever?



Gradecido de antemão


:{

Enviado: 15 Jun 2007 23:42
por Stanis Luksys
No XP, compile e execute:

Código: Selecionar todos

procedure main()
  DLLCall("WINMM.DLL",32,"sndPlaySoundA", "Inicialização do Windows XP.wav", 0 )
return
Onde:
"WINMM.DLL": é a DLL, em path acessível.
32: não sei, deve ser de 32 bits, mas o importante é saber que é fixo.
"sndPlaySoundA" : nome da função
"Inicialização do Windows XP.wav": parametro 1
0: parametro 2
etc etc

Espero que ajude, é bem simples, testado e aprovado com aBemaFI32.dll da bematech, apesar de que neste caso comunicação direta é melhor.

Falou!

Enviado: 16 Jun 2007 10:52
por luizservulo
Stanis Luksys escreveu:No XP, compile e execute:

Código: Selecionar todos

procedure main()
  DLLCall("WINMM.DLL",32,"sndPlaySoundA", "Inicialização do Windows XP.wav", 0 )
return
Onde:
"WINMM.DLL": é a DLL, em path acessível.
32: não sei, deve ser de 32 bits, mas o importante é saber que é fixo.
"sndPlaySoundA" : nome da função
"Inicialização do Windows XP.wav": parametro 1
0: parametro 2
etc etc

Espero que ajude, é bem simples, testado e aprovado com aBemaFI32.dll da bematech, apesar de que neste caso comunicação direta é melhor.

Falou!
gradecido irmãozinho Stanis pela sua prestimosa ajuda, vamos lembrar que ela só funciona no xHarbou 0.99.70

Mais funciona que é uma beleza.

Agora aproveitando da sua dica, acessar a Impressora Fiscal diretamente, você teria um exemplo disso?

Enviado: 19 Jun 2007 11:32
por marcos.gurupi
Caros eu tenho uma documentacao do check-check para implementar o sistema com a comunicacao com o mesmo e ela tem uma dll chamada checkcom.dll, eu entaum deveria usar esse mesmo raciocinio para chamar a dll checkcom?

Marcos Roberto.

Enviado: 17 Jul 2007 16:55
por MARINI

Código: Selecionar todos

procedure main()
  DLLCall("WINMM.DLL",32,"sndPlaySoundA", "Inicialização do Windows XP.wav", 0 )
return
Era isto que estava procurando.
Poderia, por gentileza, informar onde posso encontrar um manual do xharbour com estas funções?

Grato

Enviado: 17 Jul 2007 17:40
por sygecom
MARINI escreveu:

Código: Selecionar todos

procedure main()
  DLLCall("WINMM.DLL",32,"sndPlaySoundA", "Inicialização do Windows XP.wav", 0 )
return
Era isto que estava procurando.
Poderia, por gentileza, informar onde posso encontrar um manual do xharbour com estas funções?

Grato
Tche, o xharbour não tem manual...é tudo no braço mesmo...baixa a CVS e localize essa Função e tente entender....qualquer coisa faça uns teste ai... e posta aqui...que vamos dando um jeito..

Abraços
Leonardo Machado

xHarbour Guide

Enviado: 18 Jul 2007 09:36
por MARINI
Achamos o manual para vender no link:

http://www.xharbour.com/xhdn/referenceguide/

Custa U$ 58.00 e pagamento com cartao.
Vem em PDF ou CHM.
Baixamos e tem tudo.

Enviado: 18 Jul 2007 09:37
por MARINI
Obs: toda operação de compra e download do manual durou menos de 10 minutos.

Enviado: 18 Jul 2007 09:45
por sygecom
e esse manual é completo...e vale para o xharbour free tb. ?

alias vale a pena comprar esse manual ? eu tenho aqui um .CHM do demo comercial e não fala nd sobre o uso de DLL...

Abraços
Leonardo Machado

Enviado: 18 Jul 2007 10:39
por Stanis Luksys
luizservulo escreveu:Agora aproveitando da sua dica, acessar a Impressora Fiscal diretamente, você teria um exemplo disso?
Olá,

EXEMPLO DE LEITURA X POR COMUNICAÇÃO DIRETA:

Código: Selecionar todos

if MODELO_ECF = "SWEDA"
   cCmd := chr(27)+".17}"
elseif MODELO_ECF = "BEMATECH"
   cCmd := chr(2)+chr(4)+chr(0)+chr(27)+chr(14)+chr(41)+chr(0)
elseif MODELO_ECF = "DARUMA"
   // etc etc
endif

nHandle := Init_Port( "COM1", 9600, 8, 0, 1, 256 )

if ! OutChr( nHandle, cCmd, Len( cCmd ) )
   ? "Erro ao enviar comando."
endif

UnInt_Port( nHandle )
Como eu disse no início, é muito melhor que DLL.

Falou!

.

Enviado: 18 Jul 2007 11:12
por MARINI
sygecom escreveu:e esse manual é completo...e vale para o xharbour free tb. ?

alias vale a pena comprar esse manual ? eu tenho aqui um .CHM do demo comercial e não fala nd sobre o uso de DLL...

Abraços
Leonardo Machado
Até agora achei tudo que queria, inclusive o DLLCALL(), com exemplos.
E tem muitas coisas interessantes.
Estou usando a xHarbour source...

Enviado: 18 Jul 2007 11:23
por sygecom
MARINI escreveu:
sygecom escreveu:e esse manual é completo...e vale para o xharbour free tb. ?

alias vale a pena comprar esse manual ? eu tenho aqui um .CHM do demo comercial e não fala nd sobre o uso de DLL...

Abraços
Leonardo Machado
Até agora achei tudo que queria, inclusive o DLLCALL(), com exemplos.
E tem muitas coisas interessantes.
Estou usando a xHarbour source...
Tche, vlw pelas explicação...muito boa essa CHM.....e seria melhor ainda se fosse free...

Só para completar na CVS vem junto uma Documentação...meia fraca...mas tira algumas duvidas...

Abraços
Leonardo Machado

Enviado: 18 Jul 2007 11:28
por MARINI
[quote="Stanis Luksys
EXEMPLO DE LEITURA X POR COMUNICAÇÃO DIRETA:

Código: Selecionar todos

if MODELO_ECF = "SWEDA"
   cCmd := chr(27)+".17}"
elseif MODELO_ECF = "BEMATECH"
   cCmd := chr(2)+chr(4)+chr(0)+chr(27)+chr(14)+chr(41)+chr(0)
elseif MODELO_ECF = "DARUMA"
   // etc etc
endif

nHandle := Init_Port( "COM1", 9600, 8, 0, 1, 256 )

if ! OutChr( nHandle, cCmd, Len( cCmd ) )
   ? "Erro ao enviar comando."
endif

UnInt_Port( nHandle )
A propósito foi consultar no manual as funções Init_Port, OutChr e UnInt_port e não consta nada.
Tentei compilar o exemplo acima e acusa que não achou as funções.
Você acrescentou alguma LIB?

Enviado: 18 Jul 2007 11:47
por Stanis Luksys
Olá Marini,

A biblioteca padrão do xHarbour para comunicação serial é a HBComm.lib.

Acrescente ela no seu script de compilação e já deve funcionar.

No caso do exemplo acima, é impressionante a velocidade e acima de tudo a simplicidade da programação, com um pouco de calma é só criar as funções e jogar tudo numa lib propria, como eu fiz aqui (até pensei em vender lol )...

Eu uso mais ou menos assim:

ECF_LeituraX( modelo )
ECF_AbrirCupom( modelo )
etc...

Atualmente com suporte para Daruma, Bema e Sweda...

Não se compara com o uso de DLL ou driver... hehehe

Quanto a documentação, é bem verdade que falta muito, e é por isso que não recomendo livros ou manuais, por que no xhabnour em sí a gente se vira legal... O poder está nas novas bibliotecas, gráficas por exemplo ou até de comunicação como a hbcomm...

Falou... E não use DLLs para ECF :))

Enviado: 18 Jul 2007 12:15
por MARINI
Stanis, procurei essa LIB e não achei na pasta do xHarbour.
Onde consigo ela?
Grato.