Jump to content
Fivewin Brasil

ACBrFramework32.DLL


vinhesoft

Recommended Posts

Olá, Eroni.

Dá para disponibilizar seus exemplos do usa dessa DLL?

E a também, sem querer abusar.

Consegui ativar o ECF (Emulador) mas a Leitura X não vai. Alguém pode dar uma ajudinha aí?

*--------------------( ECF via ACBrFramework32.dll )---------------------------*

FUNCTION TestACBrFrwrk()
   aModelo := ;
     {;
         "01. NaoFiscal",;
      	"02. Bematech",;
      	"03. Sweda",;
      	"04. Daruma",;
      	"05. Schalter",;
      	"06. Mecaf",;
      	"07. Yanco",;
      	"08. DataRegis",;
      	"09. Urano",;
      	"10. ICash",;
      	"11. Quattro",;
      	"12. FiscNET",;
      	"13. Epson",;
      	"14. NCR",;
      	"15. SwedaSTX";
      }
   cModelo := MsgSelect(aModelo, "02. Bematech", "Selecione o modelo", "&Ok", "Cancelar")

   cPorta := "COM4"
   IF ! MsgGet("Porta","Porta",@cPorta)
      RETURN NIL
   ENDIF
   
   xdll := LoadLibrary("ACBrFramework32.dll")
   nHandle := 0

   ? "Cria o Handle do ECF"

	ret := ECFCreate(@nHandle)
   CheckResult(ret, nHandle)

   ? "Informa o modelo do ecf"
   nModelo := ALLTRIM(STR(VAL(LEFT(cModelo, 2))))
	ret := ECFSetModelo(nHandle, nModelo)
   CheckResult(ret, nHandle)

   ? "Obtem o modelo configurado"
   buffer := ECFGetModelo(nHandle)
	SysRefresh()
	MsgAlert("Modelo: "+cValToChar(buffer))
	
	? "Define a porta de comunicação"
	ret := ECFSetPorta(nHandle, cPorta)
   CheckResult(ret, nHandle)

	? "Obtem a porta de comunicação definida"
   buff := SPACE(100)
   ret = ECFGetPorta(nHandle, @buff, 100)
   CheckResult(ret, nHandle)

   ? "Verivicar se ECF está ativo"
   ret := ECFGetAtivo(nHandle)
   CheckResult(ret, nHandle)

   ? "Avtivar o ECF"
   ECFAtivar(nHandle)

   ? "Verivicar se ECF está ativo"
	ret := ECFGetAtivo(nHandle)
   CheckResult(ret, nHandle)

   ? "Emitir leitura X"
	ret := ECFLeituraX(nHandle)
   CheckResult(ret, nHandle)

   ? "Desativar o ECF"
	ret := ECFDestroy(@nHandle)
   CheckResult(ret, nHandle)

	FreeLib32(xdll)
RETURN NIL

STATIC FUNCTION CheckResult(ret, nHandle)
   LOCAL buff := SPACE(100)
*  ECFGetUltErro(nHandle, @buff, 100)
	SysRefresh()
	MsgInfo("Retorno: "+cValToChar(ret), "Aviso")
RETURN NIL

xdll:=LoadLibrary("ACBrFramework32.dll")
DLL32 FUNCTION ECFCreate( @nHandle AS PTR ) AS 7 PASCAL FROM "ECF_Create" LIB xdll
DLL32 FUNCTION ECFGetUltErro( ecfHandle AS PTR, @buffer AS 8, bufferLen AS STRING ) AS LONG PASCAL FROM "ECF_GetUltimoErro" LIB xdll
DLL32 FUNCTION ECFSetModelo( nHandle AS PTR, cModelo AS STRING ) AS LONG PASCAL FROM "ECF_SetModelo" LIB xdll
DLL32 FUNCTION ECFGetModelo( nHandle AS PTR ) AS LONG PASCAL FROM "ECF_GetModelo" LIB xdll
DLL32 FUNCTION ECFGetModStr( nHandle AS PTR, @buffer AS STRING, bufferLen AS STRING ) AS LONG PASCAL FROM "ECF_GetModeloStr" LIB xdll
DLL32 FUNCTION ECFSetPorta( nHandle AS PTR, porta AS STRING ) AS LONG PASCAL FROM "ECF_SetPorta" LIB xdll
DLL32 FUNCTION ECFGetPorta( nHandle AS PTR, @buffer AS STRING, bufferLen AS STRING ) AS LONG PASCAL FROM "ECF_GetPorta" LIB xdll
DLL32 FUNCTION ECFGetAtivo( nHandle AS PTR ) AS LONG PASCAL FROM "ECF_GetAtivo" LIB xdll
DLL32 FUNCTION ECFAtivar( nHandle AS PTR ) AS LONG PASCAL FROM "ECF_Ativar" LIB xdll
DLL32 FUNCTION ECFLeituraX( nHandle AS PTR ) AS 7 PASCAL FROM "ECF_LeituraX" LIB xdll
DLL32 FUNCTION ECFDestroy( @nHandle AS PTR ) AS 7 PASCAL FROM "ECF_Destroy" LIB xdll
freelibrary(xdll)

