Jump to content

dev botao

ACBrX


EasyTEF
  • Este tópico foi criado há 4308 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Pessoal, boa tarde!

Estamos prestes a lançar um projeto novo no mercado, então gostaríamos da opinião da comunidade de software de automação comercial, para adequarmos a ideia da melhor forma possível.

O projeto ACBr possui diversos componentes que ajudam demais os desenvolvedores, porém, seus objetos (POO) estão ao alcance somente de programadores Delphi / Lazarus.

Assim, com o uso de COM (Component Object Model, modelo padrão de componentes do Windows) via ActiveX, começamos a programar interfaces COM para objetos ACBr e o primeiro componente a estar acessível é o ACBrECF.

Então, já temos uma DLL ActiveX que, após registrada no Windows, pode ser usada para instanciar um objeto ACBrECF diretamente em seus fontes, com tanto que sua linguagem de programação suporte COM, e são várias as que suportam, entre elas: VB6, VB.NET, C#, Access, Power Builder, xHarbour, Visual FoxPro (depende da versão), Visual DataFlex (depende da versão), entre outras. Basta verificar se sua linguagem de programação possui suporte a COM e como instanciar objetos COM.

Já programamos inclusive o exemplo ECFTeste, em VB6, e os printscreens podem ser vistos pelos seguintes links:

http://www.easysoftware.net.br/img/acbrx.acbrecf.01.png

http://www.easysoftware.net.br/img/acbrx.acbrecf.02.png

http://www.easysoftware.net.br/img/acbrx.acbrecf.03.png

http://www.easysoftware.net.br/img/acbrx.acbrecf.04.png

Quase todos os recursos estão disponíveis, desde eventos até listas de objetos, como por exemplo a propriedade ACBrECF.FormasPagamento. Inclusive, essas listas de objetos possuem suporte a for each, em linguagens como VB6 e C#

O que não está disponível igual ao Delphi são métodos sobrecarregados e polimorfismo, já que COM não suporta sobrecarga de métodos e polimorfismo. Porém, métodos sobrecarregados como ACBrECF.LeituraMemoriaFiscal, fizemos ACBrX.ACBrECF.LeituraMemoriaFiscalPorData / ACBrX.ACBrECF.LeituraMemoriaFiscalPorReducao, etc. A propriedade ACBrX.ACBrECF.ECF possui apenas os métodos e propriedades da classe básica ACBrECFClass.

Essa foi uma explicação técnica sobre o que é o projeto. Agora, vamos colocar qual é nossa ideia de lançamento. Gostaria de colocá-lo para a comunidade num modelo misto, tanto comercial como colaborativo. Comercial porque o trabalho de criar as interfaces COM é MUITO extenso, além de ser usadas técnicas avançadas de programação para, por exemplo, criar as listas de objetos e fazer com que os eventos (ou listeners, gatilhos, delegates, etc.) também estejam acessíveis aos objetos COM.

Colaborativo porque o projeto trará para a comunidade ACBr algo que há muito se aguarda, que é o HELP do componente. A idéia é liberar para a comunidade as estruturas de help pré feitas, tanto em HTML como CHM, para críticas, sugestões, adições, fazendo com que a documentação do ACBr esteja on-line para qualquer um acessar.

Além disso, a comunidade pode criar os exemplos em suas próprias linguagens de programação, assim, a pessoa que criar o ECFTeste em DataFlex, por exemplo, torna-se referência de conhecimento ACBr em sua linguagem, criando oportunidades de negócio em consultoria.

O ACBrX não está sendo desenvolvido para se opor ao ACBr, ou ter funcionalidades a mais, nem a menos. A ideia é fazer com que o ACBr torne-se um conceito que pode ser usado em várias linguagens de programação. Desta forma, tanto programadores Delphi como C#, VB6, etc, estarão falando sobre os mesmos métodos, parâmetros, eventos, listas. Desenvolvedores de várias linguagens poderão tirar suas dúvidas de ACBr nos fóruns e listas de discussão já existentes.

Enfim, o que irei comercializar é apenas nosso trabalho da criação das interfaces COM, que possibilitam acesso aos objetos ACBr diretamente em seus fontes, nada mais.

