Business - Automação Comercial
Comunicando com o ECF em C# - parte 2
No Artigo anterior tínhamos visto como declarar as funções do ECF (DLL BEMAFI32.DLL) nosso primeiro passo para estabelecer comunicação com o ECF.
por Claudenir AndradeArtigo anterior tínhamos visto como declarar as funções do ECF (DLL BEMAFI32.DLL) nosso primeiro passo para estabelecer comunicação com o ECF.
Bem, agora vamos criar as classes que vão analisar o retorno da dll e o status de cada comando enviado para a dll (BemaFI32.dll).
Abra o ECFClass.cs e nele adicione uma classe para verificação do retorno da dll, conforme código em seguida:
Listagem 1: Função Analisa_Retorno_Dll
public static void Analisa_Retorno_Dll(int RET) { if(RET!=1) { MessageBox.Show("Problemas Ao Enviar o Comando para o ECF", ECF.NET V1.0",MessageBoxButtons.OK); } }
Note que aqui não declaramos a variável RET, mas sim a recebemos por valor para ser analisada. Esta função fará parte da Public Class ECF que declaramos no ECFClass.cs.
Agora vamos adicionar ao nosso projeto a função que vai decodificar o erro do ECF. Veja que aqui não estamos utilizando constantes, como fizemos no VB, mas teremos a mesma funcionalidade.
Inclua o seguinte trecho de código no ECFClass.cs para a análise do retorno do comando enviado para o ECF.
Listagem 2: Função Analisa_Retono_ECF
public static void Analisa_Retono_ECF() { ACK=ST1=ST2=0; Bematech_FI_RetornoImpressora(ref ACK, ref ST1, ref ST2); if(ACK!=6) { MessageBox.Show("Problemas ao Enviar Comando","ECF.NET V1.0", MessageBoxButtons.OK,MessageBoxIcon.Error); } if (ST1>=128) { MessageBox.Show("FIM E PAPEL - FAVOR TROCAR A BOBINA","ECF.NET V1.0",MessageBoxButtons.OK,MessageBoxIcon.Error);ST1-=128; } else if(ST1>=64) { MessageBox.Show("O PAPEL ESTÁ TERMINANDO - FAVOR VERIFICAR.","ECF.NET V1.0",MessageBoxButtons.OK,MessageBoxIcon.Error);ST1-=64; } else if(ST1>=32) { MessageBox.Show("ERRO NO RELOGIO INTERNO DO ECF - CHAMAR ASSISTENCIA TECNICA!!","ECF.NET V1.0",MessageBoxButtons.OK,MessageBoxIcon.Error);ST1-=32; } else if(ST1>=16) { MessageBox.Show("IMPRESSORA EM ERRO - DESLIGUE E LIGUE O ECF","ECF.NET V1.0", MessageBoxButtons.OK,MessageBoxIcon.Error);ST1-=16; } else if(ST1>=8) { MessageBox.Show("ERRO NO ENVIO DO COMANDO - FAVOR REPETIR A OPERACÃO","ECF.NET V1.0", MessageBoxButtons.OK,MessageBoxIcon.Error);ST1-=8; } else if(ST1>=4) { MessageBox.Show("COMANDO INEXISTENTE - FAVOR ABRIR CHAMADO SUPORTE","ECF.NET V1.0", MessageBoxButtons.OK,MessageBoxIcon.Error);ST1-=4; } else if(ST1>=2) { MessageBox.Show("CUPOM FISCAL ABERTO - CANCELE O CUPOM OU TERMINE A VENDA","ECF.NET V1.0", MessageBoxButtons.OK,MessageBoxIcon.Error);ST1-=2; } else if (ST1>=1) { MessageBox.Show("PARAMETRO INVALIDO - FAVOR ABRIR CHAMADO SUPORTE","ECF.NET V1.0", MessageBoxButtons.OK,MessageBoxIcon.Error);ST1-=1; } //Analise do st2 if (ST2>=128) { MessageBox.Show("TIPO DE CMD INVALIDO - FAVOR ABRIR CHAMADO SUPORTE","ECF.NET V1.0", MessageBoxButtons.OK,MessageBoxIcon.Error);ST2-=128; } else if(ST2>=64) { MessageBox.Show("MEMORIA FISCAL CHEIA - CHAMAR ASSISTENCIA TECNICA!!","ECF.NET V1.0", MessageBoxButtons.OK,MessageBoxIcon.Error);ST2-=64; } else if(ST2>=32) { MessageBox.Show("ERRO DE CMOS DO ECF - CHAMAR ASSISTENCIA TECNICA!!","ECF.NET V1.0",MessageBoxButtons.OK,MessageBoxIcon.Error);ST2-=32; } else if(ST2>=16) { MessageBox.Show("ALIQUOTA NAO PROGRAMADA - FAVOR CANCELE O CUPOM E CADASTRE A ALIQUOTA","ECF.NET V1.0", MessageBoxButtons.OK,MessageBoxIcon.Error);ST2-=16; } else if(ST2>=8) { MessageBox.Show("CAPACIDADE ALIQUOTA LOTADA - FAVOR ABRIR CHAMADO SUPORTE","ECF.NET V1.0",MessageBoxButtons.OK,MessageBoxIcon.Error);ST2-=8; } else if(ST2>=4) { MessageBox.Show("CANCELAMENTO NAO PERMITIDO PELO ECF","ECF.NET V1.0",MessageBoxButtons.OK, MessageBoxIcon.Error);ST2-=4; } else if(ST2>=2) { MessageBox.Show("CGC/IE NAO PROGRAMDOS - CHAMAR ASSISTENCIA TECNICA!!","ECF.NET V1.0", MessageBoxButtons.OK,MessageBoxIcon.Error);ST2-=2; } else if(ST2>=1) { MessageBox.Show("COMANDO NAO EXECUTADO - VERIFIQUE O STATUS DA IMPRESSORA","ECF.NET V1.0", MessageBoxButtons.OK,MessageBoxIcon.Error);ST2-=1; } }
Observe que utilizamos a função Bematech_FI_RetornoI,mpressora passamos por referência para esta função as variáveis ACK, ST1 e ST2, utilizando-se palavra reservada ref Bematech_FI_RetornoImpressora(ref ACK, ref ST1, ref ST2);
Muito bem!!! Já temos então codificada a estrutura necessária para a codificação das funções que interagem com o ECF.
- 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