62
Rua Irati, 131 - Santa Quitéria Curitiba/PR - CEP: 80310-150 TELEFONE/FAX: (41) 3013 6670 – (41) 3013 6681 www.cesna.com.br CESNA TECHNOLOGY MANUAL PARA DESENVOLVEDORES IDCODE Documentação de auxílio à integração com Concentrador IDcode Utilizando CesnaActiveX.dll V 1.1.0 - ActiveX Versão 1.1.0

A Ycentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · aprimoramento deste manual, a fim de se conseguir uma melhor explanação dos conteúdos e funcionalidades

Embed Size (px)

Citation preview

Rua Irati, 131 - Santa Quitéria Curitiba/PR - CEP: 80310-150

TELEFONE/FAX: (41) 3013 6670 – (41) 3013 6681 www.cesna.com.br

CESNA TECHNOLOGY

MANUAL PARA DESENVOLVEDORES IDCODE

Documentação de auxílio à integração com Concentrador IDcode

Utilizando CesnaActiveX.dll V 1.1.0 - ActiveX

Versão 1.1.0

Cesna Technology | 2013

ATENÇÃO...

A CESNA TECHNOLOGY dispõe de

um conjunto de exemplos para integração

direta com a DLL de manipulação do

Concentrador IDcode, na linguagens C++. Fornecemos esse material no intuito de

auxiliar aos desenvolvedores de sistemas

de integração com o Concentrador através

do objeto ActiveX, utilizando-se da DLL

CesnaActiveX.dll.

Mudanças poderão ser efetuadas para o

aprimoramento deste manual, a fim de se

conseguir uma melhor explanação dos

conteúdos e funcionalidades aqui

apresentados, bem como correções ortográficas ou algo do gênero.

Quaisquer mudanças que sejam

executadas neste material serão

disponibilizadas no site www.cesna.com.br

na seção de downloads onde também estará

à disposição dos integradores exemplos de

integração com a CesnaActiveX.dll.

Sempre que for desenvolver junto a

esta DLL, procure a última versão deste

documento no endereço acima citado.

Estamos abertos a sugestões, através do

e-mail [email protected], para que

possamos alcançar excelência no

atendimento de nossos clientes e parceiros.

Cesna Technology | 2013

SUMÁRIO

LISTA DE FIGURAS ...................................................................................................... 3

LISTA DE TABELAS ...................................................................................................... 3

LISTA DE SIGLAS ......................................................................................................... 4

1 OBJETIVO GERAL DESTE MANUAL .............................................................................. 6

2 DESCRIÇÃO DO COMPONENTE CESNAACTIVEX.DLL .................................................... 7

2.1 Importando o Componente ActiveX ........................................................................... 8

2.2 Descrição das Funções Disponíveis ........................................................................... 10

2.2.1 IDcodeOpen ............................................................................................................. 13

2.2.2 IDcodeApagaTabFrentista ........................................................................................ 14

2.2.3 IDcodeArmazenaCrcTab ........................................................................................... 14

2.2.4 IDcodeAutorizaAbastecimento ................................................................................. 14

2.2.5 IDcodeConfiguraMab ............................................................................................... 15

2.2.6 IDcodeTravaBomba .................................................................................................. 16

2.2.7 IDcodeDestravaBomba ............................................................................................. 16

2.2.8 IDcodeObtemAbastecimento ................................................................................... 17

2.2.9 IDcodeObtemAbastFlash .......................................................................................... 17

2.2.10 IDcodeObtemConfiguracaoMab ............................................................................... 18

2.2.11 IDcodeObtemNumAbastOff ..................................................................................... 18

2.2.12 IDcodeObtemPrecoPorLitro ..................................................................................... 19

2.2.13 IDcodeObtemStatusBomba ...................................................................................... 20

2.2.14 IDcodeObtemTotalizador ......................................................................................... 20

2.2.15 IDcodeObtemUltimoVolume .................................................................................... 21

2.2.16 IDcodeProcuraTag .................................................................................................... 21

2.2.17 IDcodeSalvaTag ........................................................................................................ 22

2.2.18 IDcodeSetaPrePago .................................................................................................. 22

2.2.19 IDcodeTestaTag ........................................................................................................ 23

2.2.20 IDcodeTrocaPrecoPorLitro........................................................................................ 23

2.2.21 IDcodeVersaoDLL ..................................................................................................... 23

2.2.22 IDcodeClose ............................................................................................................. 24

2.3 Retorno dos Métodos do Objeto ActiveX .................................................................. 25

Cesna Technology | 2013

2.3.1 OnIDcodeAbasteceu ................................................................................................. 25

2.3.2 OnIDcodeRetornoAbastFlash.................................................................................... 29

2.3.3 OnIDcodeMudancaDeEstado .................................................................................... 29

2.3.3.1 BOMBA_PRONTA ..................................................................................................... 29

2.3.3.2 BOMBA_NAO_RESPONDE ........................................................................................ 29

2.3.3.3 BOMBA_PEDE_AUTORIZACAO ................................................................................. 30

2.3.3.4 BOMBA_AGUARDANDO_CARTAO ............................................................................ 30

2.3.3.5 BOMBA_LIBERADA_PARA_ABASTECER ..................................................................... 30

2.3.3.6 BOMBA_ABASTECENDO ........................................................................................... 30

2.3.3.7 BOMBA_ABASTECEU ................................................................................................ 31

2.3.3.8 BOMBA_BLOQUEADA .............................................................................................. 31

2.3.3.9 BOMBA_DESBLOQUEADA ........................................................................................ 31

2.3.3.10 BOMBA_TROCOU_PRECO_POR_LITRO ..................................................................... 31

2.3.3.11 BOMBA_RESERVADA_PRE_PAGO ............................................................................. 31

2.3.3.12 BOMBA_INFORMOU_FALHA .................................................................................... 31

2.3.3.13 RETORNO_ABAST_FLASH ......................................................................................... 32

2.3.4 OnIDcodeTotalizador ............................................................................................... 32

2.3.5 OnIDcodeVolume ..................................................................................................... 34

2.3.6 OnIDcodePrecoPorLitro ............................................................................................ 35

2.3.7 OnIDcodeConfigMab ................................................................................................ 37

2.3.8 OnIDcodeErroCrc ..................................................................................................... 37

2.3.9 OnIDcodeInfoEvento ................................................................................................ 37

2.3.10 OnIDcodeNumAbastOff ............................................................................................ 37

2.3.11 OnIDcodeValorBombaAbast ..................................................................................... 38

3 DESCRIÇÃO IDCODE.DLL ........................................................................................... 39

4 CONCENTRADOR IDCODE ......................................................................................... 40

4.1 Descrição de Funcionamento ................................................................................... 41

4.1.1 Modo On-Line .......................................................................................................... 42

4.1.2 Modo Off-Line .......................................................................................................... 42

4.1.3 Modo de Operação do Concentrador IDcode ........................................................... 43

5 OBSERVAÇÕES DAS BOMBAS DE COMBUSTÍVEL ....................................................... 44

5.1 Bomba Lógica ........................................................................................................... 44

Cesna Technology | 2013

5.2 Particularidades das Bombas .................................................................................... 46

5.2.1 Wayne ..................................................................................................................... 46

5.2.1.1 Wayne Minnow ........................................................................................................ 47

5.2.1.2 Wayne Rifran ........................................................................................................... 47

5.2.1.3 Wayne Duplex .......................................................................................................... 47

5.2.1.4 Wayne 3G ................................................................................................................ 47

5.2.2 Bomba Gilbarco ....................................................................................................... 47

5.2.3 Bomba Stratema ...................................................................................................... 49

5.2.4 Bomba Aspro GNV ................................................................................................... 49

6 DICAS PARA SOFTWARE INTEGRADOR ...................................................................... 50

6.1 Importação do Driver Master IDcode USB para Windows 8 ...................................... 50

6.2 Iniciando a Comunicação com o Concentrador IDcode ............................................. 50

6.3 Solicitação de Encerrantes........................................................................................ 51

6.4 Digito do Milhão ...................................................................................................... 51

6.5 Autorização Automática ........................................................................................... 52

6.6 Bicos de Abastecimento ........................................................................................... 52

6.7 Atualização do Componente CesnaActiveX.dll .......................................................... 54

APÊNDICE A ............................................................................................................. 56

APÊNDICE B .............................................................................................................. 57

APÊNDICE C .............................................................................................................. 58

Cesna Technology | 2013

LISTA DE FIGURAS

Figura 1 - Fluxograma de Solicitação de Totalizadores. ................................................ 32

Figura 2 - Fluxograma Alteração e Conferência de Preço por Litro ............................... 35

Figura 3 - Fluxograma Descrição de Funcionamento ................................................... 41

Figura 4 - Descrição Bomba Lógica .............................................................................. 44

Figura 5 - Bomba Física. .............................................................................................. 44

Figura 6 - Bomba Lógica .............................................................................................. 45

Figura 7 - Registro em Windows 32 bits. ..................................................................... 54

Figura 8 - Registro em Windows 64 bits. ..................................................................... 54

LISTA DE TABELAS

Tabela 1 - Retornos Possíveis da Dll IDcode................................................................. 10

Tabela 2 - Bicos de Abastecimento.............................................................................. 53

Tabela 3 - Código dos Tipos de Bomba ........................................................................ 57

Tabela 4 - Funções de Retorno e Parâmetros .............................................................. 58

Cesna Technology | 2013

LISTA DE SIGLAS

- Bi ou Bico: Número que corresponde ao Bico da Bomba de Combustível.

- Bo ou Bomba: Número que corresponde a Bomba de Combustível.

- Bomba Lógica: O número do endereço configurado na Bomba de Combustível Física.

- Cd: Número de casas decimais.

-CRC: Cyclic Redundancy Check, verificação de redundância cíclica.

- CesnaActiveX.dll: Biblioteca em ActiveX para interface com IDcode.dll.

- Concentrador IDcode: Conjunto Master IDcode, MAB IDcode, Fonte IDcode de Alimentação,

Antenas IDcode e Cartões para Frentistas e Clientes, sendo esse opcional.

- Driver FTDI: Driver para Master IDcode USB.

- Firmware: Pequeno software dedicado e instalado no microcontrolador da MAB.

- Gerenciador IDcode: Software de gerenciamento e teste do Concentrador IDcode.

- IDcode.dll: Biblioteca que gerencia a comunicação com o Concentrador IDcode.

- Instalador Gerenciador IDcode: Software que instala e registra o software Gerenciador

IDcode.

- MAB: Módulo de Automação de Bombas. Hardware que controla e gerencia as bombas de

combustível.

- Master IDcode USB: Hardware de interface entre MAB e PC.

- PC: Microcomputador onde está conectada a Master IDcode USB.

- Ppl ou Preco: Preço por Litro de determinada Bomba e Bico.

- SB: – Simulador de Bombas.

- Simulador de Bombas IDcode: Software desenvolvido pela engenharia da Cesna Technology,

para auxiliar os integradores do Concentrador IDcode no desenvolvimento do Software

Integrador.

- Software Integrador: Programa desenvolvido pela empresa que está efetuando a integração

com o Concentrador IDcode.

- Vol ou Volume: Volume de determinada Bomba e do último bico abastecido.

- Tot, Totalizador ou Encerrante: Totalizador de determinada Bomba e Bico.

Cesna Technology | 2013

Cesna Technology | 2013

1 OBJETIVO GERAL DESTE MANUAL

Este manual foi desenvolvido no intuito de proporcionar aos seus utilizadores um meio

de consulta para informações e dicas de integração com o Concentrador IDcode, utilizando

como interface o componente CesnaActiveX.dll.

Serão descritas as funções disponíveis no componente ActiveX para envio e recepção

de mensagens ao Concentrador de Bombas IDcode, caso a integração que será realizada seja

com o Concentrador Fcm favor consultar o Manual Desenvolvedores Fcm. Também serão

apresentadas dicas e soluções que vivenciamos ao decorrer dos anos trabalhando neste ramo.

Esperamos que este manual seja de grande ajuda a todos os integradores que o

utilizarem. Também informamos que a Cesna Technology está disponível para responder

qualquer dúvida referente à integração com o Concentrador IDcode.

Todos os exemplos mostrados neste guia serão em linguagem de programação C++,

porém a Cesna Technology disponibiliza exemplos nas linguagens descritas no item 2.1.

Pedimos aos integradores que, antes de efetuar a integração com o Objeto ActiveX,

leiam atentamente este manual e suas recomendações sejam seguidas conforme solicitado.

Após a leitura e entendimento das funções este pode ser utilizado para consulta e auxílio no

trabalho de integração.

A Cesna Technology disponibiliza, como canal de comunicação e auxílio via e-mail ou

msn para esclarecimentos de dúvidas, o endereço [email protected]. Qualquer dúvida

com relação a hardware ou integração, este canal que deverá ser utilizado.

Também solicitamos a gentiliza de todos os utilizadores, se erros ou discrepância de

informações forem identificados neste manual, enviarem um e-mail ao suporte para correção.

Com esta ajuda podemos melhorar as informações gradativamente.

Agradecemos a todos e desejamos um ótimo desenvolvimento!

Cesna Technology | 2013

2 DESCRIÇÃO DO COMPONENTE CESNAACTIVEX.DLL

O arquivo CesnaActiveX.dll, foi desenvolvido com o objetivo de facilitar o envio e

recepção de dados, sem a necessidade de consultar ao Concentrador IDcode, caso exista

alguma mensagem para ser enviada ao computador. Sempre que a bomba efetuar um

abastecimento autorizado pelo Software de Integrador ou não, dependendo do modo de

operação que o Concentrador IDcode for configurado (será descrito mais adiante), será

adicionado à pilha de processos do S.O. Windows uma mensagem contendo os dados do

abastecimento. Com isso a respectiva função do objeto ActiveX receberá o processo com os

dados enviados pela IDcode.dll, sendo assim o Software Integrador poderá armazenar os

dados deste abastecimento em um banco de dados, por exemplo, e sinalizar ao seu software

de controle que um abastecimento foi recebido e se encontra em seu banco de dados. Assim

quando o programador achar necessário poderá buscar o abastecimento e mostrar na tela

para o utilizador do sistema. Qualquer status ou resposta a um comando o Software

Integrador receberá a mensagem da mesma forma.

A CesnaActiveX.dll, também foi desenvolvida para evitar que o Software Integrador

seja recompilado todas as vezes que a Cesna Technology efetuar uma melhoria ou correção na

comunicação com o Concentrador IDcode. Dessa forma é possível alterar a IDcode.dll quando

necessário sem impactar na integração já efetuada pelo Software Integrador. Por tanto, é

possível instalar nos clientes as últimas versões da IDcode.dll e Firmware da placa MAB.

Também gostaríamos de salientar que não é possível comunicação diretamente com a

IDcode.dll, justamente pelos motivos apresentados acima.

Como ferramenta de desenvolvimento, disponibilizamos o software Simulador

de Bombas, onde, para seu funcionamento, basta apenas substituir o arquivo IDcode.dll. Este

software foi desenvolvido para auxiliar o processo de integração com o Concentrador IDcode,

sendo possível simular os comandos e abastecimentos simulando o hardware Concentrador

IDcode real. Podendo ser executado no mesmo PC onde o Software Integrador está sendo

implementado.

O manual para utilização do Simulador de Bombas

(“Manual_Simulador_de_Bombas_IDcode”) está disponível na página de download no site da

Cesna Technology.

Cesna Technology | 2013

2.1 Importando o Componente ActiveX

Primeiramente deve-se instalar o software Gerenciador IDcode, pois junto com a sua

instalação ele registrará e copiará as DLL’S necessárias para o funcionamento do Concentrador

IDcode quando conectado ao PC. Não é necessário preocupar-se com o registro das DLL’S, pois

o instalador do Gerenciador IDcode fará este processo. Este software deverá estar instalado no

PC do cliente, sendo que o técnico instalador do hardware utilizará o mesmo para configurar e

testar o equipamento e as bombas de combustível conectadas a placa MAB.

Recomendamos ao Software Integrador que, se possível, exista um campo utilizado

para escolher o tipo de automação instalado no posto de combustível. E somente depois de

certificado que a automação é da Cesna Technology, inicializar funções referente ao objeto

ActiveX. Se este cuidado não for tomado, poderão ocorrer anomalias na execução do Software

Integrador.

Após o software Gerenciador IDcode instalado, podemos importar o componente

CesnaActiveX.dll.

Disponibilizamos formas de importação do componente ActiveX em Borland C++

Builder, Embarcadero C++ Builder XE, Borland Delphi 7, Embarcadero Delphi XE e Visual Studio

V 6.0. O passo-a-passo da importação será descrito no Apêndice A.

Após a importação é necessário analisar duas situações. Ou o programador do

Software Integrador está com um hardware do Concentrador IDcode, ou utilizará o programa

Simulador de Bombas IDcode para auxiliar na integração.

Se o modo a ser utilizado é o hardware Concentrador IDcode, a placa Master IDcode

USB deverá ser conectada em uma porta USB disponível do PC utilizado para desenvolvimento

ou testes, em seguida o driver do dispositivo Master IDcode USB deverá ser instalado. Um

tutorial de instalação do driver está contido na pasta do driver obtido através do download no

site da Cesna Technology (www.cesna.com.br), área de downloads.

Se o modo a ser utilizado é o Software Simulador de Bombas IDcode, deverá ser

seguido o processo adiante. Por padrão o instalador do Gerenciador IDcode instala o arquivo

“IDcode.dll” V 8.X.X para comunicação USB (para visualizar a versão do arquivo entrar nas

propriedades com o botão direito do mouse), esta deverá ser substituída pela V 3.1.X que é a

versão para o Simulador de Bombas IDcode. Com o Software Integrador desativado, deverá ser

copiada da pasta DLL’S/V3 do arquivo “IntegracaoCesna.zip” a “IDcode.dll” V 3.1.X e

Cesna Technology | 2013

substituída na pasta do sistema, que pode variar de acordo com o S.O. Windows instalado. Por

exemplo, em Windows 32 bits em “C:\Windows\System32”, para Windows 64 bits em

“C:\Windows\SysWOW64”. Esta DLL V 3.1.X fará a interface entre o Software Integrador e

Software Simulador de Bombas IDcode.

Se tudo ocorreu bem, já será possível utilizar a CesnaActiveX.dll para integração.

Cesna Technology | 2013

2.2 Descrição das Funções Disponíveis

Todas as solicitações ou eventos enviados ao Concentrador IDcode via CesnaActiveX.dll

serão retornados ao Software Integrador via evento do objeto ActiveX. Porém caso a

solicitação contenha um erro de sintaxe, ou tipo de dado, um número correspondente será

retornado imediatamente no momento da solicitação da função.

Possíveis Retornos:

RETORNOS POSSÍVEIS DA DLL IDCODE

1 Função Executada Com Sucesso

-1 Endereço da MAB fora do range

-2 Endereço da Bomba ou quantidade de Bombas fora do range

-3 Endereço do Bico fora do range

-4 Número de casas decimais maior que o máximo permitido

-5 Parâmetros adicionais fora do range

-6 Código de verificação da Tag invalido

-7 Função não suportada

-8 Handle da Thread principal invalido

-9 Handle da Window invalido

-10 Handle EventoSaida invalido

-11 Handle EventoEspera invalido

-12 Handle do EventoCmd invalido

-13 Handle do FTDI invalido

-14 Erro no ResumeThread

-15 Erro na função FT_OpenEx

-16 Erro na função FT_SetBaudRate

-17 Erro na função FT_SetDataCharacteristics

-18 Erro na função FT_SetFlowControl

-19 Erro na função FT_SetTimeouts

-20 Erro na função FT_SetUSBParameters

-21 Erro na função FT_SetLatencyTimer

-22 Erro na função FT_Purge

Tabela 1 - Retornos Possíveis da Dll IDcode

Obs. 1: Para os retornos de -8 à -22 solicite informações ao suporte da Cesna

Technology

Cesna Technology | 2013

Obs. 2: Os retornos das solicitações de funções são os mesmos tanto para o

Simulador de Bombas IDcode, quanto para o hardware. Logo todo o desenvolvimento

pode ser efetuado via simulador.

No Apêndice quadro abaixo, são mostrados os protótipos de funções disponíveis para

envio ao Concentrador IDcode, ou seja, os tipos de variáveis que serão passadas como

parâmetro na chamada da função.

Caso a integração a ser realizada seja para o Concentrador Fcm, favor consultar o

Manual Desenvolvedores Fcm.

Cesna Technology | 2013

PROTÓTIPOS DE FUNÇÃO IDCODE

Obs.: Todas as funções possuem retorno tipo long.

Cesna->IDcodeOpen(unsigned char NumeroMabs);

Cesna->IDcodeApagaTabFrentista(unsigned char Mab);

Cesna->IDcodeAutorizaAbastecimento(unsigned char Mab, unsigned char Bomba, unsigned char

Bico);

Cesna->IDcodeConfiguraMab(unsigned char Mab, unsigned char NumeroBombas, unsigned char

TipoBomba, unsigned char ModoOperacao);

Cesna->IDcodeDestravaBomba(unsigned char Mab, unsigned char Bomba, unsigned char Bico);

Cesna->IDcodeLimpaAbastFlash(unsigned char Mab);

Cesna->IDcodeObtemAbastecimento(unsigned char FlagObtemAbastecimento);

Cesna->IDcodeObtemAbastFlash(unsigned char Mab, long NumeroAbastecimento);

Cesna->IDcodeObtemConfiguracaoMab(unsigned char Mab);

Cesna->IDcodeObtemNumAbastOff(unsigned char Mab);

Cesna->IDcodeObtemPrecoPorLitro(unsigned char Mab, unsigned char Bomba, unsigned char

Bico);

Cesna->IDcodeObtemStatusBomba(unsigned char Mab, unsigned char Bomba);

Cesna->IDcodeObtemTotalizador(unsigned char Mab, unsigned char Bomba, unsigned char

Bico);

Cesna->IDcodeObtemUltimoVolume(unsigned char Mab, unsigned char Bomba, unsigned char

Bico);

Cesna->IDcodeSetaPrePago(unsigned char Mab, unsigned char Bomba, unsigned char Bico,

long Volume, unsigned char VolumeCasadDecimal);

Cesna->IDcodeTravaBomba(unsigned char Mab, unsigned char Bomba, unsigned char Bico);

Cesna->IDcodeTrocaPrecoPorLitro(unsigned char Mab, unsigned char Bomba, unsigned char

Bico, long PrecoPorLitro, unsigned char PrecoPorLitroCasaDecimal);

Cesna->IDcodeVersaoDll();

Cesna->IDcodeClose();

Estas funções não precisam ser declaradas em código, pois já estão contidas na

importação do objeto. Após o Objeto ActiveX instalado, as mesmas podem ser acessadas via

chamada de ponteiro “Cesna-> ” em C++ ou “Cesna. ” em Delphi . Como citado acima, estas

possuem todos os seus retornos em tipo long.

Será demonstrado adiante a utilização e os objetivos de cada uma das funções

relacionadas acima.

Cesna Technology | 2013

2.2.1 IDcodeOpen

Inicia uma conexão com o hardware Master IDcode USB ou com o Simulador de

Bombas IDcode. Deverá ser passado como parâmetro o número de MABs com quais se deseja

comunicar. O número do MABs deverá ser definido através da função “IDcodeConfiguraMab”

que é descrita no item 2.2.5. Exemplo:

unsigned char NumeroMabs = 0x01; // Var com o número de MABs

long Retorno = 0; // Retorno da função para testar se OK ou não.

//Solicitação da função

Retorno = Cesna->IDcodeOpen(NumeroMabs);

if(Retorno != 1)// Testa retorno da função, se diferente de 1 erro, se igual a 1 OK.

{

// Rotina para tratamento de erro.

return;

}

// Executa o próximo passo.

Observação: A partir do momento em que é aberta a comunicação através do

comando IDcodeOpen o componente ActiveX verifica todas as chamadas de funções feitas

para o Concentrador IDcode. Caso seja feita uma chamada de função Fcm a CesnaActiveX.dll

irá informar no log que foi feita uma chamada de função incorreta e o comando não será

executado.

ATENÇÃO: Tanto o “Concentrador IDcode” como o “Concentrador Fcm” utilizam

o mesmo componente, CesnaActiveX.dll, para fazer a integração com o software de

gerenciamento. Por tanto pode-se notar que ao importar o componente tanto as

funções do Concentrador IDcode quanto as do Fcm estarão disponíveis. É de vital

importância que as funções utilizadas para a integração com o Concentrador IDcode

sejam as que possuam o prefixo “IDcode<Nome da Função>”. Por exemplo:

IDcodeOpen(). Os eventos de resposta devem possuir o prefixo “OnIDcode<Nome da

Função>”. Por exemplo: OnIDcodeAbasteceu.

As funções que possuírem prefixo “Fcm” ou “OnFcm” são referentes à

integração com o “Concentrador Fcm”. Para mais informações a respeito desta

integração favor consultar o “Manual Desenvolvedores Fcm”.

Cesna Technology | 2013

2.2.2 IDcodeApagaTabFrentista

Apaga a tabela de tags que está gravada na MAB. Após a tabela de tags ser apagada

nenhum abastecimento poderá ser autorizado até que se tenha gravado uma nova lista de