E agora, a pergunta que não quer calar: O que vocês acham de tudo isso? Aguardo críticas e sugestões. Grande abraço!

P.S. Conversei previamente com o Daniel Simões a respeito e ele não se opõe nem vê problemas no conceito do projeto.

Link to comment
Share on other sites

Opa, meus 5 centavos de opinião:

Sou fã do projeto ACBr. Eu "vesti a camisa" e tento retribuir ao projeto o máximo que posso ...

Já falei isso antes e repito: eu acho bizarramente mal feitas as DLLs distribuídas pelos fabricantes de ECF (todos eles), e o ACBr é um oasis dentro do universo de Automação Comercial.

Assim, o sentimento é o mesmo: quanto mais "sabores" de ACBr tivermos, melhor para todos. O mercado precisa reagir, já basta a legislação incoerente e confusa que temos que seguir, não precisamos seguir também as DLLs incoerentes e confusas!

Tecnicamente falando, a plataforma COM tem seus pontos fortes, pois consegue trazer uma API mais fiel à estrutura que existe nos componentes ACBr. Mas tem suas desvantagens, como baixa portabilidade (não roda em Linux) e dificuldade de interoperabilidade com Java;

Desejo sorte no projeto, e pode contar com nossa ajuda no que for preciso.

Abs,

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Link to comment
Share on other sites

Muito obrigado pela opinião, Rafael!

Colocarei aqui a opinião que coloquei em outro forum, sobre a questão da portabilidade:

Também pensei sobre o assunto. Até vi alguns frentes de caixa em Linux, mas somente em grandes lojas.

Conclui que o nosso mercado, de pequeno e médio porte, é Windows. Tomemos o TEF Discado como exemplo. Ele não funciona em Linux.

Pequenos estabelecimentos não querem saber de TEF IP ou TEF Dedicado por questão de custos. Por aí, já começa o uso do Windows.

No momento que um pequeno lojista precisar de uma manutenção, uma instalação de software, formatar a máquina, a hora do técnico de Linux é mais cara do que de Windows.

Eu mesmo nunca comercializei uma cópia de EasyTEF VeSPague para Lazarus no Linux. Enfim, concluo que Linux não é pra quem quer, mas para quem pode.

Nosso público alvo é Windows e o ACBrX se encaixa perfeitamente neste modelo, para muitas linguagens de programação.

Queria eu que o Linux tivesse um modelo padrão de componentes, como o COM, do Windows. Facilitaria bastante a vida de muitos desenvolvedores.

Opa, meus 5 centavos de opinião:

Sou fã do projeto ACBr. Eu "vesti a camisa" e tento retribuir ao projeto o máximo que posso ...

Já falei isso antes e repito: eu acho bizarramente mal feitas as DLLs distribuídas pelos fabricantes de ECF (todos eles), e o ACBr é um oasis dentro do universo de Automação Comercial.

Assim, o sentimento é o mesmo: quanto mais "sabores" de ACBr tivermos, melhor para todos. O mercado precisa reagir, já basta a legislação incoerente e confusa que temos que seguir, não precisamos seguir também as DLLs incoerentes e confusas!

Tecnicamente falando, a plataforma COM tem seus pontos fortes, pois consegue trazer uma API mais fiel à estrutura que existe nos componentes ACBr. Mas tem suas desvantagens, como baixa portabilidade (não roda em Linux) e dificuldade de interoperabilidade com Java;

Desejo sorte no projeto, e pode contar com nossa ajuda no que for preciso.

Abs,

Link to comment
Share on other sites

Pessoal, bom dia.

Segue link para versão de avaliação do ACBrX:

http://easysoftware.net.br/downloads/ACBrX.rar

Esse arquivo possui o exemplo ECFTeste em VB6.

Lembrando que a DLL deve ser registrada no Windows. O script "registrar componente.bat" já faz isso. No Windows Vista / 7, é necessário abrir um prompt de comando de administrador para então executar o script.

Há também o pouco de documentação que fiz. Pretendo adicionar mais descrições aos métodos e eventos que eu conhecer.

