Sistema PDV com PHP-GTK2 e ACBrMonitor (parte 2)

Nessa segunda parte do artigo concluirei a parte teórica, veremos o módulo administrativo do PDV e um pouco mais sobre o trabalho com Impressoras Fiscais ECF, falarei sobre o ACBr Monitor e sobre a Impressora Fiscal ECF 1Fit Logger da Urano, bem como de seu protocolo de Comunicação, o protocolo FiscNET.

[ Hits: 79.234 ]

Por: Relsi H. Maron em 19/06/2008 | Blog: http://www.tuxtilt.com


O Protocolo FiscNET



O FiscNET é o protocolo de comunicação de alto nível utilizado nos equipamentos da série Logger desenvolvidos pela empresa ZPM, e várias empresas fabricantes de ECF, que tem a ZPM como O.E.M, utilizam esse protocolo em seus equipamentos.

Sugiro que o manual de programação do protocolo seja lido de cabo a rabo, se precisarem de alguma ajuda com o mesmo podem entrar em contato ai que posso tentar ajudar. O download do manual pode ser feito aqui:
Abaixo seguem alguns trechos do manual que acho que podem dar uma introdução básica sobre o funcionamento do mesmo.

O protocolo FiscNET possui comandos de controle fiscal comandados sempre por um mestre (geralmente o computador) e obedecidos por um escravo (equipamento fiscal).

Os comandos são enfileirados para execução no equipamento fiscal e seu tempo de execução dependerá de diversos fatores como velocidade de impressão do mecanismo em uso, tempo de processamento do comando por parte do processador do equipamento fiscal e disponibilidade de recursos para sua execução como papel, por exemplo.

O conceito de fila de execução em equipamentos fiscais obriga à execução síncrona dos comandos, isto é, um comando precisa necessariamente ser concluído antes que um novo comando possa ser processado.

A configuração de comunicação para o protocolo FiscNET é a seguinte:
  • Baudrate 115200 bps
  • 8 data bits
  • Paridade par
  • 1 stop bit

Estrutura dos comandos:

A estrutura dos pacotes de dados do protocolo FiscNET é uma seqüência de caracteres ASCII dividida em seções, separadas pelo caracter ponto e vírgula (";"), onde cada seção possui a seguinte finalidade:

1ª seção:

Número de identificação do comando. É um número gerado pelo mestre da rede entre ZERO e 255 e deve ser diferente a cada novo comando enviado ao ECF (pelo menos não deve ser repetido num intervalo de 50 comandos). Como sugestão pode ser implementado como um número de auto incremento dos comandos. A finalidade desta número é identificar a que comando os retornos enviados pelo ECF se referem. Opcionalmente este identificador de comando pode ser preenchido em ZERO, caso em que não serão aceitos comandos enfileirados para execução.

2ª seção:

Quando enviado pelo mestre: Nome do comando. Quando enviado pelo escravo: Código de retorno.

3ª seção:

Quando enviado pelo mestre: Parâmetros do comando. Quando enviado pelo escravo: Parâmetros de retorno.

4ª seção:

Opcional: Tamanho do comando em bytes. Incluindo todos os espaços e caracteres especiais até o início desta seção. Se o comando recebido contiver esta seção o equipamento comandado também retornará esta seção na resposta. Esta seção serve como um verificador para o pacote.

Todos os comandos são identificados por uma constante ASCII. Cada comando pode ou não possuir parâmetros. Se houver a necessidade de informar mais de um parâmetro para um determinado comando, deverá ser informada uma lista de parâmetros na seção dos parâmetros. A lista de parâmetros exige um espaço que separe um parâmetro do outro.

Exemplo de comando sem parâmetros:

{172;EmiteLeituraX;;19}

Neste caso a primeira seção contém o valor 172 identificando o comando. A segunda seção contém o comando desejado EmiteLeituraX. Como este comando não requer parâmetros a terceira seção está vazia e a quarta está preenchida com o tamanho do comando desde o início da 1a até o início da 4a seção.

Exemplo de comando com um parâmetro:

{202;AvancaPapel;Avanco=100;}

Nesse caso note que a terceira seção contém o parâmetro para o comando AvancaPapel, e a quarta seção esta vazia, nesse caso a resposta enviada pelo escravo também não conterá nada nesta seção, porém é ressaltado no manual de programação que "O tamanho é fundamental como mecanismo de verificação da integridade do comando (sic)".

Exemplo de comando com uma lista de parâmetros:

{204;DefineAliquota;CodAliquotaProgramavel=2 PercentualAliquota=10;}

Bem, não vou me prolongar nesse assunto pois a intenção do artigo não é essa, mais uma vez sugiro o estudo do manual de programação do mesmo, e qualquer dúvida ou dificuldade não exitem em prender o grito aí.

Página anterior     Próxima página

Páginas do artigo
   1. O módulo administrativo
   2. Trabalhando com Impressoras Fiscais ECF
   3. O ACBr Monitor
   4. O Protocolo FiscNET
   5. A Impressora Fiscal 1Fit Logger
   6. O Emulador do ECF Logger
Outros artigos deste autor

Divertindo-se com efeitos de vidro e sombras no Inkscape

Remastersys: Crie seu próprio Live-CD do Ubuntu Linux

APTonCD: Ubuntu Linux sem dependência de internet

Usando o filtro Blur do Inkscape

Vetorizando um rosto com o Inkscape

Leitura recomendada

Abordagem exemplificada à Orientação a Objetos com PHP

Servidor Web com Fedora Core 7

Criando backup do MySQL com o mysqldump

Executando comandos DML em base de dados MySQL através do Eclipse PHP (Bônus: Temas e Fontes no Eclipse)

Provendo dados em um servidor PostgreSQL através do Apache e PHP

  
Comentários
[1] Comentário enviado por removido em 19/06/2008 - 11:43h

Parabéns pelo Artigo ficou muito bom!
Trabalho em um supermercado no interio de minas em Manhuaçu, sou responsavel pela manutenção da rede e das maquinas, e já estava a ha um bom tempo procurando algo sobre....muito bom mesmo...
Vou ficar esperando os proximos artigos seus referente sobre automação comercial...
E a questão dos pinpads, você ja tem uma solução pra ele?

Falew

[2] Comentário enviado por fernando_peace em 19/06/2008 - 13:22h

mt bom o artigo ficamos na espera de um artigo q fale sobre integração do sistema retaguarda e frente de cx

abraços
falow

[3] Comentário enviado por relsi.ramone em 19/06/2008 - 15:57h

hectonsuport, valeu pelo comentário, bueno em relação ao TEF com as operadoras de Cartão de crédito é uma coisa que irei abordar mais tarde para não tornar o artigo avançado demais, mesmo porque eu também estou iniciando a desenvolver para Linux agora, mas acredito que seja tranquilo também só tem que ver a questão da homologação do sistema e tals.

Qualquer coisa estamos ai, uma abração!!!

[4] Comentário enviado por relsi.ramone em 19/06/2008 - 16:03h

fernando_peace, valeu pelo comentário ai, então, como eu já havia comentado na primeira parte do artigo, pretendo adaptar o módulo ao LinuxStok que é um ERP bem legal e completo, dai eu pretendo abordar essa questão de integração, até lá!!

Um abração!!!

Relsi

[5] Comentário enviado por zebendo em 07/11/2008 - 18:09h

alguem ja usou com impressora DARUMA???


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts