a y - central.netsof.com.brcentral.netsof.com.br/baixar/cesna/manuais/manual_desenvolvedores... ·...

57
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 Documentação de auxílio à integração com Concentrador Fcm Utilizando CesnaActiveX.dll V 1.1.0 - ActiveX Versão 2.0.0

Upload: vukhuong

Post on 15-Nov-2018

223 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

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

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

Utilizando CesnaActiveX.dll V 1.1.0 - ActiveX

Versão 2.0.0

Page 2: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

ATENÇÃO...

A empresa dispõe de um conjunto de

exemplos para integração direta com a

DLL de manipulação do concentrador

CESNA, para as seguintes linguagens de

programação: Visual Basic; Delphi; C++.

A CESNA TECHNOLOGY fornece

este material no intuito de auxiliar aos

desenvolvedores de sistemas de integração com o concentrador FCM CESNA 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 alguma correção

ortográfica 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á

a 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.

A CESNA TECHNOLOGY, também dispõe a seus integradores outra opção de

comunicação com o CONCENTRADOR

FCM, via protocolo de troca de arquivo de

texto. Caso obtenha interesse neste modo,

solicite maiores informações pelo e-mail

no final deste texto.

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.

Page 3: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

SUMÁRIO

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

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

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

1 OBJETIVO GERAL DESTE MANUAL .............................................................................. 5

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

2.1 Importando o Componente ActiveX ........................................................................... 7

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

2.2.1 FcmOpen ................................................................................................................. 11

2.2.2 FcmClose.................................................................................................................. 11

2.2.3 FcmSetNumSlaves .................................................................................................... 12

2.2.4 FcmConfiguraSlave ................................................................................................... 12

2.2.5 FcmConfigConcentrador ........................................................................................... 13

2.2.6 FcmAutorizaAbastecimento ..................................................................................... 15

2.2.7 FcmTravaBomba ...................................................................................................... 15

2.2.8 FcmDestravaBomba ................................................................................................. 16

2.2.9 FcmSolicitaPrecoPorLitro ......................................................................................... 16

2.2.10 FcmTrocaPreco ........................................................................................................ 17

2.2.11 FcmSolicitaUltimoAbastecimento ............................................................................. 17

2.2.12 FcmSolicitaTotalizador ............................................................................................. 18

2.2.13 FcmProgramaPrePago .............................................................................................. 18

2.2.14 FcmVersaoDLL.......................................................................................................... 20

2.2.15 FcmSolicitaVersaoSlave ............................................................................................ 20

2.2.16 FcmObtemStatusBomba .......................................................................................... 21

2.2.17 FcmConfigTotalizador............................................................................................... 21

2.2.18 CmdEspecial ............................................................................................................. 22

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

2.3.1 OnFcmMudancaDeEstado ........................................................................................ 23

2.3.1.1 EVENTO_BOMBA_PRONTA ...................................................................................... 23

2.3.1.2 EVENTO_BOMBA_NAO_RESPONDE .......................................................................... 23

2.3.1.3 BOMBA_PEDE_AUTORIZACAO ................................................................................. 24

Page 4: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.3.1.4 BOMBA_LIBERADA ................................................................................................... 24

2.3.1.5 BOMBA_ABASTECENDO ........................................................................................... 24

2.3.1.6 BOMBA_ABASTECEU ................................................................................................ 24

2.3.1.7 BOMBA_BLOQUEADA .............................................................................................. 24

2.3.1.8 BOMBA_DESBLOQUEADA ........................................................................................ 24

2.3.1.9 CONSENTRADOR_ACEITOU_CONFIGURACAO ........................................................... 25

2.3.1.10 BOMBA_TROCOU_PRECO ........................................................................................ 25

2.3.1.11 BOMBA_RESERVADA_PRE_PAGO ............................................................................. 25

2.3.1.12 FALHA_NA_COMUNICACAO_COM_CONSENTRADOR ............................................... 25

2.3.2 OnFcmTotalizador .................................................................................................... 26

2.3.3 OnFcmVolume ......................................................................................................... 28

2.3.4 OnFcmPrecoPorLitro ................................................................................................ 29

2.3.5 OnFcmAbasteceu ..................................................................................................... 31

2.3.6 OnFcmVersaoFcmSlave ............................................................................................ 34

2.3.7 OnFcmErroDLL ......................................................................................................... 35

2.3.7.1 ERRO “20” - MM_EVENTO_ERRO_LRC ...................................................................... 35

2.3.7.2 ERRO “21” – MM_EVENTO_MASTER_ERRO_PRT ...................................................... 35

2.3.7.3 ERRO “22” – MM_EVENTO_MASTER_FINALIZOU ..................................................... 35

2.3.7.4 ERRO “23” – SAIDA_EVENT OCORREU TIMEOUT....................................................... 35

2.3.8 OnFcmEventoFcmSlave ............................................................................................ 36

2.3.9 OnRetornoEspecial ................................................................................................... 36

3 DESCRIÇÃO FCMMASTER.DLL ................................................................................... 37

4 CONCENTRADOR FCM .............................................................................................. 38

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

4.1.1 Modo On-Line .......................................................................................................... 39

4.1.2 Modo Off-Line .......................................................................................................... 39

4.1.3 Modo de Operação do Concentrador Fcm ................................................................ 40

4.1.4 Formato Mensagem de Abastecimento .................................................................... 41

5 OBESERVAÇÕES DAS BOMBAS DE COMBUSTÍVEL ..................................................... 42

5.1 Bomba Lógica ........................................................................................................... 42

5.2 Particularidades das Bombas .................................................................................... 44

5.2.1 Mecânica ................................................................................................................. 44

Page 5: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

5.2.2 Wayne ..................................................................................................................... 46

5.2.2.1 Wayne Minnow ........................................................................................................ 46

5.2.2.2 Wayne Rifran ........................................................................................................... 47

5.2.2.3 Wayne Duplex .......................................................................................................... 47

5.2.2.4 Wayne 3G ................................................................................................................ 47

5.2.3 Bomba Gilbarco ....................................................................................................... 47

5.2.4 Bomba Stratema ...................................................................................................... 48

5.2.5 Bomba Aspro GNV ................................................................................................... 48

6 DICAS PARA SOFTWARE INTEGRADOR ...................................................................... 49

6.1 Iniciando a Comunicação com o Concentrador Fcm .................................................. 49

6.2 Solicitação de Encerrantes........................................................................................ 49

6.3 Digito do Milhão ...................................................................................................... 50

6.4 Autorização Automática ........................................................................................... 51

6.5 Bicos de Abastecimento ........................................................................................... 51

6.6 Atualização do Componente CesnaActiveX.dll .......................................................... 52

APÊNDICE A ............................................................................................................. 54

Page 6: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

LISTA DE FIGURAS

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

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

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

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

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

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

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

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

LISTA DE TABELAS

Tabela 1 - Modelo de Bombas no retorno Versão Fcm Slave. ...................................... 34

Tabela 2 - Bicos de Abastecimento.............................................................................. 51

Page 7: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

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.

- CesnaActiveX.dll: Biblioteca em ActiveX para interface com Fcm Master.dll.

- cd: Número de casas decimais.

- Concentrador Fcm: Conjunto Fcm Master, FcmSlave, Fonte de Alimentação.

- Driver FTDI: Driver para Fcm Master USB.

- Fcm Master USB: Hardware de interface entre Fcm Slave e PC.

- Fcm Slave: Hardware que controla e gerencia as bombas de combustível.

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

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

- Gerenciador Cesna: Software de gerenciamento e teste do Concentrador Fcm.

- Instalador Gerenciador Cesna: Software que instala e registra o software Gerenciador Cesna.

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

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

- SB: – Simulador de Bombas.

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

para auxiliar os integradores do Concentrador Fcm no desenvolvimento do Software

Integrador.

- sl ou Slave: Número que corresponde a Fcm Slave.

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

com o Concentrador Fcm.

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

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

Page 8: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

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 Fcm, utilizando como

interface a CesnaActiveX.dll.

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

recepção de mensagens ao Concentrador de Bombas 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 Fcm.

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 e contidos 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!

Page 9: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

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 Fcm, 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 Fcm foi 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

FcmMaster.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 Fcm assim ficando totalmente independente, sendo

possível alterar a FcmMaster.dll quando necessário sem impacto algum na integração já

efetuada pelo Software Integrador. Logo, é possível instalar nos clientes as últimas versões da

FcmMaster.dll e Firmware da placa Fcm Slave. Também gostaríamos de salientar que não é

possível comunicação diretamente com a FcmMaster.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 FcmMaster.dll.

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

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

Concentrador Fcm 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_Fcm”) está disponível na página de download no site da

Cesna Technology.

Page 10: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.1 Importando o Componente ActiveX

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

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

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

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

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

equipamento e as bombas de combustível conectadas a placa Fcm Slave.

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 Cesna 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. 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 Fcm, ou utilizará o programa

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

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

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

testes, em seguida o driver do dispositivo Fcm Master 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, área de downloads.

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

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

“FcmMaster.dll” V 6.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.X.X que é a

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

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

Page 11: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

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.X.X fará a interface entre o Software Integrador e

Software Simulador de Bombas Fcm.

Se tudo ocorreu bem, já podemos utilizar a CesnaActiveX.dll para integração.

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

Todos as solicitações ou eventos enviados ao Concentrador Fcm 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:

1: Indica que a solicitação foi executada com sucesso.

-1: O parâmetro número do FcmSlave (sl) está incorreto, ou não foi encontrado.

-2: O parâmetro Bomba (bo) está incorreto.

-3: O parâmetro Bico (bi) está incorreto.

-4: O parâmetro casas decimais (cd) está incorreto.

-5: O parâmetro Modo de Operação está incorreto.

-6: O parâmetro Formato Mensagem de Abastecimento está incorreto.

-7: O Fcm Slave em questão não existe ou não está respondendo no momento.

-8: Parâmetro do CMD especial está incorreto.

-9 a -11: Solicite informações ao suporte da Cesna Technology.

-12: Este número de Fcm Master já foi iniciado.

-13 a -15: Solicite informações ao suporte da Cesna Technology.

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

de Bombas Fcm, quanto para o hardware. Logo todo o desenvolvimento pode ser

efetuado via simulador.

Page 12: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

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

Concentrador Fcm, 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 IDcode, favor consultar o

Manual Desenvolvedores IDcode.

PROTÓTIPOS DE FUNÇÕES

Obs.: Todas possuem retorno tipo long.

Cesna->FcmOpen(unsigned char NumeroMaster);

Cesna->FcmSetNumSlaves(int NumeroSlave);

Cesna->FcmConfiguraSlave(unsigned char Slave, unsigned char Bomba);

Cesna->FcmConfigConcentrador(unsigned char Slave, unsigned char Bomba, unsigned char

ModoOperacao, unsigned char TipoMsgAbastecimento);

Cesna->FcmVersaoFcmMaster();

Cesna->FcmSolicitaVersaoSlave(unsigned char Slave);

Cesna->FcmAutorizaAbastecimento(unsigned char Slave, unsigned char Bomba, unsigned char

Bico);

Cesna->FcmSolicitaUltimoAbastecimento(unsigned char Slave, unsigned char Bomba, unsigned

char Bico);

Cesna->FcmSolicitaTotalizador(unsigned char Slave, unsigned char Bomba, unsigned char

Bico);

Cesna->FcmSolicitaPrecoPorLitro(unsigned char Slave, unsigned char Bomba, unsigned char

Bico);

Cesna->FcmTrocaPreco(unsigned char Slave, unsigned char Bomba, unsigned char Bico, long

PrecoPorLitro, unsigned char PrecoPorLitroCasaDecimal);

Cesna->FcmProgramaPrePago(unsigned char Slave, unsigned char Bomba, unsigned char Bico,

long Volume, unsigned char VolumeCasaDecimal);

Cesna->FcmTravaBomba(unsigned char Slave, unsigned char Bomba);

Cesna->FcmDestravaBomba(unsigned char Slave, unsigned char Bomba);

Cesna->FcmObtemStatusBomba(unsigned char Slave, unsigned char Bomba);

Cesna->FcmConfigTotalizador(unsigned char Slave, unsigned char Bomba, unsigned char

Bico, long Totalizador);

Cesna->CmdEspecial(unsigned char Slave, unsigned char Bomba, unsigned char Bico, long

Codigo, long Param1, long Param2, long Param3);// Utilização futura

Cesna->FcmClose();

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 “FcmMaster-> ” em C++ ou “FcmMaster. ” em Delphi . Como citado

acima, estas possuem todos os seus retornos em tipo long.

Page 13: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

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

relacionadas acima.

ATENÇÃO: Tanto o “Concentrador Fcm” como o “Concentrador IDcode” 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 Fcm quanto as do IDcode estarão disponíveis. É de vital

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

as que possuam o prefixo “Fcm<Nome da Função>”. Por exemplo: FcmOpen(). Os

eventos de resposta devem possuir o prefixo “OnFcm<Nome da Função>”. Por

exemplo: OnFcmAbasteceu.

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

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

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

Page 14: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.2.1 FcmOpen

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

Fcm. Deverá ser passado como parâmetro o número da Fcm Master USB que desejar obter

uma conexão. O número do Fcm Master USB dependerá do número de Concentradores Fcm

instalados no posto de combustível, que pode variar de acordo com o número de bombas ou

com bombas de marcas diferentes. Ex.:

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

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

//Solicitação da função

retorno = FcmMaster->FcmOpen(NumeroMaster);

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.

2.2.2 FcmClose

Finaliza todas as conexões estabelecidas através da função “FcmOpen”, também libera

todos os recursos utilizados pela FcmMaster.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 todas as FcmMaster

USB com conexão estabelecida com o Software Integrador.

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

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

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

FcmMaster->FcmClose();

Page 15: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.2.3 FcmSetNumSlaves

Informa a FcmMaster.dll, o número da placa Fcm Slave que está conectada na placa

Fcm Master USB. Esta função deve ser utilizada logo após o comando “FcmOpen”.

Sempre deverá ser passado como parâmetro o mesmo valor da função “FcmOpen”,

porém com uma conversão ou “cast” para o tipo inteiro. Ex.:

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

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

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

retorno = FcmMaster->FcmOpen(Master);

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

{

// Rotina para tratamento de erro.

return;

}

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

retorno = FcmMaster->FcmSetNumSlaves((int)Master);

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.

2.2.4 FcmConfiguraSlave

Informa à placa Fcm Slave o número de bombas lógicas que ela deverá gerenciar.

Esta função está obsoleta, portanto, foi criada uma nova função para atender melhor

às necessidades. Logo, a partir do componente FcmMasterX V 1.0.7, estas configurações

deverão ser efetuadas pela função FcmConfigConcentrador, que está descrita no próximo

tópico.

Page 16: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.2.5 FcmConfigConcentrador

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

modo de operação1 que a mesma deverá operar e também o formato2 de mensagem de

abastecimento que deverá ser enviada ao software integrador. 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 Fcm 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 Fcm 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.

Para configurar o Concentrador Fcm deveram ser passados como parâmetros o

número do Fcm Slave que se deseja configurar, o número de bombas lógicas da pista, o modo

de operação que o Concentrador Fcm deverá operar e também o tipo de mensagem de

abastecimento, o mesmo deverá enviar ao software integrador, conforme descrito no exemplo

de código abaixo.

O número de bicos existente em cada bomba lógica não necessita ser configurado,

pois o Concentrador Fcm precisa saber apenas o número de bomba que irá comunicar, sendo

o número do bico virá de acordo com o bico físico (mangueira) que efetuou o abastecimento.

Está função foi criada para substituir a função FcmConfiguraSlave, para melhorar a

disposição dos parâmetros e modo de operação. Assim é possível passar os parâmetros sem

maior complexidade em relação à função anterior.

Não é necessário configurar o número de bicos de cada bomba. Ex.:

1 - Modo de Operação. 2 - Formato Mensagem de Abastecimento.

Page 17: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

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

unsigned char Slave = 0; // Var com o número do FcmSlave;

unsigned char ModoOperacao = 0; // Var com o modo de operação escolhido. Em hex.

unsigned char Bomba = 0; // Var com o número de bombas existentes.

unsigned char FormatoMsgAbast= 0; // Var para o formato da Msg de abastecimento.

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

//-------------------- Solicitação da função FcmOpen -------------------------------

Master = 0x01; // Seleciona a FcmMaster desejada

retorno = FcmMaster->FcmOpen(Master);

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

{

// Rotina para tratamento de erro.

return;

}

//-------------------- Solicitação da função FcmSetNumSlaves -----------------------

Slave = Master;// Deverá ser o valor do FcmMaster do FcmOpen

retorno = FcmMaster->FcmSetNumSlaves((int)Slave);

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

{

// Rotina para tratamento de erro.

return;

}

//-------------------- Solicitação da função FcmConfigConcentradorFcm --------------

// Seleciona o Modo de Operação.

ModoOperacao = 0x0A; // Selecionando modo A

// Seleciona o Formato Msg de Abastecimento.

FormatoMsgAbast = 0x02;// Fixo 2 para retornar os dados do totalizador inicial

retorno = FcmMaster->FcmConfigConcentradorFcm(Slave,Bomba,ModoOperacao,FormatoMsgAbast);

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

{

// Rotina para tratamento de erro.

return;

}

// Se não ocorreu nenhum return a comunicação e configuração do Concentrador Fcm está

//pronta. Agora os status das bombas conectadas do concentrador e configuradas serão

//recebidos na função de retorno do objeto ActiveX3 FcmMaster OnMudancaDeEstado.

3 - OnMudancaDeEstado.

Page 18: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.2.6 FcmAutorizaAbastecimento

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

para abastecer, quando o Concentrador Fcm estiver configurado para operar no modo4 “B” ou

“C”. Quando o estado da bomba for “BOMBA_PEDE_AUTORIZACAO” 5, o envio deste comando

irá liberar a bomba para abastecer. Ex.:

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

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

//seja do endereço sl=1, bo=2, bi=1.

unsigned char Slave = 0x01; // Var com o número do Fcm Slave 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 = FcmMaster->FcmAutorizaAbastecimento(Slave,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.

2.2.7 FcmTravaBomba

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 comando6. Ex.:

unsigned char Slave = 0x01;// Var com o número do Fcm Slave 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.

retorno = FcmMaster->FcmTravaBomba(Slave,Bomba);// 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 - Modo de Operação do Concentrador Fcm. 5 - BOMBA_PEDE_AUTORIZACAO. 6 - DICAS PARA SOFTWARE INTEGRADOR.

Page 19: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.2.8 FcmDestravaBomba

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

comando “FcmTravaBomba”. Também possui a mesma particularidade. Descrição nota 5 do

item anterior. Ex.:

unsigned char Slave = 0x01; // Var com o número do Fcm Slave 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.

retorno = FcmMaster->FcmDestravaBomba(Slave,Bomba);// 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.9 FcmSolicitaPrecoPorLitro

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. Ex.:

unsigned char Slave = 0x01;// Var com o número do Fcm Slave 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 = FcmMaster->FcmSolicitaPrecoPorLitro(Slave,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.

Page 20: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.2.10 FcmTrocaPreco

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. Ex.:

unsigned char Slave = 0x01;// Var com o número do Fcm Slave 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 CD = 0x03; // Var com o número de casas decimais.

long Preco = 1290;// 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 = FcmMaster->FcmTrocaPreco(Slave,Bomba,Bico,Preco,CD);

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.

// Neste caso foi enviado para a bomba o Preço em R$: 1,290

2.2.11 FcmSolicitaUltimoAbastecimento

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

bomba, apesar do nome proporcionar outro entendimento. Porém já está em prática há

tempos, não sendo possível sua modificação sem alterar a CesnaActiveX.dll, o que não é

interessante por motivos já citados. Observe que a bomba irá informar o volume do último

abastecimento efetuado, independentemente de qual o bico que efetuou, ou seja, este valor

não indica qual bico o efetuou. Ex.:

unsigned char Slave = 0x01;// Var com o número do Fcm Slave 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 = FcmMaster->FcmSolicitaUltimoAbastecimento(Slave,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.

Page 21: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.2.12 FcmSolicitaTotalizador

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. Ex.:

unsigned char Slave = 0x01;// Var com o número do Fcm Slave 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 = FcmMaster->FcmSolicitaTotalizador(Slave,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.

2.2.13 FcmProgramaPrePago

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áximo7 permitido por abastecimento da Bomba, isso pode variar de

acordo com o fabricante. Ex.:

7 - Particularidades das Bombas.

Page 22: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

unsigned char Slave = 0x01;// Var com o número do Fcm Slave 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 CD = 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 ou não.

// Solicitação da função. Nesta, a var cd deve ser passada por referência.

retorno = FcmMaster-> FcmMaster->FcmProgramaPrePago(Slave,Bomba,Bico,Volume,&CD);

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.

// Neste caso foi enviado para a bomba o Volume em Litros: 10,000 -> 10 litros.

Page 23: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.2.14 FcmVersaoDLL

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

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

FcmMaster.dll interagindo com o Software Integrador. Ex.:

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

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

retorno = FcmMaster->FcmMaster->FcmVersaoFcmMaster();

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.15 FcmSolicitaVersaoSlave

Esta função pode ser utilizada quando se deseja obter a versão do Firmware da placa

Fcm Slave, assim podemos saber o tipo de bomba instalada no posto de combustível. Ex.:

unsigned char Slave = 0x01;// Var com o número do Fcm Slave da Solicitação.

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

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

retorno = FcmMaster-> FcmSolicitaVersaoSlave((int)Slave);

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.

Page 24: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.2.16 FcmObtemStatusBomba

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 Fcm Slave. Se o parâmetro “bo” for enviado

como zero, o Concentrador Fcm enviará o status de todas as bombas configuradas pelo último

envio do comando “FcmConfiguraSlave”.

O retorno desta solicitação virá pelo retorno do método “OnFcmMudancaDeEstado”.

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 à mesma retornará erro.

unsigned char Slave = 0x01;// Var com o número do Fcm Slave 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 de todas configuradas.