tags na MAB. Por tanto é preciso ter cuidado ao utilizar esse comando para evitar que as tags

sejam apagadas da MAB por engano.

O parâmetro para essa função é o número da MAB da qual se deseja apagar a tabela.

Exemplo:

unsigned char Mab = 0x01; // Var com o número do Fcm Master USB

long Retorno = 0; // Retorno da função para testar se OK ou não.

Retorno = Cesna->IDcodeApagaTabFrentista(Mab);

if(Retorno != 1)// Testa retorno da função, se diferente de 1 erro, se igual a 1 OK.

{

// Rotina para tratamento de erro.

return;

}

Atenção: Função não implementada no software Simulador de Bombas IDcode.

2.2.3 IDcodeArmazenaCrcTab

Comando de uso interno da CesnaTechnology.

Atenção: Função não implementada no software Simulador de Bombas IDcode.

2.2.4 IDcodeAutorizaAbastecimento

Esta função será utilizada quando se deseja liberar uma determinada Bomba Lógica

para abastecer, quando o Concentrador IDcode estiver configurado para operar no modo1 “B”.

Quando o estado da bomba for “BOMBA_PEDE_AUTORIZACAO” 2, o envio deste comando irá

liberar a bomba para abastecer. Exemplo:

1 - Modo de Operação do Concentrador IDcode. 2 - BOMBA_PEDE_AUTORIZACAO.

Cesna Technology | 2013

//Esta função será melhor explicada no retorno dos métodos adiante.

//Supondo que a MAB, Bomba e Bico que está pedindo autorização para abastecer,

//seja do endereço MAB=1, Bomba=2, Bico=1.

unsigned char Mab = 0x01; // Var com o número da MAB da Solicitação

unsigned char Bomba = 0x02; // Var com o número da bomba desejada.

unsigned char Bico = 0x01; // Var com o número do bico desejado.

long Retorno = 0; // Retorno da função para testar se OK ou não.

// Solicitação da função.

Retorno = Cesna->IDcodAutorizaAbastecimento(Mab, Bomba, Bico);

if(Retorno != 1)// Testa retorno da função, se diferente de 1 erro, se igual a 1 OK.

{

// Rotina para tratamento de erro.

return;

}

// Executa a próxima ação.

Atenção: Função não implementada no software Simulador de Bombas IDcode.

2.2.5 IDcodeConfiguraMab

Informa à placa MAB o número de bombas lógicas que ela deverá gerenciar, o modo

de operação3 que a mesma deverá operar e o tipo da bomba que será configurada. Se o

número de bombas não for passado corretamente, poderão ocorrer as duas seguintes

situações:

A primeira é se o número de bombas configurado for menor que o número de bombas

da pista. O Concentrador IDcode não irá verificar o status das bombas configuradas com

endereço lógico superior ao informado, com isso estas não iniciarão o abastecimento quando

acionadas.

A segunda é se o número de bombas configurado for superior ao número de bombas

existentes na pista. Os endereços que o Concentrador IDcode não receber resposta entrarão

em uma rotina de tratamento de erros, sendo assim irá demorar mais tempo para verificar o

status de todas as bombas configuradas.

Atenção: A configuração das bombas deverá ser feita na instalação do Concentrador

IDcode através do software Gerenciador IDcode da Cesna Technology para evitar

incongruência na configuração e consequentemente erros na comunicação com as bombas.

3 - Modo de Operação do Concentrador IDcode.

Cesna Technology | 2013

Não será necessário que o sistema envie a informação das configurações ao iniciar a

comunicação com o concentrador, pois uma vez a pista configurada através do Gerenciador

Cesna os parâmetros se manterão os mesmos até que seja feita uma nova configuração.

2.2.6 IDcodeTravaBomba

Esta função é utilizada quando se deseja travar ou parar a bomba de combustível, ela

estando em operação ou não. Existe uma interpretação diferente dependendo da marca e

modelo da bomba quando utilizar este comando4. Exemplo:

unsigned char Mab = 0x01; // Var com o número da MAB da Solicitação

unsigned char Bomba = 0x01; // Var com o número da bomba desejada.

unsigned char Bico = 0x01; // Var com o número do bico desejada.

long Retorno = 0; // Retorno da função para testar se OK ou não.

Retorno = Cesna->IDcodeTravaBomba(Mab, Bomba, Bico);// Solicitação da função.

if(Retorno != 1)// Testa retorno da função, se diferente de 1 erro, se igual a 1 OK.

{

// Rotina para tratamento de erro.

return;

}

// Executa a próxima ação.

2.2.7 IDcodeDestravaBomba

Esta função é utilizada quando se deseja destravar a bomba, geralmente após um

comando “IDcodeTravaBomba”. Exemplo:

unsigned char Mab = 0x01; // Var com o número da MAB da Solicitação

unsigned char Bomba = 0x01; // Var com o número da bomba desejada.

Unsigned char Bico = 0x01 // Var com o número do bico desejado

long Retorno = 0; // Recebe o retorno da função para testar se OK ou não.

Retorno = Cesna->IDcodeDestravaBomba(Mab, Bomba, Bico);// Solicitação da função.

if(Retorno != 1)// Testa retorno da função, se diferente de 1 erro, se igual a 1 OK.

{

// Rotina para tratamento de erro.

return;

}

// Executa a próxima ação.

4 - DICAS PARA SOFTWARE INTEGRADOR.

Cesna Technology | 2013

2.2.8 IDcodeObtemAbastecimento

Para evitar a perda de abastecimentos ao iniciar uma comunicação com o

Concentrador IDcode foi criada uma flag para informar ao concentrador quando ele deve

enviar os abastecimentos ou não. Quando esta flag for 1 (um) o concentrador enviará todos os

abastecimentos que forem feitos assim como os abastecimentos off-line que estiverem

guardados na flash da MAB, quando a flag for 0 (zero) o Concentrador IDcode não enviará os

abastecimentos para o software de gerenciamento, somente os status das bombas que

abastecerem. Exemplo:

// Caso deseje obter os abastecimentos o parâmetro da função deve ser 1, caso contrario

// o parâmetro deverá ser 0.

unsigned char FlagObtemAbastecimento = 0x01; // seta a flag para receber abastecimentos

long Retorno = 0; // Retorno da função para testar se OK

// Solicitação da função.

Retorno = Cesna->IDcodeObtemAbastecimento(FlagObtemAbastecimento);

if(retorno != 1)// Testa retorno da função, se diferente de 1 erro, se igual a 1 OK.

{

// Rotina para tratamento de erro.

return;

}

// Executa a próxima ação.

Esta função foi desenvolvida para utilização do suporte da Cesna, que à utilizará para

atender as solicitações dos clientes sem que este perca os dados dos abastecimentos que

venham a ocorrer.

Atenção: Função não implementada no software Simulador de Bombas IDcode.

2.2.9 IDcodeObtemAbastFlash

Cada MAB tem a capacidade de guardar até 301 abastecimentos em sua memória

flash. Esses abastecimentos podem ser consultados através da função

“IDcodeObtemAbastFlash” que tem como parâmetros o número da MAB e o número do

abastecimento.

O número do abastecimento é informado como no retorno do abastecimento

“OnIDcodeAbasteceu”, esse valor também pode ser encontrado nos logs gerados pela DLL

IDcode.dll e componente CesnaActiveX.

Exemplo de utilização do comando:

Cesna Technology | 2013

// Supondo que o abastecimento que se deseja obter é o de número 7

unsigned char Mab = 0x01; // Var com o número da MAB da solicitação

long NumeroAbastecimento = 7; // Var com o número do abastecimento

long Retorno = 0; // Retorno da função para testar se OK

// Solicitação da função.

Retorno = Cesna->IDcodeObtemAbastFlash(Mab, NumeroAbastecimento);

if(Retorno != 1)// Testa retorno da função, se diferente de 1 erro, se igual a 1 OK.

{

// Rotina para tratamento de erro.

return;

}

// Executa a próxima ação.

Atenção: Função não implementada no software Simulador de Bombas IDcode.

2.2.10 IDcodeObtemConfiguracaoMab

Função utilizada para saber qual é a configuração atual da MAB. O parâmetro passado

é apenas o número da MAB a qual se deseja obter a configuração. Exemplo:

unsigned char Mab = 0x01; // Var com o número da MAB da solicitação

long Retorno = 0; // Retorno da função para testar se OK ou não

// Solicitação da função.

Retorno = Cesna->IDcodeObtemConfiguracaoMab(Mab);

if(Retorno != 1)// Testa retorno da função, se diferente de 1 erro, se igual a 1 OK.

{

// Rotina para tratamento de erro.

return;

}

// Executa a próxima ação.

// O retorno com as informações solicitadas por esse comando vem através da função do

// objeto ActiveX5 OnIDcodeConfigMab que será descrito mais à frente.

2.2.11 IDcodeObtemNumAbastOff

Esta função é utilizada para obter a quantidade de abastecimentos que foram

realizados off-line. O parâmetro para a função é o número da MAB. Exemplo:

5 - OnIDcodeConfigMab.

Cesna Technology | 2013

unsigned char Mab = 0x01; // Var com o número da MAB da Solicitação

long Retorno = 0; // Retorno da função para testar se OK ou não.

// Solicitação da função.

Retorno = Cesna->IDcodeObtemNumAbastOff(Mab);

if(Retorno != 1)// Testa retorno da função, se diferente de 1 erro, se igual a 1 OK.

{

// Rotina para tratamento de erro.

return;

}

// Executa a próxima ação.

// O retorno com as informações solicitadas por esse comando vem através da função do

// objeto ActiveX6 OnIDcodeNumAbastOff que será descrita mais à frente.

Atenção: Função não implementada no software Simulador de Bombas IDcode.

2.2.12 IDcodeObtemPrecoPorLitro

Esta função é utilizada quando se deseja obter o Preço por Litro do combustível

vendido no referido Bico (bi) de determinada Bomba Lógica (bo). Por exemplo, para conferir se

os valores de preço das bombas da pista estão iguais ao do sistema. Exemplo:

unsigned char Mab = 0x01; // Var com o número da MAB da Solicitação

unsigned char Bomba = 0x01; // Var com o número da bomba desejada

unsigned char Bico = 0x01; // Var com o número do bico desejado

long Retorno = 0; // Recebe o retorno da função para testar se OK ou não

// Solicitação da função.

Retorno = Cesna->IDcodeObtemPrecoPorLitro(Mab, Bomba, Bico);

if(Retorno != 1)// Testa retorno da função, se diferente de 1 erro, se igual a 1 OK.

{

// Rotina para tratamento de erro.

return;

}

// Executa a próxima ação.

// O retorno com as informações solicitadas por esse comando vem através da função do

// objeto ActiveX7 OnIDcodePrecoPorLitro que será descrita mais à frente.

6 - OnIDcodeNumAbastOff. 7 - OnIDcodePrecoPorLitro.

Cesna Technology | 2013

2.2.13 IDcodeObtemStatusBomba

Esta função pode ser utilizada quando se deseja obter o status atual de uma bomba ou

de todas as bombas conectadas a referida placa MAB. Se o parâmetro Bomba (bo) for enviado

como zero, o Concentrador IDcode enviará o status de todas as bombas configuradas pelo

último envio do comando “IDcodeConfiguraMab”. O retorno desta solicitação virá pelo retorno

do método “OnIDcodeMudancaDeEstado”.

Obs.: Está função é única que aceita o parâmetro bomba como zero “0x00”, se este número

for enviado em qualquer outra função esta mesma retornará erro.

unsigned char Mab = 0x01;// Var com o número da MAB da Solicitação

unsigned char Bomba = 0x01;// Var com o número da bomba desejada

long Retorno = 0; // Recebe o retorno da função para testar se OK ou não.

// Solicitação da função. Se bomba for ‘0x00’, será enviado status de todas as bombas

Retorno = Cesna->IDcodeObtemStatusBomba(Mab, Bomba);

if(Retorno != 1)// Testa retorno da função, se diferente de 1 erro, se igual a 1 OK.

{

// Rotina para tratamento de erro.

return;

}

// Executa a próxima ação.

2.2.14 IDcodeObtemTotalizador

Esta função é utilizada quando se deseja obter o totalizador (encerrante) da referida

Bomba Lógica (bo) e Bico (bi). Cada Bico tem o seu totalizador correspondente à quantidade

de volume medido por ele. Exemplo:

Cesna Technology | 2013

unsigned char Mab = 0x01; // Var com o número da MAB da Solicitação

unsigned char Bomba = 0x01; // Var com o número da bomba desejada.

unsigned char Bico = 0x01; // Var com o número do bico desejado.

long Retorno = 0; // Retorno da função para testar se OK ou não.

// Solicitação da função.

Retorno = Cesna->IDcodeObtemTotalizador(Mab, Bomba, Bico);