*----------------------( Função MsgSelect )-----------------------------------*
function MsgSelect( aItems, cValue, cTitle, cTitBt1, cTitBt2 )
   LOCAL oDlg, lOk, cDescr, nScan
   DEFAULT cTitle  := "Selecione"
   DEFAULT cTitBt1 := "&Ok"
   DEFAULT cTitBt2 := "Ca&ncelar"
   DEFAULT cValue := aItems[1]
   nScan  := 1
   cDescr := SPACE(40)
   lOk    := .F.
   aItems := ASORT(aItems)
   DEFINE DIALOG oDlg FROM 5,10 TO 27, 54 TITLE cTitle
   @ 01,02 GET cDescr SIZE 145,10 OF oDlg ;
           ON CHANGE ( ::Assign() ,;
                       cGet := SubStr( cDescr, 1, ::nPos - 1 ) ,;
                       AEVAL(aItems ,{|cData,nItem| IIF( LEFT(cData,LEN(cGet)) = cGet, nScan:=nItem, nScan:=nScan)}),;
                       oList:Select(nScan) )
   @ 02,02 LISTBOX oList VAR cValue ITEMS aItems SIZE 145, 100 OF oDlg
   @ 08,07 BUTTON cTitBt1 OF oDlg SIZE 40, 12 ACTION (lOk := .T., oDlg:End()) DEFAULT
   @ 08,16 BUTTON cTitBt2 OF oDlg SIZE 40, 12 ACTION (lOk := .F., oDlg:End()) CANCEL
   ACTIVATE DIALOG oDlg CENTERED
RETURN cValue

Link to comment
Share on other sites

Amiguinho,

Se for usar esta .DLL fique atento para as atualizações e teste sempre antes de mandar para o seu cliente a nova .DLL. Eu estou usando em meu sistema a versão 2012 da ACBr32.dll, porque todas as Frameworks32 que peguei, tive problemas, uma hora retorna .T. e .F. ou tra hora retorna 0,-1,-2 para a mesma função, depois já não é mais ECF_blablabla e sim DEV_blablabla e depois não é mais Stdcall e sim cdel.

Estou testando está http://download2.polytechnic.edu.na/pub4/sourceforge/a/project/ac/acbrframework/ que tem a mesma data da que está no SourceForge.

Meus cabelos não estão caindo, mas o cérebro tá fritando.

A Framework32.Net.dll deve ser registrada e portanto pode ser possível o acesso via activex ou OLE. mesmo sendo feita em C# ou sei lá o que.

A Framework32.dll já é diferente quanto ao acesso. O melhor caminho é implib nela para obter a biblioteca de vínculo no padrão OMF mais entendido por quem usa Borland.

Bom trabalho.

Link to comment
Share on other sites

  • 2 weeks later...

Olá, Eroni.

Dá para disponibilizar seus exemplos do usa dessa DLL?

E a também, sem querer abusar.

Consegui ativar o ECF (Emulador) mas a Leitura X não vai. Alguém pode dar uma ajudinha aí?

*--------------------( ECF via ACBrFramework32.dll )---------------------------*

FUNCTION TestACBrFrwrk()
   aModelo := ;
     {;
         "01. NaoFiscal",;
      	"02. Bematech",;
      	"03. Sweda",;
      	"04. Daruma",;
      	"05. Schalter",;
      	"06. Mecaf",;
      	"07. Yanco",;
      	"08. DataRegis",;
      	"09. Urano",;
      	"10. ICash",;
      	"11. Quattro",;
      	"12. FiscNET",;
      	"13. Epson",;
      	"14. NCR",;
      	"15. SwedaSTX";
      }
   cModelo := MsgSelect(aModelo, "02. Bematech", "Selecione o modelo", "&Ok", "Cancelar")

   cPorta := "COM4"
   IF ! MsgGet("Porta","Porta",@cPorta)
      RETURN NIL
   ENDIF
   
   xdll := LoadLibrary("ACBrFramework32.dll")
   nHandle := 0

   ? "Cria o Handle do ECF"

	ret := ECFCreate(@nHandle)
   CheckResult(ret, nHandle)

   ? "Informa o modelo do ecf"
   nModelo := ALLTRIM(STR(VAL(LEFT(cModelo, 2))))
	ret := ECFSetModelo(nHandle, nModelo)
   CheckResult(ret, nHandle)

   ? "Obtem o modelo configurado"
   buffer := ECFGetModelo(nHandle)
	SysRefresh()
	MsgAlert("Modelo: "+cValToChar(buffer))
	
	? "Define a porta de comunicação"
	ret := ECFSetPorta(nHandle, cPorta)
   CheckResult(ret, nHandle)

	? "Obtem a porta de comunicação definida"
   buff := SPACE(100)
   ret = ECFGetPorta(nHandle, @buff, 100)
   CheckResult(ret, nHandle)

   ? "Verivicar se ECF está ativo"
   ret := ECFGetAtivo(nHandle)
   CheckResult(ret, nHandle)

   ? "Avtivar o ECF"
   ECFAtivar(nHandle)

   ? "Verivicar se ECF está ativo"
	ret := ECFGetAtivo(nHandle)
   CheckResult(ret, nHandle)

   ? "Emitir leitura X"
	ret := ECFLeituraX(nHandle)
   CheckResult(ret, nHandle)

   ? "Desativar o ECF"
	ret := ECFDestroy(@nHandle)
   CheckResult(ret, nHandle)

	FreeLib32(xdll)
