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....
É 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.