if(Retorno != 1)// Testa retorno da função, se diferente de 1 erro, se igual a 1 OK.

{

// Rotina para tratamento de erro.

return;

}

// Executa a próxima ação.

// O retorno com as informações solicitadas por esse comando vem através da função do

// objeto ActiveX8 OnIDcodeTotalizador que será descrita mais à frente.

2.2.15 IDcodeObtemUltimoVolume

Esta função é utilizada quando se deseja obter o último volume abastecido da referida

bomba e bico. Exemplo:

unsigned char Mab = 0x01; // Var com o número da MAB da Solicitação

unsigned char Bomba = 0x01; // Var com o número da bomba desejada.

unsigned char Bico = 0x01; // Var com o número do bico desejado.

long Retorno = 0; // Retorno da função para testar se OK ou não.

// Solicitação da função.

Retorno = Cesna->IDcodeObtemUltimoVolume(Mab, Bomba, Bico);

if(Retorno != 1)// Testa retorno da função, se diferente de 1 erro, se igual a 1 OK.

{

// Rotina para tratamento de erro.

return;

}

// Executa a próxima ação.

// O retorno com as informações solicitadas por esse comando vem através da função do

// objeto ActiveX9 OnIDcodeVolume que será descrita mais à frente.

2.2.16 IDcodeProcuraTag

Função de uso interno da Cesna Technology.

Atenção: Função não implementada no software Simulador de Bombas IDcode.

8 - OnIDcodeTotalizador. 9 - OnIDcodeVolume.

Cesna Technology | 2013

2.2.17 IDcodeSalvaTag

Função de uso interno da Cesna Technology.

Atenção: Função não implementada no software Simulador de Bombas IDcode.

2.2.18 IDcodeSetaPrePago

Esta função é utilizada quando se deseja programar um abastecimento na Bomba (bo)

e Bico (bi) correspondente, programando o volume deste abastecimento. Após o envio deste

comando a Bomba entra em modo reservada para este abastecimento programado, enquanto

o mesmo não for efetuado ficará em modo de espera. Para cancelar esta operação basta

retirar o bico do suporte esperar a bomba ligar e retornar o bico novamente. Não deverá ser

ultrapassado o volume máximo10 permitido por abastecimento da Bomba, isso pode variar de

acordo com o fabricante.

Esse comando só será aceito para os modos de operação A e B.

Exemplo:

// Enviar para a bomba o Volume em Litros: 10,000 -> 10 litros.

unsigned char Mab = 0x01; // Var com o número da MAB da Solicitação

unsigned char Bomba = 0x01; // Var com o número da bomba desejada

unsigned char Bico = 0x01; // Var com o número do bico desejado

unsigned char VolumeCasaDecimal= 0x03; // Var com o número de casas decimais

long Volume = 10000; // Var com o Volume desejado sem virgula.

long retorno = 0; // Recebe o retorno da função para testar se OK.

// Solicitação da função.

Retorno = Cesna->IDcodeSetaPrePago(Mab, Bomba, Bico, Volume, VolumeCasaDecimal);

if(Retorno != 1)// Testa retorno da função, se diferente de 1 erro, se igual a 1 OK.

{

// Rotina para tratamento de erro.

return;

}

// Executa a próxima ação.

10 - Particularidades das Bombas.

Cesna Technology | 2013

2.2.19 IDcodeTestaTag

Função de uso interno da Cesna Technology.

Atenção: Função não implementada no software Simulador de Bombas IDcode.

2.2.20 IDcodeTrocaPrecoPorLitro

Esta função é utilizada quando se deseja trocar o Preço por Litro do combustível

vendido no referido Bico (bi) de determinada Bomba Lógica (bo). Nesta função devemos

informar como parâmetro o R$ do Preço sem vírgula, e também o número de casas decimais

do Preço. Exemplo:

// Enviar para a bomba o Preço em R$: 2,290

unsigned char Mab = 0x01; // Var com o número da MAB da Solicitação

unsigned char Bomba = 0x01; // Var com o número da bomba desejada.

unsigned char Bico = 0x01; // Var com o número do bico desejado.

unsigned char PrecoPorLitroCasaDecimal = 0x03; // Var com o número de casas decimais.

long PrecoPorLitro = 2290; // Var com o Preço desejado sem virgula.

long Retorno = 0; // Recebe o retorno da função para testar se OK ou não.

// Solicitação da função.

Retorno = Cesna->IDcodeTrocaPrecoPorLitro(Mab, Bomba, Bico, PrecoPorLitro,

PrecoPorLitroCasaDecimal);

if(Retorno != 1)// Testa retorno da função, se diferente de 1 erro, se igual a 1 OK.

{

// Rotina para tratamento de erro.

return;

}

// Executa a próxima ação.

2.2.21 IDcodeVersaoDLL

Esta função é utilizada quando se deseja saber a versão da IDcode.dll. Como mostrado

no exemplo abaixo, está função não precisa de parâmetros, pois só existirá uma IDcode.dll

interagindo com o Software Integrador. O retorno desta função é a versão da Dll, sendo essa a

única função IDcode que em caso de sucesso deverá retornar um valor diferente de 1 (um).

Exemplo:

Cesna Technology | 2013

long Versao = 0; // Obtém retorno da função

// Solicitação da função.

Versao = Cesna->IDcodeVersaoDll(); // O retorno da função é a versão da Dll

// Executa a próxima ação.

2.2.22 IDcodeClose

Finaliza a conexão estabelecida através da função “IDcodeOpen”, também libera todos

os recursos utilizados pela IDcode.dll.

Se a Bomba de combustível estiver com um abastecimento em curso no momento da

execução desta função, o mesmo será armazenado em memória para ser enviado ao

computador posteriormente, quando uma nova conexão for estabelecida.

Este comando, depois de solicitado, encerrará a comunicação com a Master IDcode

USB com conexão estabelecida com o Software Integrador.

Esta função não necessita parâmetros. Exemplo:

//Solicitação da função.

//Obs.: Esta função não retorna dados.

Cesna->IDcodeClose();

Cesna Technology | 2013

2.3 Retorno dos Métodos do Objeto ActiveX

Atenção: Deve-se atentar para não executar rotinas muito longas após o recebimento

dos dados da CesnaActiveX.dll via o objeto ActiveX. Pois se isso ocorrer o processo em

execução na IDcode.dll ficará aguardando o retorno da confirmação do recebimento ou não da

mensagem enviada ao objeto ActiveX. Com isso não irá gerar um novo pedido de Status ao

Concentrador IDcode, podendo este entrar em modo de operação off-Line e o Software

Integrador não receber os status das bombas em tempo real. Os dados recebidos deverão ser

processados e salvos em um banco de dados, por exemplo, e gerar um sinalizador para o

processo do programa principal, indicando que existem novos dados armazenados em seu

banco de dados, podendo ser utilizado um objeto timer para este fim. Logo que os dados são

armazenados habilita-se o timer para trabalhar com um novo processo e retorna a função do

objeto ActiveX.

Obs.: Ao Fazer a importação do componente ActiveX na IDE Embarcadero® C++ pode

haver uma divergência entre o nome dos parâmetros das funções de retorno e os nomes

previamente definidos para tais parâmetros. Por exemplo, a função “OnIDcodePrecoPorLitro”,

que retorna a solicitação do preço por litro de uma determinada bomba e bico, tem por

padrão os seguintes parâmetros: Mab, Bo, Bi, Ppl, PplCd.

Eventualmente esses parâmetros poderão estar como nomes diferentes. Caso essa

divergência seja notada sugerimos que os nomes dos parâmetros sejam alterados

manualmente para evitar possíveis conflitos de entendimento.

A relação de funções de retorno e seus devidos parâmetros estão contidos no

Apêndice C.

2.3.1 OnIDcodeAbasteceu

Este retorno do método foi criado para atender as exigências do PAF-ECF, que solicita

ao Concentrador IDcode que envie nos dados do abastecimento efetuado por alguma bomba

de combustível a ele conectada, o número da Bomba, Bico, Volume, Totalizador de Volume

Inicial (Encerrante Inicial), Totalizador de Volume Final (Encerrante Final), Preço por Litro, Hora

Cesna Technology | 2013

e Data deste abastecimento. Além dessas informações o “OnIDcodeAbasteceu” também

enviará os valores das tags do frentista que autorizou o abastecimento, e do cliente que

eventualmente também possua um cartão do posto, e flag do abastecimento que indicará se o

abastecimento é on-line ou off-line, e o número do abastecimento que poderá ser utilizado

posteriormente para recuperar os dados do abastecimento da flash da MAB através da função

IDcodeObtemAbastFlash.

A tag do frentista sempre será a tag que liberará o abastecimento. Para que a MAB

registre as tags do frentista e do cliente para o abastecimento é preciso que a tag do cliente

seja utilizada primeiro, dessa forma a MAB guardará o valor dessa tag e liberará o

abastecimento quando a tag do frentista for utilizada. Caso a tag do frentista seja usada antes

da tag do cliente, essa última não será guardada, pois o abastecimento já estará liberado.

O PAF-ECF também solicita que a automação de bombas envie o tipo de combustível

do referido bico. Informamos que o hardware de automação de bombas de combustível não

deverá fornecer dados que a bomba eletrônica não envia em seu protocolo de comunicação,

segundo exigências do INMETRO. Logo a Cesna Technology decidiu não implementar este

parâmetro do tipo de combustível.

O retorno das tags do método “OnIDcodeAbasteceu”, é acionado quando o modo de

operação configurado no Concentrador IDcode pelo comando IDcodeConfiguraMab, for “C”.

Isso indica que a referida Bomba (bo) e Bico (bi) conectada à MAB, finalizou um abastecimento

e o mesmo está sendo enviado ao Software Integrador para tratamento dos dados deste

abastecimento. Este comando virá depois que a referida Bomba enviar o estado

“BOMBA_ABASTECEU”.

A função deste método é fazer o software integrador receber os dados dos

abastecimentos efetuados independentemente se este abastecimento é on-line ou off-line, ou

seja, abastecimentos efetuados com o Concentrador IDcode comunicando com o PC ou não.

Para identificar se o abastecimento é on-line ou off-line o parâmetro “FlagAbastecimentoOff”

deverá ser observado. Se a “FlagAbastecimentoOff” for 0 (zero) o abastecimento é on-line, se

for 1 (um) se trata de um abastecimento off-line.

Exemplo de como obter os dados formatados:

Cesna Technology | 2013

unsigned char TmpVol[7] = {'NULL'}; // Recebe o volume de long para char.

char RespVol[7] = {'NULL'}; // Auxiliar para conter o volume separado.

unsigned char TmpTotIni[10] = {'NULL'}; // Recebe o total de long para char.

char RespTotIni[10] ={'NULL'}; // Aux para conter o totalizador separado.

unsigned char TmpTotFinal[10]= {'NULL'}; // Recebe o total de long para char.

char RespTotFinal[10]= {'NULL'}; // Aux para conter o totalizador separado.

unsigned char TmpPpl[10] = {'NULL'}; // Recebe o preço de long em char.

char RespPpl[10] = {'NULL'}; // Auxiliar para receber o preço com vírgula.

unsigned char TmpHora[6] = {'NULL'}; // Recebe a hora de long para char.

char RespHora[8] = {'0','0',':','0','0',':','0','0','\0'}; // resposta.

unsigned char TmpData[6] = {'NULL'};// Recebe a data de long para char.

char RespData[8] = {'0','0','/','0','0','/','0','0','\0'}; // resposta.

int count = 0;// Contador auxiliar

int index = 0;// Contador auxiliar 2

//--------------------------------- Volume --------------------------------------------

ltoa(Volume,TmpVol,10);

strcpy(RespVol,TmpVol);

switch(VolumeCasaDecimal)

{

case 0:

// sem casa decimal, ou seja, sem vírgula.

break;

case 1:

RespVol[strlen(TmpVol) - 1] = ',';

RespVol[strlen(TmpVol)] = TmpVol[strlen(TmpVol) - 1];

break;

case 2:

RespVol[strlen(TmpVol) - 2] = ',';

RespVol[strlen(TmpVol)-1] = TmpVol[strlen(TmpVol) - 2];

RespVol[strlen(TmpVol)] = TmpVol[strlen(TmpVol) - 1];

break;

case 3:

RespVol[strlen(TmpVol) - 3] = ',';

RespVol[strlen(TmpVol)-2] = TmpVol[strlen(TmpVol) - 3];

RespVol[strlen(TmpVol)-1] = TmpVol[strlen(TmpVol) - 2];

RespVol[strlen(TmpVol)] = TmpVol[strlen(TmpVol) - 1];

break;

}

//----------------------------- Totalizador Inicial ------------------------------------

ltoa(TotalInicial,TmpTotIni,10);

