Business - Automação Comercial
Comunicando com o ECF em C# - parte 1
Para acessar a impressora fiscal por meio de sua dll de comunicação, é necessário declarar as funções da dll que contemplam os comandos de acesso. Para isso vamos criar um CodeFile e a ele adicionar os namespaces e as classes de acesso.
por Claudenir AndradePara acessar a impressora fiscal por meio de sua dll de comunicação, é necessário declarar as funções da dll que contemplam os comandos de acesso. Para isso vamos criar um CodeFile e a ele adicionar os namespaces e as classes de acesso.
Selecione o Menu Project opção AddNewItem e selecione o ícone de CodeFile, conforme figura 1,15.
Figura 1: Adicionando nova clase
Nomeie este codefile como ECFClass e pressione o botão OK.
Clique duas vezes no ECFClass.cs que está no Solution Explorer e adicione a este arquivo em branco a seguinte estrutura:
Listagem 1: Código da classe recém criada
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Reflection.Emit; using System.Runtime.InteropServices; using System.Data.OleDb; namespace Geral { Public Class ECF { } }
Agora já temos área disponível e "enxergável" por todo nosso projeto para declarar e trabalhar com as variáveis e cria as classes necessárias para a aplicação.
Observe que adicionamos alguns namespaces a mais, prevendo seu uso, como, por exemplo: System.Runtime.InteropServices. Este namespace permite declarar e interpretar com funções externas como a DLL de comunicação, por isso a necessidade desse namespace declarado no ECFClass.
Observe também que criamos nosso próprio namespace, o Geral. Quando necessitarmos acessar alguma variável, classe ou função que estiver dentro desse namespace e estejamos fora do ecfclass.cs, devemos sempre referenciar por meio do Geral.(Ponto), assim o Intellisense ajudará a identificar qual função ou variável estamos desejando acessar, passando pela classe pública o ECF.
Vamos agora declara as funções que utilizaremos para a comunicação com o ECF. São elas:
Listagem 2: Classe ECF com chamadas às funções da DLL BemaFi32
using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Reflection.Emit; using System.Runtime.InteropServices; using System.Data.OleDb; namespace Geral { /************************************************************* * Classe ECF para Manipular as Funções de Comunicação * para manipular as funções de retorno e status do ECF * Claudenir C. Andade * 09/02/2002 *********************************************************/ public class ECF { /******************************************************** * Declaração das DLL da Impressora Fiscal *********************************************************/ [DllImport("BemaFi32.dll")] public static extern int Bematech_FI_LeituraX(); [DllImport("BemaFi32.dll")] public static extern int Bematech_FI_RetornoImpressora(ref int Ack, ref int St1, ref int St2 ); [DllImport("BemaFi32.dll")] public static extern int Bematech_FI_Suprimento(System.String Valor, System.String FormPagamento ); [DllImport("BemaFi32.dll")] public static extern int Bematech_FI_Sangria(System.String Valor); [DllImport("BemaFi32.dll")] public static extern int Bematech_FI_ReducaoZ(System.String Data, System.String Hora); [DllImport("BemaFi32.dll")] public static extern int Bematech_FI_AbreCupom( System.String CGC_CPF); [DllImport("BemaFi32.dll")] public static extern int Bematech_FI_VendeItem(System.String Código, System.String Descrição, System.String Aliquota, System.String TipoQuantidade, System.String Quantidade, int CasasDecimais, System.String Vr_Unitario, System.String TipoDesconto, System.String Desconto); [DllImport("BemaFi32.dll")] public static extern int Bematech_FI_FechaCupomResumido (System.String FormaPagamento, System.String Mensagem); } } Observe que antes de cada declaração da função acrescentados a palavra reservada DllImport: [DllImport("BemaFi32.dll")]
Com ela conseguiremos acessar a dl sem maiores problemas. Observe também que algumas funções como a Retorno impressora contêm em seu parâmetro a palavra reservado ref: Bematech_FI_RetornoImpressora(ref int Ack, ref int St1, ref int St2 ). Isso e indica que estamos trabalhando com essas variáveis por referência, e as variáveis passadas deverão ter seu conteúdo modificado diretamente no endereço de memória em que se encontram.
Bem, já que temos declaradas as funções do ECF que iremos utilizar, vamos então preparar o form para receber os controles e, por sua vez efetuar a venda pelo cupom fiscal.
- DarumaFramework.SO no LinuxAutomação Comercial
- Palavra de status da impressora na DarumaFrameworkAutomação Comercial
- TEF – Comprovante de Crédito ou DébitoAutomação Comercial
- Comunicar com equipamentos Daruma em linguagens 16bits e DOSAutomação Comercial
- Verificando Redução Z nas Impressoras DarumaAutomação Comercial