Segue código para instanciar o objeto ACBrX.ACBrECF em C#. O código é bem parecido para VB.NET. Após registrar a DLL no Windows, é necessário adicionar a referência COM ACBrX à solution. Outro detalhe importante é que o projeto deve ter Build para plataforma x86 (e não qualquer CPU).


using ACBrX;

using System.Runtime.InteropServices.ComTypes;


    public partial class Main : Form, IACBrECFEvents // reparar na implementação da interface IACBrECFEvents


        private ACBrX.ACBrECF ACBrECF;

        // variáveis para configuração de eventos

        private int cookie = -1;

        private IConnectionPoint icp = null;


        private void CarregarACBrX()

        {

            // instancia o objeto ACBrECF

            ACBrECF = new ACBrECF();

            // configuração de eventos

            // lembrando que é necessário implementar a interdace IACBrECFEvents junto ao form

            IConnectionPointContainer icpc = (IConnectionPointContainer)ACBrECF;

            Guid guid = typeof(IACBrECFEvents).GUID;

            icpc.FindConnectionPoint(ref guid, out icp);

            icp.Advise(this, out cookie);

        }


        private void Main_Load(object sender, EventArgs e)

        {

            CarregarACBrX();

        }


        private void Main_FormClosing(object sender, FormClosingEventArgs e)

        {

            icp.Unadvise(cookie);

            ACBrECF = null;

        }


Link to comment
Share on other sites

  • Membros Pro

Pessoal, boa tarde!

Estamos prestes a lançar um projeto novo no mercado, então gostaríamos da opinião da comunidade de software de automação comercial, para adequarmos a ideia da melhor forma possível.

O projeto ACBr possui diversos componentes que ajudam demais os desenvolvedores, porém, seus objetos (POO) estão ao alcance somente de programadores Delphi / Lazarus.

Assim, com o uso de COM (Component Object Model, modelo padrão de componentes do Windows) via ActiveX, começamos a programar interfaces COM para objetos ACBr e o primeiro componente a estar acessível é o ACBrECF.

Então, já temos uma DLL ActiveX que, após registrada no Windows, pode ser usada para instanciar um objeto ACBrECF diretamente em seus fontes, com tanto que sua linguagem de programação suporte COM, e são várias as que suportam, entre elas: VB6, VB.NET, C#, Access, Power Builder, xHarbour, Visual FoxPro (depende da versão), Visual DataFlex (depende da versão), entre outras. Basta verificar se sua linguagem de programação possui suporte a COM e como instanciar objetos COM.

Já programamos inclusive o exemplo ECFTeste, em VB6, e os printscreens podem ser vistos pelos seguintes links:

http://www.easysoftware.net.br/img/acbrx.acbrecf.01.png

http://www.easysoftware.net.br/img/acbrx.acbrecf.02.png

http://www.easysoftware.net.br/img/acbrx.acbrecf.03.png

http://www.easysoftware.net.br/img/acbrx.acbrecf.04.png

Quase todos os recursos estão disponíveis, desde eventos até listas de objetos, como por exemplo a propriedade ACBrECF.FormasPagamento. Inclusive, essas listas de objetos possuem suporte a for each, em linguagens como VB6 e C#

O que não está disponível igual ao Delphi são métodos sobrecarregados e polimorfismo, já que COM não suporta sobrecarga de métodos e polimorfismo. Porém, métodos sobrecarregados como ACBrECF.LeituraMemoriaFiscal, fizemos ACBrX.ACBrECF.LeituraMemoriaFiscalPorData / ACBrX.ACBrECF.LeituraMemoriaFiscalPorReducao, etc. A propriedade ACBrX.ACBrECF.ECF possui apenas os métodos e propriedades da classe básica ACBrECFClass.

Essa foi uma explicação técnica sobre o que é o projeto. Agora, vamos colocar qual é nossa ideia de lançamento. Gostaria de colocá-lo para a comunidade num modelo misto, tanto comercial como colaborativo. Comercial porque o trabalho de criar as interfaces COM é MUITO extenso, além de ser usadas técnicas avançadas de programação para, por exemplo, criar as listas de objetos e fazer com que os eventos (ou listeners, gatilhos, delegates, etc.) também estejam acessíveis aos objetos COM.