strcpy(RespTotIni,TmpTotIni);

switch(TotalInicialCasaDecimal)

{

case 0:

// sem casa decimal, ou seja, sem vírgula.

break;

case 1:

RespTotIni[strlen(TmpTotIni)-1]= ',';

RespTotIni[strlen(TmpTotIni)]= TmpTotIni[strlen(TmpTotIni) - 1];

break;

case 2:

RespTotIni[strlen(TmpTotIni)-2]= ',';

RespTotIni[strlen(TmpTotIni)-1]= TmpTotIni[strlen(TmpTotIni) - 2];

RespTotIni[strlen(TmpTotIni)] = TmpTotIni[strlen(TmpTotIni) - 1];

break;

case 3:

RespTotIni[strlen(TmpTotIni)-3]= ',';

RespTotIni[strlen(TmpTotIni)-2]= TmpTotIni[strlen(TmpTotIni) - 3];

RespTotIni[strlen(TmpTotIni)-1]= TmpTotIni[strlen(TmpTotIni) - 2];

RespTotIni[strlen(TmpTotIni)]= TmpTotIni[strlen(TmpTotIni) - 1];

break;

}

Cesna Technology | 2013

//----------------------------- Totalizador Final --------------------------------------

ltoa(TotalFinal,TmpTotFim,10);

strcpy(RespTotFim,TmpTotFim);

switch(TotalFinalCasaDecimal)

{

case 0:

// sem casa decimal, ou seja, sem vírgula.

break;

case 1:

RespTotFim[strlen(TmpTotFim)-1]= ',';

RespTotFim[strlen(TmpTotFim)]= TmpTotIni[strlen(TmpTotFim) - 1];

break;

case 2:

RespTotFim[strlen(TmpTotFim)-2]= ',';

RespTotFim[strlen(TmpTotFim)-1]= TmpTotFim[strlen(TmpTotFim) - 2];

RespTotFim[strlen(TmpTotFim)] = TmpTotFim[strlen(TmpTotFim) - 1];

break;

case 3:

RespTotFim[strlen(TmpTotFim)-3]= ',';

RespTotFim[strlen(TmpTotFim)-2]= TmpTotFim[strlen(TmpTotFim) - 3];

RespTotFim[strlen(TmpTotFim)-1]= TmpTotFim[strlen(TmpTotFim) - 2];

RespTotFim[strlen(TmpTotFim)] = TmpTotFim[strlen(TmpTotFim) - 1];

break;

}

//--------------------------- Preço Por Litro ------------------------------------------

ltoa(PrecoPorLitro,TmpPpl,10);

strcpy(RespPpl,TmpPpl);

switch(PrecoPorLitroCasaDecimal)

{

case 0:

// sem casa decimal, ou seja, sem vírgula.

break;

case 1:

RespPpl[strlen(TmpPpl) - 1] = ',';

RespPpl[strlen(TmpPpl)] = TmpPpl[strlen(TmpPpl) - 1];

break;

case 2:

RespPpl[strlen(TmpPpl)-2] = ',';

RespPpl[strlen(TmpPpl)-1] = TmpPpl[strlen(TmpPpl) - 2];

RespPpl[strlen(TmpPpl)] = TmpPpl[strlen(TmpPpl) - 1];

break;

case 3:

RespPpl[strlen(TmpPpl)-3] = ',';

RespPpl[strlen(TmpPpl)-2] = TmpPpl[strlen(TmpPpl) - 3];

RespPpl[strlen(TmpPpl)-1] = TmpPpl[strlen(TmpPpl) - 2];

RespPpl[strlen(TmpPpl)] = TmpPpl[strlen(TmpPpl) - 1];

break;

}

//------------------------------- Hora -------------------------------------------------

ltoa(Hora,TmpHora,10);

for(count=(strlen(TmpHora)-1),index = 7;count>=0;count--,index--)

{

if(RespHora[index] != ':')

RespHora[index] = TmpHora[count];

else

RespHora[--index] = TmpHora[count];

}

//------------------------------ Data --------------------------------------------------

ltoa(Data,TmpData,10);

for(count=(strlen(TmpData)-1),index = 7;count>=0;count--,index--)

{

if(RespData[index] != '/')

RespData[index] = TmpData[count];

else

RespData[--index] = TmpData[count];

}

// Neste ponto temos os dados recebidos formatados para salvar as informações e retornar

// a função.

Cesna Technology | 2013

2.3.2 OnIDcodeRetornoAbastFlash

Quando acionado o comando IDcodeObtemAbastFlash esta função retorna os dados

do abastecimento salvo na flash da MAB referentes ao número indicado. Quando a flash da

MAB atingir o limite máximo de memória para guardar dados dos abastecimentos, que é de

301 abastecimentos, esta começará a sobre escrever os abastecimentos a partir do primeiro.

A forma de separação dos dados poderá ser feita exatamente da mesma forma que foi

descrita do item anterior, OnIDcodeAbasteceu, tendo em vista que os dados retornados são os

mesmo, somente são retornados em funções diferentes para evitar que se confunda os

abastecimentos consultados na flash da MAB com novos abastecimentos.

Atenção: Função não implementada no software Simulador de Bombas IDcode.

2.3.3 OnIDcodeMudancaDeEstado

Indica o último estado em que a referida Bomba (bo) e Bico (Bi), conectadas à MAB,

encontra-se. Podem ser utilizados para controlar algum tipo de animação no ícone da tela do

PC para o caixa, para informar se a Bomba está abastecendo, pronta para executar uma ação

ou com erro. Os retornos possíveis são:

2.3.3.1 BOMBA_PRONTA

Indica que a referida Bomba (bo), conectada à MAB, está pronta para efetuar qualquer

operação a ela solicitada, dentro das disponíveis.

2.3.3.2 BOMBA_NAO_RESPONDE

Indica que ocorreu um problema de comunicação com a referida Bomba (bo),

conectada à MAB.

Cesna Technology | 2013

2.3.3.3 BOMBA_PEDE_AUTORIZACAO

Indica que a referida Bomba (bo) conectada à MAB está pedindo autorização para

iniciar um abastecimento quando estiver operando em Modo B. A autorização da bomba

deverá ser enviada via software através do comando IDcodeAutorizaAbastecimento. Quando a

bomba estiver operando em Modo C, o comando de autorização via software será ignorado,

sendo a bomba liberada somente através do cartão do frentista. Após o comando de

autorização ser enviado a bomba informará os estados até iniciar o abastecimento, ou seja, até

o combustível ser liberado pelo bico da bomba.

2.3.3.4 BOMBA_AGUARDANDO_CARTAO

Indica que a referida Bomba (bo) conectada à MAB está pedindo autorização por

cartão para iniciar um abastecimento quando estiver operando em Modo C. Para liberar a

bomba o frentista deverá utilizar um cartão contendo uma tag válida, que esteja gravada na

MAB, após isso a bomba informará os estados até iniciar o abastecimento, ou seja, até o

combustível ser liberado pelo bico da bomba.

2.3.3.5 BOMBA_LIBERADA_PARA_ABASTECER

Indica que a Bomba (bo) está pronta para iniciar um abastecimento.

2.3.3.6 BOMBA_ABASTECENDO

Indica que a Bomba (bo) está abastecendo no momento, ou seja, está liberando o

combustível pelo bico ou o mesmo está fora da posição.

Existem bombas de determinadas marcas que não respondem a algumas solicitações11

neste modo.

11 - Particularidades das Bombas Gilbarco.

Cesna Technology | 2013

2.3.3.7 BOMBA_ABASTECEU

Indica que a referida Bomba (bo) e Bico (bico) conectadas à MAB finalizou o

abastecimento. Os dados do abastecimento serão obtido na função OnIDcodeAbasteceu do

objeto ActiveX, descrito anteriormente.

2.3.3.8 BOMBA_BLOQUEADA

Indica que a referida Bomba (bo) conectada à MAB está em modo de bloqueio para o

abastecimento em curso ou não inicia um novo abastecimento.

2.3.3.9 BOMBA_DESBLOQUEADA

Indica que a referida Bomba (bo) conectada à MAB saiu do modo bloqueio.

2.3.3.10 BOMBA_TROCOU_PRECO_POR_LITRO

Indica que a referida Bomba (bo) e Bico (bi) conectada à MAB aceitou a novo valor de

Preço por Litro enviado pela função “IDcodeTrocaPrecoPorLitro”.

2.3.3.11 BOMBA_RESERVADA_PRE_PAGO

Indica que a referida Bomba (bo) e Bico (bi) conectada à MAB recebeu com sucesso a

solicitação da função “IDcodeSetaPrePago” descrita anteriormente. Lembrando que este

comando só será aceito nos modos de operação A e B.

2.3.3.12 BOMBA_INFORMOU_FALHA

Indica que ocorreu um erro indefinido com a bomba.

Cesna Technology | 2013

2.3.3.13 RETORNO_ABAST_FLASH

Indica que a MAB enviou os dados do abastecimento solicitado pela função

IDcodeObtemAbastFlash salvos na flash.

2.3.4 OnIDcodeTotalizador

É acionado em resposta há solicitação da função “IDcodeObtemTotalizador”, e através

deste retorno é possível obter o valor do totalizador de volume da referida Bomba (bo) e Bico

(bi) conectada à MAB.

É comum utilizar esta função em fechamento de turno ou caixa, do PDV do posto de

combustível. Porém só devemos solicitar o próximo totalizador após a chegada do solicitado

anteriormente ou por um timeout de 5 segundos.

INÍCIOFunção Obtem Totalizadores

Carrega EndereçosMab = x

Bo = yBi = z

Limpa FlagTotalizador.e

IDcodeObtemTotalizador(Mab,Bo,Bi);

Solicitação retornou OK?

SE FALSOIncrementa

contador de erroF

Número de Erros > 3

SE FALSOTenta solicitar novamente.

F

SE VERDADEIRODefine novos endereços e

executa a solicitação.

V

SE VERDADEIROZera tempo de

Espera e contador de Erro.

V

TempoEspera < 5s

SE VERDADEIROFlagTotalizador OK?

V

SE FALSOAtualiza tempo de

espera.F

F

SE VERDADEIROExistem mais endereços?

V

SE FALSOFIM

F

V

Figura 1 - Fluxograma de Solicitação de Totalizadores.

Cesna Technology | 2013

Onde:

FlagTotalizador: Pode ser utilizada como um indicador de que recebeu o totalizador na

função “OnIDcodeTotalizador”, esta deverá ser declarada e controlada de acordo com a

necessidade do Software Integrador. Ela não está inclusa nas funções do Objeto ActiveX.

Exemplo de separação dos dados desta função:

unsigned char FlagTotalizador = 0; // Var global de indicador.

//------------------------------Função do Objeto Activex ------------------------------

void __fastcall TFrmMain::OnIDcodeTotalizador(TObject *Sender, unsigned_char Mab,

unsigned_char Bomba, unsigned_char Bico, long Totalizador, unsigned_char

TotalizadorCasaDecimal)

{

char TmpTotal[10] = {'NULL'};// Var Auxiliar para receber o total de long para char.

char RespTotal[10] = {'NULL'};// Var auxiliar para conter o totalizador separado.

ltoa(Totalizador,TmpTotal,10);// ltoa -> Converte de ‘long’ para ‘char’

strcpy(RespTotal,TmpTotal);

switch(TotalizadorCasaDecimal)

{

case 0:

// sem casa decimal, ou seja, sem vírgula.

break;

case 1:

RespTotal[strlen(TmpTotal)-1] = ',';

RespTotal[strlen(TmpTotal)] = TmpTotal[strlen(TmpTotal) - 1];

break;

case 2:

RespTotal[strlen(TmpTotal)-2] = ',';

RespTotal[strlen(TmpTotal)-1] = TmpTotal[strlen(TmpTotal) - 2];

RespTotal[strlen(TmpTotal)] = TmpTotal[strlen(TmpTotal) - 1];

break;

case 3:

RespTotal[strlen(TmpTotal)-3] = ',';

RespTotal[strlen(TmpTotal)-2] = TmpTotal[strlen(TmpTotal) - 3];

RespTotal[strlen(TmpTotal)-1] = TmpTotal[strlen(TmpTotal) - 2];

RespTotal[strlen(TmpTotal)] = TmpTotal[strlen(TmpTotal) - 1];

break;

}

FlagTotalizador = 1; // Var indicadora de Recebimento dos dados.

// Após o recebimento setamos a ‘FlagTotalizador’ indicando para a função que solicitou

// o Total, que os dados foram recebidos. E assim solicitar o próximo ou finalizar.

// Neste ponto vamos ter o dados recebidos já separados e com vírgula na Var RespTotal.

// Ex.: 123456,78 Litros com Cd igual a 2.

}