RETURN NIL

STATIC FUNCTION CheckResult(ret, nHandle)
   LOCAL buff := SPACE(100)
*  ECFGetUltErro(nHandle, @buff, 100)
	SysRefresh()
	MsgInfo("Retorno: "+cValToChar(ret), "Aviso")
RETURN NIL

xdll:=LoadLibrary("ACBrFramework32.dll")
DLL32 FUNCTION ECFCreate( @nHandle AS PTR ) AS 7 PASCAL FROM "ECF_Create" LIB xdll
DLL32 FUNCTION ECFGetUltErro( ecfHandle AS PTR, @buffer AS 8, bufferLen AS STRING ) AS LONG PASCAL FROM "ECF_GetUltimoErro" LIB xdll
DLL32 FUNCTION ECFSetModelo( nHandle AS PTR, cModelo AS STRING ) AS LONG PASCAL FROM "ECF_SetModelo" LIB xdll
DLL32 FUNCTION ECFGetModelo( nHandle AS PTR ) AS LONG PASCAL FROM "ECF_GetModelo" LIB xdll
DLL32 FUNCTION ECFGetModStr( nHandle AS PTR, @buffer AS STRING, bufferLen AS STRING ) AS LONG PASCAL FROM "ECF_GetModeloStr" LIB xdll
DLL32 FUNCTION ECFSetPorta( nHandle AS PTR, porta AS STRING ) AS LONG PASCAL FROM "ECF_SetPorta" LIB xdll
DLL32 FUNCTION ECFGetPorta( nHandle AS PTR, @buffer AS STRING, bufferLen AS STRING ) AS LONG PASCAL FROM "ECF_GetPorta" LIB xdll
DLL32 FUNCTION ECFGetAtivo( nHandle AS PTR ) AS LONG PASCAL FROM "ECF_GetAtivo" LIB xdll
DLL32 FUNCTION ECFAtivar( nHandle AS PTR ) AS LONG PASCAL FROM "ECF_Ativar" LIB xdll
DLL32 FUNCTION ECFLeituraX( nHandle AS PTR ) AS 7 PASCAL FROM "ECF_LeituraX" LIB xdll
DLL32 FUNCTION ECFDestroy( @nHandle AS PTR ) AS 7 PASCAL FROM "ECF_Destroy" LIB xdll
freelibrary(xdll)

*----------------------( Função MsgSelect )-----------------------------------*
function MsgSelect( aItems, cValue, cTitle, cTitBt1, cTitBt2 )
   LOCAL oDlg, lOk, cDescr, nScan
   DEFAULT cTitle  := "Selecione"
   DEFAULT cTitBt1 := "&Ok"
   DEFAULT cTitBt2 := "Ca&ncelar"
   DEFAULT cValue := aItems[1]
   nScan  := 1
   cDescr := SPACE(40)
   lOk    := .F.
   aItems := ASORT(aItems)
   DEFINE DIALOG oDlg FROM 5,10 TO 27, 54 TITLE cTitle
   @ 01,02 GET cDescr SIZE 145,10 OF oDlg ;
           ON CHANGE ( ::Assign() ,;
                       cGet := SubStr( cDescr, 1, ::nPos - 1 ) ,;
                       AEVAL(aItems ,{|cData,nItem| IIF( LEFT(cData,LEN(cGet)) = cGet, nScan:=nItem, nScan:=nScan)}),;
                       oList:Select(nScan) )
   @ 02,02 LISTBOX oList VAR cValue ITEMS aItems SIZE 145, 100 OF oDlg
   @ 08,07 BUTTON cTitBt1 OF oDlg SIZE 40, 12 ACTION (lOk := .T., oDlg:End()) DEFAULT
   @ 08,16 BUTTON cTitBt2 OF oDlg SIZE 40, 12 ACTION (lOk := .F., oDlg:End()) CANCEL
   ACTIVATE DIALOG oDlg CENTERED
RETURN cValue

Boa tarde, posso disponibilizar um exemplo, me adicione no skype.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...