Colaborativo porque o projeto trará para a comunidade ACBr algo que há muito se aguarda, que é o HELP do componente. A idéia é liberar para a comunidade as estruturas de help pré feitas, tanto em HTML como CHM, para críticas, sugestões, adições, fazendo com que a documentação do ACBr esteja on-line para qualquer um acessar.

Além disso, a comunidade pode criar os exemplos em suas próprias linguagens de programação, assim, a pessoa que criar o ECFTeste em DataFlex, por exemplo, torna-se referência de conhecimento ACBr em sua linguagem, criando oportunidades de negócio em consultoria.

O ACBrX não está sendo desenvolvido para se opor ao ACBr, ou ter funcionalidades a mais, nem a menos. A ideia é fazer com que o ACBr torne-se um conceito que pode ser usado em várias linguagens de programação. Desta forma, tanto programadores Delphi como C#, VB6, etc, estarão falando sobre os mesmos métodos, parâmetros, eventos, listas. Desenvolvedores de várias linguagens poderão tirar suas dúvidas de ACBr nos fóruns e listas de discussão já existentes.

Enfim, o que irei comercializar é apenas nosso trabalho da criação das interfaces COM, que possibilitam acesso aos objetos ACBr diretamente em seus fontes, nada mais.

E agora, a pergunta que não quer calar: O que vocês acham de tudo isso? Aguardo críticas e sugestões. Grande abraço!

P.S. Conversei previamente com o Daniel Simões a respeito e ele não se opõe nem vê problemas no conceito do projeto.

Achei fantástico o projeto e parabéns pela iniciativa, sou programador Visual FoxPro e participo do grupo FoxBrasil, e postei o link do tópico para o pessoal apreciar o projeto.

Abraços, e mais uma vez, parabéns.

945757316_FantastsoftLogotipo100px.png.20c116e19bad4f7436640307ee0fa01a.png   Endrigo Rodrigues
Fantastsoft Sistemas

Node / Delphi 11.2
Cabo Frio/RJ

 

Link to comment
Share on other sites

A biblioteca ACBrX, com os objetos ACBrAAC, ACBrEAD, ACBrRFD e ACBrECF custa R$ 399,00 para o desenvolvedor e R$ 50,00 para o cliente final, por computador instalado.

Como estão os testes do ACBrX no FoxPro?

Não consegui nem declarar as funções, se é que é necessário. Seria interessante um caminho das pedras genérico (independente da linguagem) indicando os passos iniciais que devem ser executados pois no exemplo em VB isso fica difícil de visualizar.

Link to comment
Share on other sites

Prezado Jader,

Na verdade, não é uma DLL de funções, como as DLLs das impressoras fiscais, mas, como o tópico mesmo diz, é uma DLL ActiveX.

Qual é sua linguagem de programação? Ela precisa suportar o padrão COM (Component Object Model).

Primeiro a DLL precisa ser registrada no Windows (no começo do tópico é descrito como fazer isso). Depois, dependendo do ambiente de programação, você importa a referência ACBrX para dentro de seu sistema. Se não for assim, você cria um objeto OLE "ACBrX.ACBrECF".

A documentação que acompanha a DLL não possui a descrição de todos os métodos, mas lista todos os métodos, propriedades, eventos e tipos enumerados.

Esta é uma DLL que traz um objeto, não comandos. No que pudermos ajudar, estamos aí.

A biblioteca ACBrX, com os objetos ACBrAAC, ACBrEAD, ACBrRFD e ACBrECF custa R$ 399,00 para o desenvolvedor.

Como estão os testes do ACBrX no FoxPro?

Não consegui nem declarar as funções, se é que é necessário. Seria interessante um caminho das pedras genérico (independente da linguagem) indicando os passos iniciais que devem ser executados pois no exemplo em VB isso fica difícil de visualizar.

Link to comment
Share on other sites

Teste com DemoACBrDaruma.exe: OK

Testes com Visual FoxPro 9.0 e ECF Daruma FS700:

- Consegui registrar a DLL e criar o objeto ACBrECF.

Qual a sequência de comandos da ACBrECF para configurar a impressora? Tentei seguir o exemplo em Delphi mas estou recebendo mensagem "Impressora Daruma não está respondendo".

Segue código de teste:

loACBrECF = NEWOBJECT('ACBrX.ACBrECF')

loACBrECF.Device.Baud = 115200

loACBrECF.Porta = 'COM1'

loACBrECF.TimeOut = 3

loACBrECF.Modelo = 4 && -->>> sem esta linha informa que modelo não está definido

loACBrECF.Ativar()

loACBrECF = null

Não encontrei material de ajuda para essas definições iniciais.

Obrigado!

Jáder E. de Souza

Link to comment
Share on other sites

Prezado Jader,

Como colocado no começo do post, a documentação é colaborativa, então é necessário ser terminada ainda. Mas acredito que o que vc queira não seja documentação, mas um tutorial. Tem diferença. De qualquer, não há documentação nem tutorial, até porque, precisaria de um tutorial para cada linguagem.

Não precisa abrir o exemplo em Delphi, pois o ACBrX acompanha exemplo em VB6. Já que você mexe com Visual Fox Pro, que é parte do Visual Studio 6, você pode abrir o exemplo em VB6 que acompanha o ACBrX. Fiz um pequeno tutorial em VB6, que acredito poder ser adaptável para o FoxPro:


    ACBrECF.FormMsgColor = vbRed

    ACBrECF.Modelo = ecfSweda

    ACBrECF.Porta = "COM1"


    If Not ACBrECF.Ativo Then

        If Not ACBrECF.Ativar Then

            MsgBox "Não foi possível ativar o componente ACBrX.ACBrECF."

            Exit Sub

        End If

    End If


    If ACBrECF.Estado = estRequerZ Then

        If Not ACBrECF.ReducaoZ(Now) Then

            MsgBox "Não foi possível emitir a Redução Z"

            Exit Sub

        End If

    End If


    Call ACBrECF.CancelaCupom


    If Not ACBrECF.AbreCupom("11111111111", "Fulano de Tal", "Rua da Fantasia") Then

        MsgBox "Não foi possível emitir a Redução Z."

        Exit Sub

    End If


    If Not ACBrECF.VendeItem(Format("000", 1), "DESCRICAO PRODUTO: " & Format("000", 1), "NN", 1, 123.45, 0, "UN") Then

        MsgBox "Não foi possível vender o ítem."

        Exit Sub

    End If


    If Not ACBrECF.SubtotalizaCupom(0, "") Then

        MsgBox "Não foi possível subtotalizar o cupom."

        Exit Sub

    End If


    If Not ACBrECF.EfetuaPagamento("01", 123.45, "Quem quer Dinheiro?", False) Then

        MsgBox "Não foi possível efetuar a forma de pagamento de índice '01'."

        Exit Sub

    End If


    If Not ACBrECF.FechaCupom("*** OBRIGADO E VOLTE SEMPRE!!! ***") Then

        MsgBox "Não foi possível terminar o fechamento do cupom fiscal."

        Exit Sub

    End If

modelo_acbrx.png

Teste com DemoACBrDaruma.exe: OK

Testes com Visual FoxPro 9.0 e ECF Daruma FS700:

- Consegui registrar a DLL e criar o objeto ACBrECF.

Qual a sequência de comandos da ACBrECF para configurar a impressora? Tentei seguir o exemplo em Delphi mas estou recebendo mensagem "Impressora Daruma não está respondendo".

Segue código de teste:

loACBrECF = NEWOBJECT('ACBrX.ACBrECF')

loACBrECF.Device.Baud = 115200

loACBrECF.Porta = 'COM1'

loACBrECF.TimeOut = 3

loACBrECF.Modelo = 4 && -->>> sem esta linha informa que modelo não está definido

loACBrECF.Ativar()

loACBrECF = null

Não encontrei material de ajuda para essas definições iniciais.

Obrigado!

Jáder E. de Souza

Link to comment
Share on other sites

  • 1 year later...
  • Este tópico foi criado há 4308 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...