Devemos atentar que é importante receber uma solicitação de totalizador, ou

aguardar o tempo máximo de resposta antes de efetuar a próxima solicitação. Se isso não for

respeitado, corre-se o risco de sobrescrever a solicitação na MAB. Com isso a solicitação de

totalizadores muitas vezes ficará incompleta, dificultando o fechamento de caixa ou turno do

PDV.

Cesna Technology | 2013

Quando o fechamento de caixa ou turno for realizado, se as bombas estiverem com

status PRONTA, o processo será mais rápido. Algumas Bombas12 não respondem quando estão

com status ABASTECENDO, sendo assim pode demorar a obter todos os totalizadores.

2.3.5 OnIDcodeVolume

É acionado em resposta há solicitação da função “IDcodeObtemUltimoVolume”, com

este retorno é possível obter o último volume vendido na referida Bomba (bo), conectada à

MAB.

Exemplo de separação dos dados desta função:

//------------------------------Função do Objeto Activex ------------------------------

void __fastcall TFmrMain::OnIDcodeVolume(TObject *Sender, unsigned_char Mab,

unsigned_char Bomba, unsigned_char Biic, long Volume, unsigned_char VolumeCasaDecimal)

{

unsigned char TmpVol[7]= {'NULL'};// Auxiliar para receber o volume de long para char.

char RespVol[7] = {'NULL'};// Auxiliar para conter o volume separado.

ltoa(Volume,TmpVol,10);

strcpy(RespVol,TmpVol);

switch(VolumeCasaDecimal)

{

case 0:

// sem casa decimal, ou seja, sem vírgula.

break;

case 1:

RespVol[strlen(TmpVol) - 1] = ',';

RespVol[strlen(TmpVol)] = TmpVol[strlen(TmpVol) - 1];

break;

case 2:

RespVol[strlen(TmpVol) - 2] = ',';

RespVol[strlen(TmpVol)-1] = TmpVol[strlen(TmpVol) - 2];

RespVol[strlen(TmpVol)] = TmpVol[strlen(TmpVol) - 1];

break;

case 3:

RespVol[strlen(TmpVol) - 3] = ',';

RespVol[strlen(TmpVol)-2] = TmpVol[strlen(TmpVol) - 3];

RespVol[strlen(TmpVol)-1] = TmpVol[strlen(TmpVol) - 2];

RespVol[strlen(TmpVol)] = TmpVol[strlen(TmpVol) - 1];

break;

}

// Neste ponto teremos os dados recebidos já separados e com vírgula na variável RespVol

// Ex.: 999,999 Litros com Cd igual a 3.

}

12 - OBSERVAÇÕES DAS BOMBAS DE COMBUSTÍVEL.

Cesna Technology | 2013

2.3.6 OnIDcodePrecoPorLitro

É acionado em resposta há solicitação da função “IDcodePrecoPorLitro”, com este

retorno é possível conferir se o Preço por Litro das Bombas (bo) e Bicos (bi) conectados à MAB

estão com o mesmo valor em R$ cadastrado nos sistema. Ou ainda conferir se a Bomba

realmente alterou o preço após uma solicitação da função “IDcodeTrocaPrecoPorLitro”.

INÍCIOAltera Preço

Carrega EndereçosMab = XBo = YBi = Z

Preco = xxxxCd = 3

Zera contador de erro

IDcodeTrocaPrecoPorLitro(Mab,Bo,Bi,Preco,Cd);

Solicitação retornou OK?

SE FALSOIncrementa

contador de erroF

Número de Erros > 3

SE FALSOTenta solicitar novamente.

F

SE VERDADEIRODefine novos endereços e

executa a solicitação.

V

SE VERDADEIROZera tempo de

Espera e

Contador de Erro.

TempoEspera < 5s

SE VERDADEIROFlagPreco OK?

V

SE FALSOAtualiza tempo de

espera.F

SE VERDADEIROExistem mais endereços?

SE FALSOFIM

F

SE VERDADEIROLimpa FlagPreco

EIDcodeObtemPrecoPorLitro(Mab,Bo,Bi);

V

Solicitação retornou OK?

V

F

SE VERDADEIROPreco Obtido é igual no

sistema?V

F

F

V

V

Figura 2 - Fluxograma Alteração e Conferência de Preço por Litro

Cesna Technology | 2013

Exemplo de separação dos dados desta função:

unsigned char FlagPreco;// Var global para indicador

//--------------------------- Função do Objeto ActiveX ---------------------------------

void __fastcall TFmrMain::OnIDcodePrecoPorLitro(TObject *Sender, unsigned_char Mab,

unsigned_char Bomba, unsigned_char Bico, long PrecoPorLitro, unsigned_char

PrecoPorLitroCasaDecimal)

{

unsigned char TmpPpl[5] = {'NULL'};// Auxiliar para receber o preço de long em char

char RespPpl[5] = {'NULL'};// Auxiliar para receber o preço com vírgula.

ltoa(PrecoPorLitro,TmpPpl,10); // conversão long para char

strcpy(RespPpl,TmpPpl); // copia string

switch(PrecoPorLitroCasaDecimal)

{

case 0:

// sem casa decimal, ou seja, sem vírgula.

break;

case 1:

RespPpl[strlen(TmpPpl) - 1] = ',';

RespPpl[strlen(TmpPpl)] = TmpPpl[strlen(TmpPpl) - 1];

break;

case 2:

RespPpl[strlen(TmpPpl)-2] = ',';

RespPpl[strlen(TmpPpl)-1] = TmpPpl[strlen(TmpPpl) - 2];

RespPpl[strlen(TmpPpl)] = TmpPpl[strlen(TmpPpl) - 1];

break;

case 3:

RespPpl[strlen(TmpPpl)-3] = ',';

RespPpl[strlen(TmpPpl)-2] = TmpPpl[strlen(TmpPpl) - 3];

RespPpl[strlen(TmpPpl)-1] = TmpPpl[strlen(TmpPpl) - 2];

RespPpl[strlen(TmpPpl)] = TmpPpl[strlen(TmpPpl) - 1];

break;

}

FlagPreco = 1;// Var indicadora de recebimentos dos dados.

// Após o recebimento dos dados setamos a ‘FlagPreco’ indicando que o os dados foram

// recebidos. E assim solicitar o próximo ou finalizar.

// Neste ponto teremos os dados recebidos já separados com vírgula na variável RespPpl.

// Ex.: R$ 1,234 com Cd igual a 3.

}

Devemos atentar para as mesmas observações já citadas na função

“OnIDcodeTotalizador” a respeito de primeiro receber um valor antes de solicitar o próximo,

ou aguardar o timeout de 5 segundos.

Cesna Technology | 2013

2.3.7 OnIDcodeConfigMab

É acionado como resposta ao comando “IDcodeObtemConfiguracaoMab” e retorna os

dados MAB, número de bombas configuradas para a MAB, modo de operação e o tipo de

bomba configurada. Os tipos de bomba podem ser consultados no Apêndice B.

2.3.8 OnIDcodeErroCrc

É acionado quando é feita uma atualização na tabela de tags da MAB e ocorre um erro

de divergência no CRC. As bombas continuaram ativas, mas irão ficar informando o erro no

CRC até que a MAB seja atualizada. Esse erro somente deverá ocorrer no processo de

atualização da tabela de Tags das MABs, processo esse que deverá ser realizado pelo suporte

da Cesna Technology.

Atenção: Função não implementada no software Simulador de Bombas IDcode.

2.3.9 OnIDcodeInfoEvento

Indica eventuais inconformidades na execução da rotina de funcionamento do

Concentrador IDcode. Função utilizada somente pela Cesna Technology.

2.3.10 OnIDcodeNumAbastOff

Acionado como retorno da função “IDcodeObtemNumAbastOff”, retorna o número de

abastecimentos que foram realizados enquanto o Concentrador IDcode não estava

comunicando com o software integrador, ou seja, o número de abastecimentos off-line.

Atenção: Função não implementada no software Simulador de Bombas IDcode.

Cesna Technology | 2013

2.3.11 OnIDcodeValorBombaAbast

Durante o abastecimento este método é retornado automaticamente informando o

valor parcial do abastecimento. Os valores retornados são a MAB, a bomba, o bico, o valor

parcial do abastecimento e o número de casas decimais.

Exemplo de separação dos dados desta função:

//------------------------------Função do Objeto Activex ------------------------------

void __fastcall TFmrMain::OnIDcodeValorBombaAbast(TObject *Sender, unsigned_char

Mab,unsigned_char Bomba, unsigned_char Bico, long Valor, unsigned_char ValorCasaDecimal)

{

unsigned char TmpVal[7]= {'NULL'};// Auxiliar para receber o valore de long para char.

char RespVal[7] = {'NULL'};// Auxiliar para conter o valor separado.

ltoa(Valor,TmpVal,10);

strcpy(RespVal,TmpVal);

switch(ValorCasaDecimal)

{

case 0:

// sem casa decimal, ou seja, sem vírgula.

break;

case 1:

RespVal[strlen(TmpVal) - 1] = ',';

RespVal[strlen(TmpVal)] = TmpVol[strlen(TmpVal) - 1];

break;

case 2:

RespVol[strlen(TmpVal) - 2] = ',';

RespVol[strlen(TmpVal)-1] = TmpVol[strlen(TmpVal) - 2];

RespVol[strlen(TmpVal)] = TmpVol[strlen(TmpVal) - 1];

break;

case 3:

RespVal[strlen(TmpVal) - 3] = ',';

RespVal[strlen(TmpVal)-2] = TmpVal[strlen(TmpVal) - 3];

RespVal[strlen(TmpVal)-1] = TmpVal[strlen(TmpVal) - 2];

RespVal[strlen(TmpVal)] = TmpVal[strlen(TmpVal) - 1];

break;

}

// Neste ponto teremos os dados recebidos já separados e com vírgula na variável RespVal

// Ex.: 10,999 reais com Cd igual a 3.

}

Atenção: Função não implementada no software Simulador de Bombas IDcode.

Cesna Technology | 2013

3 DESCRIÇÃO IDCODE.DLL

O arquivo IDcode.dll, foi desenvolvido para controlar, analisar e conferir os dados da

placa Master IDcode USB recebidos da placa MAB, e também corrigir alguns erros no

funcionamento do hardware que possam ocorrer. O software Gerenciador Devcon é utilizado

como software auxiliar de correção de eventuais erros de comunicação entre o controlador

USB e a placa MAB. Este é instalado junto com o Gerenciador IDcode em versões do Windows

superior ao Vista, pois com a adição do UAC da Microsoft é necessário iniciar o software com

elevação para poder interagir o controlador USB da placa mãe do PC.

O software Gerenciador Devcon, comunica-se com a IDcode.dll via objeto Socket,

utilizando como padrão a porta “20000”, não sendo possível alterar este parâmetro. Logo que

o mesmo é definido em momento de compilação na IDcode.dll. Evitamos gerar arquivos de

entrada para configuração da DLL para evitar erros de leitura, etc.

Informamos que esta DLL pode ser alterada ou atualizada sem a necessidade de aviso

ao Software Integrador, pois os padrões já conhecidos de integração não serão alterados. Estas

modificações podem ser feitas de acordo com as necessidades ou melhorias do processo.

Relembramos que não é possível obter comunicação direta com esta DLL, por motivos

já explicados anteriormente.

A IDcode.dll está distribuída em 2 versões:

V 8.X.X.X : Comunica com firmware da placa MAB V 8.X.X.

V 3.X.X.X : Comunica com software Simulador de Bombas IDcode.

A versão deverá ser substituída dependendo do meio utilizado. Por padrão junto com

o instalador do software Gerenciador IDcode, será instalada a IDcode.dll V 8.X.X.X. Porém o

arquivo “intergracaoIDcode.zip” contem os dois modelos.

Obs.: Em uma instalação normal, não é necessário preocupar-se com este detalhe, pois o

instalador já deixará tudo em perfeito funcionamento.

Cesna Technology | 2013

4 CONCENTRADOR IDCODE

O hardware Concentrador IDcode de Bombas de Combustível, como previamente

citado na lista de notações nas primeiras páginas deste manual, engloba o conjunto Master

IDcode USB, composto pela Placa Master IDcode e placa de expansão para conectores, MAB

IDcode, que contem a placa MAB IDcode, Fonte IDcode e Antenas, podendo ser de 1 a 4

antenas, dependendo da quantidade de bicos com abastecimento simultâneo, e por fim os

Cartões para Frentistas e Clientes, sendo esses opcionais. O Concentrador IDcode foi

desenvolvido no intuito de proporcionar ao seu utilizador um ótimo Custo x Benefício para seu

investimento. Bem como proporcionar ao Software Integrador um periférico de confiança e

compatibilidade com modelos de bombas existentes no mercado. Não sendo necessário

