Página 3 de 3

Re: ACBr - xHarbour

Enviado: 04 Ago 2010 10:13
por fladimir
Toledo escreveu:Fladimir, o Rochinha ta trabalhando demais e acabou esquecendo do endereço do servidor dele... o correto é:
Obrigado Toledo e Rochinha, imaginei q fosse algo do gênero, de vez em qdo confundimos, faz parte...
Itamar M. Lins Jr. escreveu:Use as equivalentes do Harbour.
Obrigado Itamar vou testar e depois comento.

Sds.

Sucesso!!!
:)Pos

Re: ACBr - xHarbour

Enviado: 04 Ago 2010 14:19
por fladimir
Itamar consegui substituir pelas correlatas do Harbour e compilar....obrigado...

Rochinha usei as 2 dlls baixadas q vc indicou e o erro permanece, mas em Harbour além da tela das postagens anteriores ele mostra tb no console...

Uma única ressalva no Harbour o retorno de qdo carrega a Dll é "Pointer", não sei o q significa, em virtude disso tive q tirar a cláusula q analisava se o retorno foi Maior q ZERO.

Pra Relembrar: "O programa abre ativa a Daruma, Abre o Cupom e NÃO VENDE O ITEM - nessa parte q da erro, o cancelamento do cupom esta Ok tb."

Segue abaixo codigo refeito e erro.

Código: Selecionar todos

#include "dll.ch"

Function main()

* xHarbour
* public hDLL := LoadLibrary( "ACBrECFDLL.dll" )

* Harbour
 public hDLL := DllLoad( "ACBrECFDLL.dll" )  // Testei tb com ACBrEcf.dll baixadas do site do Rochinha

* Tirei devido o retorno de hDll = Pointer // analisar

// if hDLL > 0
	xDefModelo := DefineModelo( "Daruma", "COM1", 3 )
	If xDefModelo = 1
	    nRetorno := AbreCupom()
	    If nRetorno > 0
	       ? "Cupom nao pode ser aberto."
 	       CancelaCupom()
	    Endif

	    Codigo      		  		:= '123456'
	    Descricao   		  		:= 'PRODUTO TESTE'
	    AliquotaICMS		  		:= 'II'
	    Qtd          	 			:= 1
       ValorUnitario	 			:= 2.50
	    DescontoPorc 		       := 0
	    Unidade                   := "UN"
       TipoDescontoAcrescimo     := "%"
       cTipoQtde                 := "I"
       nCasasDecimais            := "2"

            Retorno := VendeItem(  Codigo,  Descricao,  AliquotaICMS,  Qtd, ValorUnitario, DescontoPorc, Unidade, TipoDescontoAcrescimo)
            ? Retorno

	    If Retorno > 0
	       Alert( "Cancelando cupom. Erro ("+str(nRetorno)+")" )
	       CancelaCupom()
	    Endif 
   Else
      Alert('Não foi possível ativar o ECF')
   Endif

   DllUnload( hDLL )
   * xHarbour freelibray()
   
// Else
//   Alert( "ACBrECFDLL.dll nao foi carregada." )
// Endif

Return nil

FUNCTION DefineModelo(cModeloStr, cPorta, nTimeout)
RETURN   DllCall(hDll, DLL_OSAPI,"DefineModelo",cModeloStr,cPorta,nTimeout)

FUNCTION IdentificaConsumidor( cCPF_CNPJ, cNome, cEndereco ) 
RETURN DllCall(hDll,DLL_OSAPI,"IdentificaConsumidor", cCPF_CNPJ, cNome, cEndereco ) 

FUNCTION AbreCupom( cCPF_CNPJ, cNome, cEndereco) 
RETURN DllCall(hDll,DLL_OSAPI,"AbreCupom", cCPF_CNPJ, cNome, cEndereco) 

FUNCTION VendeItem( Codigo, Descricao, AliquotaICMS, Qtd, ValorUnitario, DescontoPorc, Unidade, TipoDescontoAcrescimo)
RETURN DllCall(hDll, DLL_OSAPI,"VendeItem", Codigo, Descricao, AliquotaICMS, Qtd, ValorUnitario, DescontoPorc, Unidade, TipoDescontoAcrescimo)

FUNCTION FechaCupom( cObservacao )
RETURN DllCall(hDll,DLL_OSAPI,"FechaCupom", cObservacao )

FUNCTION SubtotalizaCupom( DescontoAcrescimo, MensagemRodape)
RETURN DllCall(hDll,DLL_OSAPI,"SubtotalizaCupom", DescontoAcrescimo, MensagemRodape)

