Usuário com melhor resposta
comunicação com ecf's

Pergunta
-
Oi, estou iniciando o desenvolvimento de uma aplicação ponto de venda e me surgiu uma dúvida: como configuro via código c# a porta de conexão? Para as impressoras, eu criei duas classes, uma para bema e outra para daruma, na hora de instanciar eu leio do banco de dados o nome da impressora. Mais ainda está faltando a porta com ou usb. como faço isso via c#?
Respostas
-
Bom dia!
Neste caso vc vai utilizar comunicação direta, certo?
Então neste caso vc pode utilizar a classe SerialPort. Neste link (http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx) tem várias informações uteis.
Geralmente as conexões via USB para ECF acabam emulando uma porta serial. Então se vc tratar tudo como porta serial não vai ter problemas.
T+
- Sugerido como Resposta Fábio Vendramin Guimarães Rosini segunda-feira, 20 de junho de 2011 11:23
- Marcado como Resposta Daniel Ferreira terça-feira, 21 de junho de 2011 01:27
Todas as Respostas
-
Bom dia!
Neste caso vc vai utilizar comunicação direta, certo?
Então neste caso vc pode utilizar a classe SerialPort. Neste link (http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx) tem várias informações uteis.
Geralmente as conexões via USB para ECF acabam emulando uma porta serial. Então se vc tratar tudo como porta serial não vai ter problemas.
T+
- Sugerido como Resposta Fábio Vendramin Guimarães Rosini segunda-feira, 20 de junho de 2011 11:23
- Marcado como Resposta Daniel Ferreira terça-feira, 21 de junho de 2011 01:27
-
-
Bom dia!
Se vc for utilizar a DLL do fabricante, não precisa se preocupar com a porta serial, pois a DLL já faz isto para vc.
A única coisa que vc terá que fazer é configurar a porta serial e pedir pra DLL controlar a porta pra vc.
Cada fabricante tem uma forma de configurar isto, basta pegar a documentação de cada fabricante e configurar.
Por exemplo, na Daruma é no registro onde vc configura e Bematech em um arquivo BemaFI32.Ini
T+
-
-
Nilza, bom dia!
Temos um produto muito interessante para comunicação direto com várias ECFs, que pode lhe ajudar bastante em seu PDV, que é o projeto ACBrX (não é o ACBr em si).
O projeto ACBr possui diversos componentes que ajudam demais os desenvolvedores, porém, seus objetos (POO) estavam 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.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; }
EasyTEF Team