retorno = FcmMaster-> FcmObtemStatusBomba(Slave,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.17 FcmConfigTotalizador

Esta função somente é aceita e utilizável em Concentrador Fcm configurado para

Bomba Mecânica, com firmware na versão V 4.X.X ou superior. Será utilizada para configurar

os encerrantes iniciais em cada bomba mecânica no momento da instalação do Concentrador

Fcm. Conforme os abastecimentos são efetuados na referida bomba, o mesmo será somando

com o volume abastecido e enviado ao Software Integrador para impressão no cupom fiscal

(Exigência do PAF).

A configuração e verificação destas informações ficam a cargo do utilizador.

Bombas Mecânicas não possuem encerrantes eletrônicos, portanto o valor

configurado será somado com o valor de cada abastecimento da referida bomba. Se uma

discrepância for detectada entre o valor que está fisicamente na bomba e o valor que a

automação enviou, o mesmo deverá ser ajustado. Ficando a cargo do utilizador.

Como isso é uma determinação do órgão fiscalizador, esta função está disponível no

Concentrador Fcm.

Page 25: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

Este valor deverá ser enviado com duas casas decimais fixas sem vírgula.

Permanecendo a mesma configuração como se fosse uma bomba eletrônica.

unsigned char Slave = 0x01;// Var com o número do Fcm Slave da Solicitação.

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

long Total = 1234578;// Var que conterá o totalizador.

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

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

retorno = FcmMaster->FcmConfigTotalizador(Slave,Bomba,Total);//2 casas decimais fixas.

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

{

// Rotina para tratamento de erro.

return;

}

2.2.18 CmdEspecial

Está função foi elaborada para possível utilização futura, quando um comando

adicional for necessário para atender a especificação de alguma norma ou exigência.

Terá endereços como sl, bo, e bi. Como também parâmetros “codigo” que será o

código do novo comando implementado. Também três possíveis parâmetros param1, param2

e param3.

Como citado, esta função não está sendo utilizada no momento, mas será descrita

neste manual para caso de utilização futura já estar documentada.

// Função para utilização futura.

unsigned char Slave = 0x01;// Var com o número do Fcm Slave 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 Cod = 0x00;// Var para conter o código do futuro comando.

Long Param1 = 0x00;// Var para conter o parâmetro 1 do futuro comando.

Long Param2 = 0x00;// Var para conter o parâmetro 2 do futuro comando.

Long Param3 = 0x00;// Var para conter o parâmetro 3 do futuro comando.

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

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

retorno = FcmMaster->FcmCmdEspecial(Slave,Bomba,Bico,Cod,Param1,Param2,Param3);

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

{

// Rotina para tratamento de erro.

return;

}

Page 26: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.3 Retorno dos Métodos do Objeto ActiveX

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

FcmMaster.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 Fcm, podendo este entrar em modo de operação Off-Line e o Software

Integrador não receber os status das bombas em tempo real devido a este detalhe. 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.

2.3.1 OnFcmMudancaDeEstado

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

Slave (sl) 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.1.1 EVENTO_BOMBA_PRONTA

Indica que a referida Bomba (bo), conectada à Fcm Slave (sl) está pronta para efetuar

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

2.3.1.2 EVENTO_BOMBA_NAO_RESPONDE

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

conectada à Fcm Slave (sl), ou foi solicitado um comando enquanto o abastecimento estava

sendo efetuado. Dependendo da marca8 da Bomba ela pode responder ou não a este

comando.

8 - Particularidades das Bombas.

Page 27: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.3.1.3 BOMBA_PEDE_AUTORIZACAO

Indica que a referida Bomba (bo) conectada à Fcm Slave (sl) está pedindo autorização

para iniciar um abastecimento. Para liberar a mesma a executar a solicitação, deve-se utilizar a

função “FcmAutorizaAbastecimento”, 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.1.4 BOMBA_LIBERADA

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

2.3.1.5 BOMBA_ABASTECENDO

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

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

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

neste modo.

2.3.1.6 BOMBA_ABASTECEU

Indica que a referida Bomba (bo) e Bico (bico), conectadas à Fcm Slave (sl) finalizou o

abastecimento. Os dados do mesmo serão obtido na função “OnFcmAbasteceu” do objeto

ActiveX, descrito adiante.

2.3.1.7 BOMBA_BLOQUEADA

Indica que a referida Bomba (bo), conectada à Fcm Slave (sl) está em modo de

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

2.3.1.8 BOMBA_DESBLOQUEADA

Indica que a referida Bomba (bo), conectada à Fcm Slave (sl) saiu do modo bloqueio.

9 - Particularidades das Bombas Gilbarco. 10 - Particularidades das Bombas Gilbarco.

Page 28: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.3.1.9 CONSENTRADOR_ACEITOU_CONFIGURACAO

Indica que a referida Fcm Slave (sl) aceitou a configuração enviada pelo Software

Integrador.

2.3.1.10 BOMBA_TROCOU_PRECO

Indica que a referida Bomba (bo) e Bico (bi), conectadas à Fcm Slave (sl) aceitou a novo

valor de Preço por Litro enviado pela função “FcmTrocaPreco”.

2.3.1.11 BOMBA_RESERVADA_PRE_PAGO

Indica que a referida Bomba (bo) e Bico (bi), conectadas à Fcm Slave (sl) recebeu com

sucesso a solicitação da função “FcmProgramaPrePago” descrita anteriormente.

2.3.1.12 FALHA_NA_COMUNICACAO_COM_CONSENTRADOR

Indica que a referida Fcm Slave (sl) está com problemas de comunicação com a Fcm

Master USB. Isso pode ocorre devido a mau contato no cabo de comunicação entre as duas

placas, ou um erro na interface USB do PC.

Page 29: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.3.2 OnFcmTotalizador

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

possível obter o valor do totalizador de volume da referida Bomba (bo) e Bico (bi) conectadas à

Fcm Slave (sl).

É 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çossl = xbo = ybi = z

Limpa FlagTotalizador.e

FcmSolicitaTotalizador(sl,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.

Onde:

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

função “OnFcmTotalizador”, 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:

Page 30: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

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

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

void __fastcall TFrmMain::FcmMasterTotalizador(TObject *Sender, unsigned_char sl,

unsigned_char bo, unsigned_char bi, long total, unsigned_char cd)

{

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(total,TmpTotal,10);// ltoa -> Converte de ‘long’ para ‘char’

strcpy(RespTotal,TmpTotal);

switch(cdtot)

{

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, como é normalmente.

}

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 Fcm Slave. Com isso a solicitação

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

do PDV.

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

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

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

Atenção: A Fcm Slave para Bomba Mecânica12 envia o totalizador igual à zero.

11 - Analisar Funcionamento das Bombas. 12 - Particularidades Bomba Mecânicas.

Page 31: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.3.3 OnFcmVolume

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

com esta é possível obter o último volume vendido na referida Bomba (bo), conectada à Fcm

Slave (sl).

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

void __fastcall TFmrFcmMaster::FcmMaster1Volume(TObject *Sender, unsigned_char

sl,unsigned_char bo, unsigned_char bi, long vol, unsigned_char cd)

{

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(vol,TmpVol,10);

strcpy(RespVol,TmpVol);

switch(cd)

{

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 vamos ter o dados recebidos já separados e com vírgula na Var RespVol.

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

}

Page 32: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.3.4 OnFcmPrecoPorLitro

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

é possível conferir se o Preço por Litro das Bombas (bo) e Bicos (bi) conectadas à Fcm Slave (sl)

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 “FcmTrocaPreco”. Ex.:

INÍCIOAltera Preço

Carrega Endereçossl = Xbo = Ybi = Z

Preco = xxxxcd = 3

Zera contador de erro

FcmTrocaPreco(sl,bl,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

EFcmSolicitaPrecoPorLitro(sl,bl,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

Page 33: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

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

unsigned char FlagPreco;// Var global para indicador

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

void __fastcall TFmrFcmMaster::FcmMaster1PrecoPorLitro(TObject *Sender, unsigned_char

sl, unsigned_char bo, unsigned_char bi, long ppl, unsigned_char cd)

{

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(ppl,TmpPpl,10); // conversão long para char

strcpy(RespPpl,TmpPpl); // copia string

switch(cd)

{

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 setamos a ‘FlagPreco’ indicando para a função que solicitou o

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

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

//Ex.: R$ 1,234 com cd igual a 3, como é normalmente.

}

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

respeito de primeiro receber um valor antes de solicitar o próximo, ou aguardar o timeout de 5

segundos.

Atenção: A Fcm Slave para Bomba Mecânica13 envia o preço por litro é igual à zero.

13 - Particularidades de Bombas Mecânicas.

Page 34: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.3.5 OnFcmAbasteceu

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

ao Concentrador Fcm 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 e

Data deste abastecimento. Logo foi necessário a inclusão de uma nova função no componente

ActiveX CesnaActiveX.dll para atender esta solicitação.

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 do método OnFcmAbasteceu, é acionado quando o formato de mensagem

de abastecimento configurado no Concentrador Fcm pelo comando FcmConfigConcentrador,

for “0x02”. Isso indica que a referida Bomba (bo) e Bico (bi), conectadas à Fcm Slave (sl),

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 novo método é fazer o software integrador receber os dados dos

abastecimentos efetuados independentemente se este abastecimento é OnLine ou Off-Line,

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

também atender as solicitações do PAF-ECF como descrito anteriormente.

Page 35: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

Exemplo de como obter os dados formatados:

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'};// Auxiliar resposta.

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

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

int count = 0;// Contador auxiliar

int index = 0;// Contador auxiliar 2

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

ltoa(vol,TmpVol,10);

strcpy(RespVol,TmpVol);

switch(cdvol)

{

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(total_ini,TmpTotIni,10);

strcpy(RespTotIni,TmpTotIni);

switch(cdtot_ini)

{

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;

}

Page 36: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

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

ltoa(total_final,TmpTotFim,10);

strcpy(RespTotFim,TmpTotFim);

switch(cdtot_final)

{

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(ppl,TmpPpl,10);

strcpy(RespPpl,TmpPpl);

switch(cdppl)

{

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_min_seg,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(dia_mes_ano,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.

Page 37: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.3.6 OnFcmVersaoFcmSlave

É acionado em resposta a solicitação da função “FcmSolicitaVersaoSlave”.

Normalmente é utilizado para identificar o tipo de Bomba (bo) conectada a FcmSlave (sl),

também a versão do firmware da placa Fcm Slave. Facilitando assim o controle de suporte ou

funções específicas para determinado modelo e marca de bomba.

A variável de resposta “versao” do tipo “long” deve ser analisada de acordo com seu

comprimento, se a mesma contiver quatro dígitos, o primeiro indicará o tipo de bomba. Se

contiver cinco dígitos, os dois primeiros indicaram o tipo de bomba que o firmware está

preparado para controlar.

Exemplo:

Pode ser “4 dígitos: BSVR” ou “5 dígitos: BBSVR”

Onde:

B: Indica o modelo da Bomba (bo) conectada à Fcm Slave (sl).

S: Modelo do Firmware da Fcm Slave.

V: Versão do Firmware da Fcm Slave.

R: Revisão do Firmware da Fcm Slave.

Os modelos disponíveis são:

Indicador Tipo de Bomba Indicador Tipo de Bomba

0 NÃO USADO 9 Wayne Duplex – Minnow

1 Gilbarco 10 Mecânica Veeder

2 Wayne Duplex 11 Mecânica Pulser Eletrônico

3 Wayne Rifran 12 Wayne 3G – Minnow

4 Aspro Develco 13 Aspro Metroval

5 Simulador Cesna 14 Mecânica Polipetro

6 Mecânica Bolachão 15 Stratema

7 Wayne Minnow 16 RESERVADO

8 Wayne 3G 17 RESERVADO

Tabela 1 - Modelo de Bombas no retorno Versão Fcm Slave.

Page 38: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.3.7 OnFcmErroDLL

É acionado quando ocorre um erro no processo da FcmMaster.dll. O erro será

informado neste evento. Não é comum este evento ser acionado, porém as causas podem ser:

2.3.7.1 ERRO “20” - MM_EVENTO_ERRO_LRC

Indica que houve um erro de comunicação entre as placas Fcm Master USB e Fcm

Slave. A conferência da mensagem não correspondeu ao número enviado pela Fcm Slave.

2.3.7.2 ERRO “21” – MM_EVENTO_MASTER_ERRO_PRT

Indica que houve um erro no protocolo de comunicação entre a FcmMaster.dll e a

placa Fcm Slave.

2.3.7.3 ERRO “22” – MM_EVENTO_MASTER_FINALIZOU

Indica que a FcmMaster.dll finalizou seu funcionamento, liberando assim todos os

recursos utilizados pela mesma. Isso pode ocorrer se um comando for enviado após o

“FcmClose”.

2.3.7.4 ERRO “23” – SAIDA_EVENT OCORREU TIMEOUT

Indica que o processo da FcmMaster.dll travou. Isso normalmente acontece se a

função do objeto ActiveX não é retornada. Também pode ocorrer se existiu um problema com

alguma função do Driver da placa Fcm Master USB, o mesmo não retornou uma função

solicitada.

Observação:

Se este tipo de evento for acionado via Objeto ActiveX, os parâmetros de integração

deveram ser analisado. Relembrar as observações indicadas nos itens anteriores deste manual.

Se o problema ainda persistir, deverá solicitar informações ao Suporte Cesna.

Page 39: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

2.3.8 OnFcmEventoFcmSlave

Indica se o Concentrador Fcm executou em sua rotina de funcionamento um ajuste ou

correção em determinado ponto na execução do seu programa. Função utilizada somente pela

Cesna Technology.

2.3.9 OnRetornoEspecial

Indica a resposta ao comando “CmdEspecial”, para utilização futura. Serão retornado

os parâmetros sl,bo,bi,código,param1,param2 e param3.

Page 40: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

3 DESCRIÇÃO FCMMASTER.DLL

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

da placa Fcm Master USB recebidos da placa Fcm Slave. 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 Fcm Master. Este é instalado junto com o Gerenciador Fcm 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 FcmMaster.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 FcmMaster.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.

Esta FcmMaster.dll está distribuída em 5 versões.

V 2.X.X.X : Comunica com firmware da placa Fcm Slave V 2.X.X.

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

V 4.X.X.X : Comunica com firmware da placa Fcm Slave V 4.X.X.

V 5.X.X.X : Comunica com firmware da placa Fcm Slave V 5.X.X.

V 6.X.X.X : Comunica com firmware da placa Fcm Slave V 6.X.X.

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

o instalador do software Gerenciador Fcm, será instalada a FcmMaster.dll V 6.X.X.X. Porém o

arquivo “IntegracaoCesna.zip” contem todos os 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.

Page 41: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

4 CONCENTRADOR FCM

O hardware Concentrador Fcm de Bombas de Combustível, como previamente citado

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

Fcm Slave, Fonte Fcm e acessórios. Este periférico 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.

4.1 Descrição de Funcionamento

INÍCIOSolicitado para a CesnaActiveX.dll

o Cmd FcmOpen

Dados são relevantes ao Software Integrador?

Existe Fcm Master USB conectada ao PC?

SE VERDADEIROEnvia dados ao

Software Integrador.

SE VERDADEIROExecuta rotina de configuração

da Fcm Master USB e Fcm Slave.

FcmMaster.dll Recebe solcitação do FcmOpen

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 Fcm.

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

Page 42: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

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

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

FcmMaster.dll. Logo esta irá configurar os parâmetros de comunicação com a Fcm Master 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 Fcm Slave utilizando um protocolo próprio de uso interno

da Cesna Technology.

Após a placa Fcm Slave receber as configurações necessárias, a mesma inicia o

processo de gerenciamento das bombas de combustível a ela conectadas. Todas as vezes que

a(s) bomba(s) de combustível alterar seu estado, o mesmo será enviado ao Software

Integrador via os retorno dos métodos do objeto AcitiveX.

Agora vamos descrever algumas opções e particularidades de funcionamento.

4.1.1 Modo On-Line

É a condição normal de funcionamento do Concentrador Fcm 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 Fcm não estiver com a comunicação estabelecida

com o computador onde estiver conectado ele continuará gerenciando as bombas de

combustível a ele conectado. 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 mesmo estiver

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

Quando a comunicação com o computador for reestabelecida, estes abastecimentos

serão enviados ao Software Integrador.

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

configuração será a mesma enviada no comando “FcmConfiguraSlave” citada no item 2.2.4. 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

Page 43: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

Concentrador Fcm estiver desligado e as bombas estiverem em modo remoto, não irão efetuar

novos abastecimentos.

4.1.3 Modo de Operação do Concentrador Fcm

Todas as vezes que as Bombas de combustível (bo) conectadas à Fcm Slave (sl) 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 Fcm. Este

por sua vez poderá operar de três formas diferentes.

São elas:

A – O Concentrador Fcm 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 Fcm irá liberar a bomba de combustível para iniciar um

abastecimento, somente após a confirmação do Software Integrador. Porém se o

mesmo entrar em modo Off-Line irá liberar os abastecimentos e armazená-los.

C – O concentrador irá liberar a bomba de combustível para abastecer, somente após

receber autorização do Software Integrador. Se o mesmo estiver em modo Off-Line,

não irá liberar a bomba para iniciar o abastecimento. Porém se abastecimentos

estiverem em curso e o Concentrador Fcm entrar em modo Off-Line, estes serão

armazenados e enviados ao Software Integrador após a comunicação ser

reestabelecida.

Observação:

Se o posto de combustível não requerer um funcionamento diferenciado de suas

bombas, recomendamos configurar o Concentrador Fcm com o modo de operação “A”, assim

as bombas irão liberar mais rapidamente. A diferença está em não necessitar pedir autorização

para o Software Integrador, a bomba será liberada assim que a solicitação for identificada.

Page 44: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

4.1.4 Formato Mensagem de Abastecimento

O formato da mensagem, para as novas integrações deverá ser fixado como “2” para

que o concentrador sempre envie a informação do totalizador inicial do abastecimento,

atendendo assim as exigências do PAF-ECF.

O formato “2” contém o FcmSlave (sl), Bomba (bo), Bico (bi), Volume, Totalizador de

Volume Inicial, Totalizador de Volume Final, Preço por Litro, Hora e Data em todo

abastecimento efetuado pela Bomba (bo) e Bico (bi) conectadas à respectiva FcmSlave (sl).

Este modo deverá ser configurado após o comando FcmOpen efetuado com sucesso,

pela função FcmConfigConcentrador seguindo a sequência descrita no tópico relacionado,

sendo independente em cada Concentrador Fcm, ou seja, o mesmo deve ser configurado em

cada Concentrador Fcm que está operando com o Software Integrador, conectados ao PC.

Page 45: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

5 OBESERVAÇÕ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.

Page 46: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

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 7, 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 até 16. Em um posto de combustível

raramente existirá um endereço configurado no Concentrador Fcm sem bomba lógica

correspondente, logo, o instalador é instruído a não deixar endereços vagos. Isso é

recomendado pois se o Concentrador Fcm 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.

Page 47: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

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.

Recomendamos que em caso de utilização de automação para Bombas Mecânicas,

onde não é possível obter nenhum valor além do volume abastecido devido ao sensor

instalado para esta captura, o primeiro tópico deste item seja estudado com muita atenção.

Informamos também que o Concentrador Fcm 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 Mecânica

Este é um modelo antigo, porém ainda existe no mercado. Possui um bloco

volumétrico mecânico, ou seja, sem qualquer tipo de controle eletrônico. A solução para este

tipo de bomba é utilizar um acessório chamado Pulser (Emissor de Pulsos), para capturar o

volume do abastecimento, podendo ser do modelo Bolachão ou Veeder Root.

Outro detalhe é a precisão do volume abastecido, se o Pulser e a bomba não estiverem

bem regulados, podem ocorre pequenas diferenças, ficando a cargo do mecânico de bombas o

ajuste mecânico da referida bomba.

Neste modelo de bomba, sendo o Concentrador Fcm versão 4.X.X, deverá ser

configurado no Concentrador Fcm o encerrante de cada bomba a ele conectado no momento

da instalação. Ao valor configurado será somado o volume obtido pela captura dos pulsos de

cada abastecimento efetuado na referida bomba e enviado ao Software Integrador como o

parâmetro de encerrante da bomba. Não sendo responsabilidade da Cesna a manutenção

correta destes dados, ficando a cargo do utilizador do hardware. A Cesna apenas disponibiliza

esta função para utilização seguindo recomendações do PAF (Programa de Aplicativo Fiscal).

Page 48: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

Também neste modelo de bomba o preço por litro de cada abastecimento virá com

valor zero, sendo possível somente obter o volume de acordo com os pulsos do abastecimento

e o encerrante pela soma do valor configurado com o volume de cada abastecimento.

Funções não Suportadas: Firmware V 2.X.X

Solicita Totalizador.

Solicita Preço por Litro.

Troca Preço por Litro.

Autoriza Abastecimento14.

Trava e Destrava14.

Abastecimento Pré-Pago14.

Funções não Suportadas: Firmware V 4.X.X

Solicita Preço por Litro.

Troca Preço por Litro.

Autoriza Abastecimento15.

Trava e Destrava14.

Abastecimento Pré-Pago14.

14 Suportados e disponíveis somente em versões Marítimo e Caminhão Tanque. 15 Suportados e disponíveis somente em versões Marítimo e Caminhão Tanque.

Page 49: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

5.2.2 Wayne

Todos os modelos de bombas Wayne aqui relacionados enviam em tempo de

abastecimento, ou seja, em “BOMBA_ABASTECENDO”, dados de totalizadores, Preço por Litro

e Volume.

Quando a bomba estiver no estado “MM EVENTO BOMBA_ABASTECENDO”:

Se solicitado a função “FcmSolicitaUltimoAbastecimento”, 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 “FcmSolicitaTotalizador”, 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 “FcmTravaBomba”, irá interromper imediatamente a saída de

combustível pelo bico da bomba. Permanecendo neste estado, até que o comando

“FcmDestravaBomba” seja recebido. Somente em bombas que suportam esta opção.

5.2.2.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.

Page 50: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

5.2.2.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.2.3 Wayne Duplex

Esta é uma versão posterior a Wayne Rifran. Suporta todas as funções.

5.2.2.4 Wayne 3G

Esta é a bomba da marca Wayne mais atual. Suporta todas as funções.

5.2.3 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,

“EVENTO_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

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 SL_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 Fcm.

Page 51: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

Quando a bomba estiver no estado “MM EVENTO BOMBA_ABASTECENDO”:

Se solicitado a função “FcmSolicitaUltimoAbastecimento”, “FcmSolicitaTotalizador” ou

“FcmSolicitaPrecoPorLitro”, este modelo de bomba não irá responder aos comandos

solicitados neste modo abastecendo. Logo irá retornar na função

“OnFcmMudancaDeEstado”, “EVENTO_BOMBA_NAO_RESPONDE”.

Se solicitado a função “FcmTravaBomba”, 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 e pedirá autorização ao Software Integrador para abastecimento. Se o

mesmo estiver configurado para modo de operação B ou C. Se o comando autoriza

“FcmAutorizaAbastecimento” for enviado pelo Software Integrador a bomba irá

retornar a liberar combustível pelo referente bico.

Se o comando “FcmAutorizaAbastecimento” for enviado para a bomba a mesma

permanecerá em modo liberada “BOMBA_LIBERADA_PARA_ABASTECER”, neste modo

ela também não aceita nenhum comando. Sendo que se desejar cancelar a liberação, o

comando “FcmTravaBomba” deverá ser enviado, com isso a bomba retornará ao

estado “EVENTO_BOMBA_PRONTA”, logo aceitará qualquer comando.

5.2.4 Bomba Stratema

Esta bomba possui as mesmas observações da bomba Gilbarco, porém ao chamar o

comando “FcmTravaBomba”, se esta estiver em modo abastecendo, irá travar a bomba e será

necessário enviar o comando “FcmDestravaBomba” para a mesma voltar a liberar combustível.

5.2.5 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).

Page 52: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

6 DICAS PARA SOFTWARE INTEGRADOR

6.1 Iniciando a Comunicação com o Concentrador Fcm

É necessário utilizar alguns pequenos atrasos de tempo (delay) nos comandos enviados

a CesnaActiveX.dll, para que todo o processo de inicialização e configuração do hardware

ocorra com sucesso.

Recomendamos que este delay seja de pelo menos 500ms. Os comandos abaixo

deverão ser executados nesta ordem.

Pontos onde é recomendável a utilização de “delay”:

FcmMaster1->FcmOpen(1).

FcmMaster1->FcmSetNumSlaves(1).

FcmMaster1->FcmConfigConcentrador(1,Núm de Bombas, Modo Operação, FormatoMsgAbast).

delay().

FcmMaster1->FcmOpen(2).

FcmMaster1->FcmSetNumSlaves(2).

FcmMaster1->FcmConfigConcentrador(2,Núm de Bombas, Modo Operação, FormatoMsgAbast).

delay().

FcmMaster1->FcmOpen(3).

FcmMaster1->FcmSetNumSlaves(3).

FcmMaster1->FcmConfigConcentrador(3,Núm de Bombas, Modo Operação, FormatoMsgAbast).

delay().

Obs.: A forma de como os comandos devem ser chamados e tratados, estão na seção

FcmConfigConcentradorFcm.

6.2 Solicitação de Encerrantes

Conforme descrito na seção FcmSolicitaTotalizador, deverá primeiro receber a

resposta do comando anterior, para após solicitar o comando a outra bomba. Ex.:

Bomba 1:

CMD SOLICITA TOTALIZADOR SL_BO_BI 1011

MM_EVENTO_BOMBA_ENVIOU_TOTAL SL_BO_BI 1011 LPARAM XXXXXXXX

Bomba 2:

CMD SOLICITA TOTALIZADOR SL_BO_BI 1021

MM_EVENTO_BOMBA_ENVIOU_TOTAL SL_BO_BI 1021 LPARAM XXXXXXXX

Page 53: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

6.3 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 Fcm. 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.

O grande detalhe é que 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.

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 Fcm, 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.

Page 54: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

6.4 Autorização Automática

Quando o Concentrador Fcm operar em modo de operação B ou C, todas as vezes que

se desejar efetuar um abastecimento, a respectiva bomba irá solicitar autorização para iniciar

o referido abastecimento para o Concentrador Fcm e o mesmo ao Software Integrador.

É possível enviar o comando “FcmAutorizaAbastecimento” antes mesmo da bomba

solicitar, logo 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 Fcm, 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 “FcmTravaBomba”

para a mesma voltar para o estado de “BOMBA_PRONTA”.

6.5 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

valores de FcmSlave (sl), 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 Fcm

Nº do Bico na Pista Fcm Slave (sl) Bomba (bo) Bico (bi)

Bico 1 1 01 1

Bico 2 1 01 2

Bico 3 1 02 1

Bico 4 2 01 1

... ... ... ...

Bico n N nn n

Tabela 2 - Bicos de Abastecimento

Page 55: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

6.6 Atualização do Componente CesnaActiveX.dll

Esta dica servirá para clientes que já possuem o Software Integrador integrado com o

Concentrador Fcm, e informa o reduzido impacto de software para atualização.

Primeiro o componente FcmMasterX.dll anterior deverá ser desinstalado, assim como

o software FcmTeste ou Gerenciador Fcm anterior. Na pasta do sistema não deverão existir

nenhum arquivo FcmMaster.dll, CesnaActiveX.dll ou CesnaActiveX.ocx, que devem ser

removidos com a desinstalação do software FcmTeste ou Gerenciador Fcm. Caso isso não

ocorra verifique se o software foi removido corretamente, se ainda permanecer exclua os

arquivos.

Após os componentes e softwares anteriores removidos, deverá ser instalado o novo

componente, para isso instale o software Gerenciador Fcm que está contido no arquivo

“IntegracaoCesna.zip”, baixado do site da Cesna Technology na área de download restrito,

atualizado.

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.

Page 56: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

Para 64 bits:

Figura 8 - Registro em Windows 64 bits.

Para atualização em campo, o software FcmTeste ou Gerenciador Cesna deverá ser

desinstalado, dependendo do qual houver instalado. A versão atualizada deverá ser pega no

site da Cesna Technology no arquivo “instaladores.zip” (senha para descompactação: activex).

E ao instalar o software Gerenciador Cesna atualizado deve-se selecionar a FcmMaster.dll de

acordo com a versão do firmware da placa Fcm Slave.

Após estes passos deve-se abrir o Gerenciador Fcm e testar a comunicação com o

hardware Concentrador Fcm.

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.

Page 57: A Y - central.netsof.com.brcentral.netsof.com.br/baixar/CESNA/Manuais/Manual_Desenvolvedores... · programação: Visual Basic; Delphi; C++. A CESNA TECHNOLOGY fornece este material

Cesna Technology | 2011

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.