FUNCTION EfetuaPagamento( cCodFormaPagto, nValor, cObservacao, lImprimeVinculado)
RETURN DllCall(hDll,DLL_OSAPI,"EfetuaPagamento", cCodFormaPagto, nValor, cObservacao, lImprimeVinculado)

FUNCTION LeituraX() 
RETURN DllCall(hDll,DLL_OSAPI,"LeituraX") 

FUNCTION ReducaoZ( DataHora )
RETURN DllCall(hDll,DLL_OSAPI,"ReducaoZ", DataHora )

FUNCTION CancelaCupom()
RETURN DllCall(hDll,DLL_OSAPI,"CancelaCupom")

FUNCTION CancelaItemVendido( NumItem )
Return DllCall(hDll,DLL_OSAPI,"CancelaItemVendido", NumItem )

Erros / Informações ao executar no console....

Código: Selecionar todos

C:\TESTES~1>dll

Unrecoverable error 6005: Exception error:

    Exception Code:C0000005
    Exception Address:0040ABC4
    EAX:00000004  EBX:FFFFFFFC  ECX:773593FE  EDX:00000008
    ESI:004C3DC8  EDI:00926824  EBP:00920000
    CS:EIP:001B:0040ABC4  SS:ESP:0023:0012FDB0
    DS:0023  ES:0023  FS:003B  GS:0000
    Flags:00010286
    CS:EIP: 8B 4B 04 83 E1 03 83 F9 01 0F 84 07 06 00 00 8B
    SS:ESP: 00926824 004C3DC8 00AE4F68 00100000 009BDC04 00000001 004C3DC8 0042C
644 004C3DC8 00000008 004326C0 00000008 0043277B 00000004 00AE4F68 00242430

    C stack:
    EIP:     EBP:       Frame: OldEBP, RetAddr, Params...


Modules:
0x00400000 0x000C7000 C:\TESTES~1\dll.exe
0x7C900000 0x000B6000 C:\WINDOWS\system32\ntdll.dll
0x7C800000 0x00100000 C:\WINDOWS\system32\kernel32.dll
0x7E360000 0x00091000 C:\WINDOWS\system32\USER32.dll
0x77E50000 0x00049000 C:\WINDOWS\system32\GDI32.dll
0x76360000 0x0001D000 C:\WINDOWS\system32\IMM32.DLL
0x77F50000 0x000AB000 C:\WINDOWS\system32\ADVAPI32.dll
0x77DB0000 0x00092000 C:\WINDOWS\system32\RPCRT4.dll
0x77F20000 0x00011000 C:\WINDOWS\system32\Secur32.dll
0x009E0000 0x00126000 C:\TESTES~1\ACBrECFDLL.dll
0x77100000 0x0008B000 C:\WINDOWS\system32\oleaut32.dll
0x77BF0000 0x00058000 C:\WINDOWS\system32\msvcrt.dll
0x774C0000 0x0013D000 C:\WINDOWS\system32\ole32.dll
0x77BE0000 0x00008000 C:\WINDOWS\system32\version.dll
0x5D510000 0x0009A000 C:\WINDOWS\system32\comctl32.dll
0x7C9C0000 0x0081E000 C:\WINDOWS\system32\shell32.dll
0x77EA0000 0x00076000 C:\WINDOWS\system32\SHLWAPI.dll
0x773B0000 0x00103000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_65
95b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll
0x10000000 0x0001A000 C:\WINDOWS\system32\inpout32.dll
0x746E0000 0x0004C000 C:\WINDOWS\system32\MSCTF.dll
0x00CE0000 0x000F5000 C:\ARQUIVOS DE PROGRAMAS\GBPLUGIN\gbiehscd.dll
0x75290000 0x0002E000 C:\WINDOWS\system32\msctfime.ime
0x77900000 0x000F5000 C:\WINDOWS\system32\SETUPAPI.dll
0x76FB0000 0x0007F000 C:\WINDOWS\system32\CLBCATQ.DLL
0x77030000 0x000CD000 C:\WINDOWS\system32\COMRes.dll
0x76960000 0x00008000 C:\WINDOWS\system32\LINKINFO.dll
0x76970000 0x00026000 C:\WINDOWS\system32\ntshrui.dll
0x76B00000 0x00011000 C:\WINDOWS\system32\ATL.DLL
0x5BCB0000 0x00055000 C:\WINDOWS\system32\NETAPI32.dll
0x769A0000 0x000B5000 C:\WINDOWS\system32\USERENV.dll