refazer o trabalho de integração quando o funcionamento do hardware for otimizado ou

atualizado.

Cesna Technology | 2013

4.1 Descrição de Funcionamento

INÍCIOSolicitado para a CesnaActiveX.dll

o Cmd IDcodeOpen

Dados são relevantes ao Software Integrador?

Existe Master IDcode USB conectada ao PC?

SE VERDADEIROEnvia dados ao

Software Integrador.

SE VERDADEIROExecuta rotina de configuração da Master IDcode USB e MAB.

IDcode.dll Recebe solcitação do IDcodeOpen

SE FALSORetorna erro na chamada

de função e FINALIZA.F

Parâmetros da chamada de função estão corretos?

F

V

V

Habilita LOOP de solcitação de Status ao Concentrador IDcode.

V

Obteve resposta OK?

SE FALSOInicia Rotina de

recuperação de dados e do dispositivo!

F

Recuperação OK?

F

V

V

F

Figura 3 - Fluxograma Descrição de Funcionamento

Como representado no fluxograma na figura 3, após o recebimento de um comando

“IDcodeOpen” pela CesnaActiveX.dll, será enviado o mesmo comando e parâmetros para a

IDcode.dll. A dll irá configurar os parâmetros de comunicação com a Master IDcode USB via

porta USB do PC onde o hardware estiver conectado. Este por sua vez será responsável por

enviar e receber mensagens a placa MAB utilizando um protocolo próprio de uso interno da

Cesna Technology.

Após a placa MAB receber as configurações necessárias ela mesma inicia o processo de

gerenciamento das bombas de combustível conectadas. Todas as vezes que a(s) bomba(s) de

Cesna Technology | 2013

combustível alterar seu estado, o mesmo será enviado ao Software Integrador via os retorno

dos métodos do objeto AcitiveX.

A seguir algumas opções e particularidades de funcionamento serão descritas.

4.1.1 Modo On-Line

É a condição normal de funcionamento do Concentrador IDcode em um posto de

combustível, ou seja, irá passar todos os estados e solicitações das bombas de combustível a

ele conectadas ao Software Integrador em tempo real, bem como responder todas as funções

a ele solicitadas. Caracterizando assim modo on-line.

4.1.2 Modo Off-Line

Se por algum motivo o Concentrador IDcode não estiver com a comunicação

estabelecida com o computador onde estiver conectado ele continuará gerenciando as

bombas de combustível a ele conectadas. Logo este tipo de evento é chamado de “Off-Line”,

caracterizado justamente por não estar enviando mensagens ao computador em tempo real.

Porém dependendo do modo de operação (explicado no item a seguir) que o Concentrador

estiver configurado, poderá liberar as bombas para abastecimento quando a ele solicitado.

Quando a comunicação com o computador for reestabelecida e a flag que autoriza o

recebimento desses abastecimentos estiver setada, os abastecimentos serão enviados ao

Software Integrador, seguindo o descrito no item 2.2.7.

O Concentrador IDcode permanecerá com sua última configuração válida salva. Essa

configuração será a mesma enviada no comando “IDcodeConfiguraMAB” citada no item 2.2.5.

Os dados de configuração ou abastecimentos são armazenados em memória não volátil, ou

seja, os dados não serão perdidos se o mesmo for desligado da rede elétrica e bateria. Porém

se o Concentrador IDcode estiver desligado e as bombas estiverem em modo remoto, não irão

efetuar novos abastecimentos.

Cesna Technology | 2013

4.1.3 Modo de Operação do Concentrador IDcode

Todas as vezes que as Bombas de combustível (bo) conectadas à MAB forem acionadas

a efetuar um abastecimento, estando configuradas para modo remoto (com automação) irão

solicitar autorização para iniciar o abastecimento ao Concentrador IDcode. Este por sua vez

poderá operar de três formas diferentes.

São elas:

A – O Concentrador IDcode irá liberar bomba de combustível para abastecer, sem

solicitar autorização ao Software Integrador. Caso esteja em modo Off-Line, irá liberar

as bombas para abastecimento e armazená-los em modo off-line.

B – O Concentrador IDcode irá liberar a bomba de combustível para iniciar um

abastecimento, somente após a confirmação do Software Integrador através do

comando “IDcodeAutorizaAbastecimento”. Porém se o mesmo entrar em modo Off-

Line irá liberar os abastecimentos e armazená-los.

C – O concentrador IDcode irá liberar a bomba de combustível para iniciar um

abastecimento, somente após receber autorização através da tag do cartão do

frentista. Se o concentrador estiver operando em modo off-line os abastecimentos

serão liberados pelo cartão e serão armazenados. Nesse modo o Cencentrador IDcode

irá ignorar os comandos “IDcodeAutorizaAbastecimento” e “IDcodeSetaPrePago”.

Cesna Technology | 2013

5 OBSERVAÇÕES DAS BOMBAS DE COMBUSTÍVEL

5.1 Bomba Lógica

BOMBA FÍSICA

A | BBomba Lógica | Bomba Lógica

BICO 1

BICO 2

BICO 3

BICO 4

BICO 1

BICO 2

BICO 3

BICO 4

Figura 4 - Descrição Bomba Lógica

Analisando a figura 5, vamos descrever a diferença entre bomba física e bomba lógica.

Entendemos por bomba física, o conjunto de todos os bicos e acessórios necessários

para uma bomba estar completa, ou seja, é o que visualizamos normalmente na pista de

abastecimento em um posto de combustível comum.

Figura 5 - Bomba Física.

A imagem acima mostra três bombas físicas. Com um bico cada uma.

Cesna Technology | 2013

Entende-se por bomba lógica o endereçamento interno da bomba física, ou seja, o

endereço configurado na CPU, geralmente encontra-se na parte interna da mesma, não sendo

possível visualizá-lo em condições normais, tendo acesso somente ao teclado de configuração.

Os profissionais capacitados para abrir a bomba física geralmente são o instalador ou o

mecânico de bomba, credenciados nos órgãos fiscalizadores. Pois após a abertura, é

necessário inserir o lacre para posterior fiscalização.

BOMBA FÍSICA

A - 1 | B - 2Bomba Lógica | Bomba Lógica

BICO 1

BICO 2

BICO 3

BICO 4

BICO 1

BICO 2

BICO 3

BICO 4

BOMBA FÍSICA

A - 3 | B - 4Bomba Lógica | Bomba Lógica

BICO 1

BICO 2

BICO 3

BICO 1

BICO 2

BICO 3

BOMBA FÍSICA

A - 5 | B - 6Bomba Lógica | Bomba Lógica

BICO 1

BICO 2

BICO 1

BICO 2

BOMBA FÍSICA

A - 7 | B - 8Bomba Lógica | Bomba Lógica

BICO 1BICO 1

Figura 6 - Bomba Lógica

A CPU pode ser configurada geralmente com dois endereços lógicos, porém cada um

deles pode controlar de 1 até no máximo 4 bicos, sendo possível a utilização de um bico por

vez em cada endereço de controle. Isso foi projetado para o posto aperfeiçoar seu ponto de

abastecimento, já que é possível disponibilizar mais de um tipo de combustível.

Analisado a figura 6, percebemos que cada lado da bomba A ou B, pode ser

configurado com um endereço lógico diferente. Normalmente eles são configurados em

sequência, sendo possível atribuir do número de 1 a 4 bombas por MAB num total de 32

MABs. Em um posto de combustível raramente existirá um endereço configurado no

Concentrador IDcode sem bomba lógica correspondente, logo, o instalador é instruído a não

deixar endereços vagos. Isso é recomendado, pois se o Concentrador IDcode não conseguir a

resposta do endereço que o mesmo solicitou status, irá entra em uma rotina de tratamento de

erro, levando um tempo maior que o normal para este endereço.

Cesna Technology | 2013

5.2 Particularidades das Bombas

Neste tópico vamos indicar algumas particularidades de determinadas marcas e

modelos de bombas. Isso é relevante para entender o funcionamento do sistema como um

todo.

Informamos que o Concentrador IDcode disponibiliza todas as funções necessárias

para a automação de bombas por ele suportadas, seguindo as exigências de órgãos

fiscalizadores sendo inclusive homologado no órgão competente a fiscalização do hardware,

INMETRO.

5.2.1 Wayne

Todos os modelos de bombas Wayne aqui relacionados enviam dados de totalizadores,

Preço por Litro e Volume em tempo de abastecimento.

Quando a bomba estiver no estado “BOMBA_ABASTECENDO”:

Se solicitado a função “IDcodeObtemUltimoVolume”, a bomba enviará como resposta

o volume atualizado que está sendo mostrado no display de volume da referida

bomba, ou seja, o volume crescente do abastecimento em curso.

Obs.: O uso contínuo desta função, ou sem intervalos, pode gerar problemas de atraso

de comunicação com outras bombas. Então, se for de interesse utilizar esta função, as

solicitações de volume devem ser feitas com um intervalo mínimo de 3 segundos entre

uma e outra.

Se solicitado a função “IDcodeObtemTotalizador”, o valor do totalizador que será

obtido na resposta será referente ao valor antes de iniciar o abastecimento em curso.

Se solicitado a função “IDcodeTravaBomba”, irá interromper imediatamente a saída de

combustível pelo bico da bomba. Permanecendo neste estado, até que o comando

“IDcodeDestravaBomba” seja recebido. Somente em bombas que suportam esta

opção.

Cesna Technology | 2013

5.2.1.1 Wayne Minnow

Este modelo é chamado comumente de Semi-Eletrônica, isso porque apesar de existir

um display digital ele é limitado em comandos.

Funções não Suportadas:

Troca Preço por Litro.

Abastecimento Pré-Pago.

Trava e Destrava.

Autoriza Abastecimento.

5.2.1.2 Wayne Rifran

Esta é uma evolução da bomba Wayne Minnow, mas ainda assim é um modelo antigo.

Funções não Suportadas:

Abastecimento Pré-Pago.

5.2.1.3 Wayne Duplex

Esta é uma versão posterior a Wayne Rifran. Suporta todas as funções.

5.2.1.4 Wayne 3G

Esta é a bomba da marca Wayne mais atual. Suporta todas as funções.

5.2.2 Bomba Gilbarco

Este modelo de bomba, apesar de evoluir seus modelos anteriores, mantem o mesmo

protocolo de comunicação. Logo, possui algumas limitações de funcionamento. Este modelo

de bomba não suporta algumas funções em modo abastecendo, ou seja,

“BOMBA_ABASTECENDO”.

Também existe uma particularidade com relação aos bicos que iniciam o

abastecimento deste tipo de bomba. Quando um bico diferente do número “1” de cada lado

Cesna Technology | 2013

da bomba descrito no item 5.1 - Bomba Lógica é acionado, para iniciar um abastecimento, o

protocolo desta bomba informa que a bomba lógica está abastecendo, mas não informa de

qual bico sairá o combustível no momento. Logo enviamos como padrão o bico (bi) “1”, ou

seja, no endereçamento MAB_BO_BI independente de ser o bico (bi) “1” ou não, é este que

será informado no momento em que a bomba inicia o abastecimento. Porém depois do

abastecimento ser finalizado, obtemos a informação do qual bico realmente realizou o

abastecimento.

Informamos que esta é uma limitação do protocolo da bomba em questão, não do

hardware Concentrador IDcode.

Cesna Technology | 2013

Quando a bomba estiver no estado “BOMBA_ABASTECENDO”:

Se solicitado a função “IDcodeObtemUltimoVolume”, “IDcodeObtemTotalizador” ou

“IDcodeObtemPrecoPorLitro”, este modelo de bomba não irá responder aos

comandos solicitados neste modo abastecendo. Logo irá retornar na função

“OnIDcodeMudancaDeEstado”, “BOMBA_NAO_RESPONDE”.

Se solicitado a função “IDcodeTravaBomba”, irá interromper imediatamente a saída de

combustível pelo bico da bomba, porém neste modelo de bomba este comando

deverá ser interpretado como bomba stop, pois logo após ela interromper a saída de

combustível pedirá autorização ao Software Integrador para abastecimento. Se o

mesmo estiver configurado para modo de operação B ou C. Se a autorização for

enviada via Software Integrador ou cartão do frentista, dependendo do modo de

operação, a bomba irá retornar a liberar combustível pelo referente bico.

Se o comando “IDcodeAutorizaAbastecimento” for utilizado no modo B para liberar a

bomba a mesma permanecerá em modo liberada “BOMBA_LIBERADA”, neste modo

ela também não aceita nenhum comando. Sendo que se desejar cancelar a liberação, o

comando “IDcodeTravaBomba” deverá ser enviado, com isso a bomba retornará ao

estado “BOMBA_PRONTA”, e aceitará qualquer novo comando.

5.2.3 Bomba Stratema