Called from DLLCALL(0)
Called from VENDEITEM(63) in dll.prg
Called from MAIN(33) in dll.prg

C:\TESTES~1>
Tela de Erro q tb gera....

Imagem

É isso ai... O q sera q ta havendo... Pode ser algo no meu SO ?
.
:-O

Re: ACBr - xHarbour

Enviado: 07 Ago 2010 09:27
por Itamar M. Lins Jr.
Poste o que o manual da Daruma diz a respeito do comando VendeItem.
Como devemos passar os parametros, Numeric, Charater etc...

Saudações,
Itamar M. Lins Jr.

Re: ACBr - xHarbour

Enviado: 23 Nov 2010 22:58
por rochinha
Amiguinho,

Voce testou seu código com ECF de outra marca para ver se o problema não seria da DLL?

Re: ACBr - xHarbour

Enviado: 24 Nov 2010 03:17
por fladimir
Rochinha e demais companheiros, obrigado pela atenção, eu não testei em outras ecfs, mas estive aprendendo muito esses últimos dias sobre uso de dll em meus sistemas e hj consegui sanar o problema relacionado a outra função mas pertinente AO Uso de Dlls, assim q puder retomo os testes agregando esses novos conhecimentos e acredito q vai dar certo....

O q percebi foi o seguinte... q se mesmo ao passar parâmetros corretos usar por exemplo Caixa Alta ou Baixa da problema, pelo menos em uma Dll em q apanhei ela era Case Sensitive e nisso se resumiu praticamente todos os problemas...

Pergunto todas Dlls são Case Sensitive? Se sim pode estar ai a fonte de alguns probleminhas q tive neste tópico em específico.

Grande Abraço...

Sds.

Re: ACBr - xHarbour

Enviado: 24 Nov 2010 08:29
por rochinha
Amiguinho,

De onde voce esteve baixando tais .DLLs e quais as datas de criação.

Também andei baixando uma par delas e inclusive algumas era preparadas para uso em embiente .NET e talvez por isto nossos aplicativos não fossem compativeis.

Re: ACBr - xHarbour

Enviado: 24 Nov 2010 09:39
por fladimir
Rochinha a ultima q usei e q esta disponivel na minha pasta de testes no q se refere a este topico é

ACBRECFDLL.DLL (02/08/2010 1,13mb)

Antes estava usando a ACBRECF.Dll (04/08/2010 856kb) q baixei do site do Rochinha, agora parei na de cima, não lembro da onde baixei.

Sds

Re: ACBr - xHarbour

Enviado: 24 Nov 2010 11:35
por TerraSoftware
Caro colega Fladimir.
Até onde vai meu pouco conhecimento sobre Dll's, é um padrao elas diferenciarem letras maiusculas de minusculas sim.

Exemplo correto:

Código: Selecionar todos

if dllcall("USER32.DLL",32,"FindWindow", ,"Calculadora") > 0
   mensagem("Programa Calculadora aberto.")
endif
Exemplo incorreto:

Código: Selecionar todos

if dllcall("USER32.DLL",32,"findwindow", ,"Calculadora") > 0
   mensagem("Programa Calculadora aberto.")
endif
Os parametros passados para a Dll deve obdecer a escrita exatamente como foi declarado pelo fabricante.

Re: ACBr - xHarbour

Enviado: 24 Nov 2010 14:19
por fladimir
Obrigado colega, esta informação tive q aprender a duras custas, mas obrigado por confirmar minha análise a respeito, creio q pra quem não trabalha e ler este post evitara muitos problemas.

Sds..

Sucesso!!!!
:)Pos

Re: ACBr - xHarbour

Enviado: 24 Nov 2010 14:42
por rochinha
Amiguinho,

Geralmente, podemos saber quais as funções que compoem uma .DLL através da transformação para uma .LIB.

Não se trata de uma transformação e sim da geração de uma biblioteca de funções a partir do conteúdo de uma .DLL.

Para isto use o Borland IMPLIB.EXE, assim IMPLIB ACBrECFDLL.LIB ACBrECFDLL.DLL

Não esta errado não é esta a sequencia.

A partir da .LIB gerada voce poderá saber quais funções existem na mesma e para isto será necessário um segundo utilitário:

Explorer Lib v2.0

Com este utilitário voce praticamente navegará dentro da biblioteca e verá quais suas funções e consequentemente como estão escritas.

Re: ACBr - xHarbour

Enviado: 25 Nov 2010 17:36
por fladimir
Rochinha, como dizem alguns por ai... MATOU A PAU!!!

Vlw...

Sds.