Esta bomba possui as mesmas observações da bomba Gilbarco, porém ao chamar o

comando “IDcodeTravaBomba”, se esta estiver em modo abastecendo, irá travar a bomba e

será necessário enviar o comando “IDcodeDestravaBomba” para a mesma voltar a liberar

combustível.

5.2.4 Bomba Aspro GNV

Deve-se atentar para o valor que virá na variável volume. Este valor não é em litros (L),

mas sim em metro cúbico (m3).

Cesna Technology | 2013

6 DICAS PARA SOFTWARE INTEGRADOR

6.1 Importação do Driver Master IDcode USB para Windows 8

Devido a certas restrições do Windows 8 para fazer a instalação do driver Master

IDcode USB é preciso fazer com que o sistema operacional permita a instalação de drivers não

assinados digitalmente. Para isso os seguintes passos deverão ser seguidos:

Primeiro deve-se entrar na barra lateral que pode ser acessada clicando no botão

“Windows” + “C”. Então deve-se clicar em “Configurações” e “Mudar Configurações do

Computador”. Será aberto um software especifico do Windows 8. Nesse software deve-se

clicar na aba “Geral” e selecionar a última opção, “Inicialização Avançada”, e então clicar em

“Reiniciar”.

Após isso o Windows reiniciará e mostrará uma tela de opções. Nessa tela selecionar

“Mudar Opções de Inicialização”, será apresentada uma lista de opções, porem essa deverá ser

selecionada pelas teclas numéricas do teclado. Por fim selecionar “Permitir Drivers Não

Assinados Digitalmente”. O Windows 8 reiniciará e o Driver Master IDcode poderá ser

instalado normalmente.

6.2 Iniciando a Comunicação com o Concentrador IDcode

Ao iniciar a comunicação com o Concentrador IDcode pela primeira vez é indicado que

se faça a devida configuração das MABs através do comando “IDcodeConfiguraMab” para que

dessa forma todas as bombas conectadas às suas devidas MABs comuniquem

apropriadamente com o Software integrador.

Cesna Technology | 2013

6.3 Solicitação de Encerrantes

Conforme descrito na seção IDcodeObtemTotalizador, deverá primeiro receber a

resposta do comando anterior, para após solicitar o comando a outra bomba. Exemplo:

Bomba 1:

CMD OBTEM TOTALIZADOR MAB_BO_BI 111

BOMBA_ENVIOU_TOTAL MAB_BO_BI 111 LPARAM XXXXXXXX

Bomba 2:

CMD OBTEM TOTALIZADOR MAB_BO_BI 121

BOMBA_ENVIOU_TOTAL MAB_BO_BI 121 LPARAM XXXXXXXX

6.4 Digito do Milhão

Porque ás Automações de Bombas de Combustível não enviam do Dígito do Milhão?

Isso acontece quando a Bomba de Combustível ultrapassa o valor de “999.999,99” no

totalizador por volume que é o informado pelo Concentrador IDcode. Este valor irá retornar ao

valor inicial que é “000.000,00” e incrementará normalmente de acordo com o volume

vendido. Porém alguns postos utilizam o número do totalizador conforme aparece no display

da bomba, apesar de geralmente este dígito ser um pouco mais deslocado para a esquerda

que os demais.

A bomba, independente da marca ou modelo, envia para a automação via protocolo

de comunicação o totalizador com no máximo oito dígitos, ou seja, seis dígitos que compõem a

parte inteira do número e dois correspondem às casas decimais (XXX.XXX,XX). Então após esta

atualização de valores da bomba, a mesma irá mostrar no display “1 000.000,00”. Mas, como

citado, este dígito não vêm via protocolo, logo talvez o entendimento deste dígito não seja

exatamente este, ultrapassar 1 milhão, mas sim informar que a bomba girou o totalizador uma

vez.

Informamos dois modos possíveis de resolver este detalhe:

O Posto considera o totalizador em volume desta bomba sem o dígito do N° “1”, que

será possível somente com alteração e justificativa no LMC.

O Software Integrador adiciona este número no valor do totalizador de volume da

bomba manualmente, ou seja, ter uma configuração para cada bico onde exista a

opção de informar se a bomba em questão possui o dígito do milhão ou não.

Cesna Technology | 2013

Então a conclusão que podemos chegar é de que como nenhuma bomba manda este

dígito via protocolo de comunicação este deve ter a outra interpretação, ficando a critério do

Software Integrador a opção de ajuste. Mas fica o lembrete de que isso ocorre na maioria dos

postos de combustíveis. E também que isso não é uma limitação do Concentrador IDCode,

todos os aparelhos de automação possuem este detalhe. Ficando a critério de cada um o

ajuste.

Obs.: Norma do PAF-ECF determinam que o Totalizador de Volume, deve conter 8 dígitos

com duas casas decimais, ou seja, (XXXXXX,XX) sem o dígito do milhão.

6.5 Autorização Automática

Quando o Concentrador IDcode operar em modo de operação B, todas as vezes que se

desejar efetuar um abastecimento, a bomba irá solicitar autorização para iniciar o

abastecimento para o Concentrador IDcode e o mesmo ao Software Integrador.

É possível enviar o comando “IDcodeAutorizaAbastecimento” antes mesmo da bomba

solicitar a autorização, então a bomba entra no estado

“BOMBA_LIBERADA_PARA_ABASTECER”. Com isso o acionamento da bomba ficará um pouco

mais rápido, pois a mesma não terá que esperar a liberação do Concentrador IDcode, que por

sua vez espera a liberação do Software Integrador.

Caso este processo seja utilizado, devemos lembrar que a bomba não envia ou efetua

algumas operações neste modo. Sendo necessário o envio do comando “IDcodeTravaBomba”

para a mesma voltar para o estado de “BOMBA_PRONTA”.

6.6 Bicos de Abastecimento

Não devemos esquecer que o posto de combustível geralmente já possui uma

numeração dos bicos de acordo com o cadastrado no órgão fiscal, ou seja, sempre que possível

é bom seguir esta numeração para o sistema, e criar campos de endereçamento obtidos dos

Cesna Technology | 2013

valores de MAB, Bomba Lógica (bo) e Bico (bi). Sendo estes números o endereço lógico que

identifica a bomba.

Sendo recomendável criar um cadastro de endereços onde seja possível referenciá-los

de acordo com o número já existente na pista.

Existente Endereço enviado pelo Concentrador IDcode

Nº do Bico na Pista MAB Bomba (bo) Bico (bi)

Bico 1 01 1 1

Bico 2 01 1 2

Bico 3 01 2 1

Bico 4 01 2 2

Bico 5 01 3 1

... ... ... ...

Bico 7 NN n n

Tabela 2 - Bicos de Abastecimento

Cesna Technology | 2013

6.7 Atualização do Componente CesnaActiveX.dll

Esta dica servirá para clientes que já possuem o Software Integrador integrado com o

Concentrador IDcode, e informa o reduzido impacto de software para atualização.

Primeiro o componente CesnaActiveX.dll anterior deverá ser desinstalado, assim como

o software Gerenciador IDcode anterior. Na pasta do sistema não deverão existir nenhum

arquivo IDcode.dll, CesnaActiveX.dll ou CesnaActiveX.ocx, que devem ser removidos com a

desinstalação do software Gerenciador IDcode. Caso isso não ocorra verifique se o software foi

removido corretamente, se os arquivos ainda permanecerem exclua-os.

Após os componentes e softwares anteriores removidos, deverá ser instalado o novo

componente, para isso instale o software Gerenciador IDcode atualizado que está contido no

arquivo “integracaoIDcode.zip”, baixado do site da Cesna Technology na área de download

restrito

Agora a importação do componente poderá ser novamente efetuar conforme descrito

no Apêndice A no final deste manual.

Caso no momento da importação não exista o componente CesnaActiveX.dll efetue

um novo registro da CesnaActiveX.dll no sistema. Abra o prompt do DOS com o botão direito

do mouse clique em executar como administrador, logo após insira a seguinte linha de

comando. Depois da mensagem de registro OK, efetue a importação novamente.

Para 32 bits:

Figura 7 - Registro em Windows 32 bits.

Para 64 bits:

Figura 8 - Registro em Windows 64 bits.

Cesna Technology | 2013

Para atualização em campo, o software Gerenciador IDcode deverá ser desinstalado. A

versão atualizada deverá ser pega no site da Cesna Technology no arquivo “instaladores.zip”

(senha para descompactação: activex).

Então deve-se abrir o Gerenciador IDcode e testar a comunicação com o hardware

Concentrador IDcode.

Depois de testado pode-se atualizar o software integrador e rodar o programa. Após

isso efetuado estará tudo correto para funcionamento normal com as novas funções.

Cesna Technology | 2013

APÊNDICE A

Disponibilizamos formas de importação de componentes, entre outras demonstrações

e procedimento de configuração, em vídeos no site do youtube. Desta forma visamos uma

melhor demonstração dos processos, sendo possível um mais rápido entendimento do assunto

de cada vídeo.

Para acessar os vídeos, solicitamos acessar via internet o link

www.youtube.com/cesnatechnology. Lá estes procedimentos estão disponíveis para

visualização.

Informamos que algumas IDE’S, principalmente nos ambientes com linguagem Delphi

ou C++, são similares na forma de importação do Objeto ActiveX. Por exemplo, para IDE

Borland Delphi 7, a forma de importação do componente é similar para Borland C++ Builder 6.

Sendo assim, disponibilizamos apenas o exemplo em Borland Delphi 7, pois o desenvolvedor

conseguirá basear-se sem maiores problemas para a importação do objeto em Borland C++

Builder 6.

O mesmo acontece para a importação do objeto na IDE Embarcadero® C++ Builder®

XE, onde foi disponibilizado o vídeo em C++, mas a forma de importação é a mesma para

Embarcadero® Delphi® XE, sem maiores dificuldades para o desenvolvedor basear-se neste

vídeo para Deplhi. O procedimento é o mesmo para CodeGearTM Deplhi® 2007.

Disponibilizamos também importação do objeto na IDE Visual Studio 6 e também

Visual Studio 2008.

Existem exemplos de integração nessas IDE’S e linguagens acimas citadas

disponibilizados no arquivo “integracaofcm.zip”, na pasta exemplos de integração.

Cesna Technology | 2013

APÊNDICE B

A Tabela 2 apresenta a listagem dos tipos de bomba e o código referente a cada uma.

Esse código é o valor que deverá ser passado como parâmetro Tipo de Bomba.

Modelo de Bomba Código TipoBomba

Wayne 3G 1

Wayne Duplex 2

Wayne Minnow 3

Wayne Rifran 4

Gilbarco 5

Stratema Loop 6

Stratema RS485 7

Stratema RS485 4800 8

Aspro Develco 9

Aspro Metroval A

Tokheim B

Cesna C

Tabela 3 - Código dos Tipos de Bomba

Cesna Technology | 2013

APÊNDICE C

A Tabela 3 apresenta a listagem das funções de retorno do componente ActiveX e seus

devidos parâmetros.

Função de Retorno Parâmetros

OnIDcodeAbasteceu

Mab, Bomba, Bico, Volume, VolumeCasaDecimal,

TotalInicial, TotalInicialCasaDecimal, TotalFinal,

TotalFinalCasaDecimal, PrecoPorLitro,

PrecoPorLitroCasaDecimal, Data, Hora, TagFrentista,

TagCliente, FlagAbastecimentoOff,

NumeroAbastecimento

OnIDcodeRetornoAbastFlash

Mab, Bomba, Bico, Volume, VolumeCasaDecimal,

TotalInicial, TotalInicialCasaDecimal, TotalFinal,

TotalFinalCasaDecimal, PrecoPorLitro,

PrecoPorLitroCasaDecimal, Data, Hora, TagFrentista,

TagCliente, FlagAbastecimentoOff,

NumeroAbastecimento

OnIDcodeConfigMab Mab, NumeroBomba, ModoOperacao, TipoBomba

OnIDcodeErroCrcTab Mab, Crc

OnIDcodeInfoEvento Mab, Bomba, Bico, Evento

OnIDcodeMudancaDeEstado Mab, Bomba, Bico, Estado

OnIDcodeNumAbastOff Mab, NumeroAbastecimentosOffline

OnIDcodePrecoPorLitro Mab, Bomba, Bico, PrecoPorLitro,

PrecoPorLitroCasaDecimald

OnIDcodeTotalizador Mab, Bomba, Bico, Totalizador,

TotalizadorCasaDecimal

OnIDcodeValorBombaAbast Mab, Bo, Bi, Valor, ValorCasaDecimal

OnIDcodeVolume Mab, Bo, Bi, Volume, VolumeCasaDecimal

Tabela 4 - Funções de Retorno e Parâmetros

Cesna Technology | 2013