1. Introdução
1.1 Protocolo DBD-Paralelo - O protocolo de comunicações por serial (entendendo por DBD a placa de controle principal instalada nos bloqueios) é do tipo DBD-Paralelo onde:
O DBD envia comandos ao Paralelo.
O Validador Paralelo responde de forma quase imediata aos mesmos.
A comunicação nunca será iniciada pelo Validador Paralelo: sempre é o DBD quem envia o comando e o Validador Paralelo quem responde.
1.2 Parametros de Comunicação
Velocidade: 115200
StopBits: 1
Paridade: Sem paridade / Propomos utilizar paridade impar.
StartBit: 1
2. Comandos DBD > Validador Paralelo
Comando ID Descrição Comando Dados Comando Dados Resposta
CMD_RESET 0 Reinicia o equipamento (ao conectar o DBD ou depois do erro). - -
CMD_SET_CONFIG 1 Estabele configuração do Validador Paralelo CFG_DATA -
CMD_GET_CONFIG 2 Comprovar configurações atuais - CFG_DATA
CMD_ENABLE 3 Habilita o Validador Paralelo - -
CMD_DISABLE 4 Desabilita o Validador Paralelo - -
CMD_PROCESS_CARD 5 Processa cartão sem contato - CARD_DATA
3. Formato de Comandos e Respostas
Estrutura do comando:
STX | Command | Nnn | Data | XOR | ETX
Estrutura da resposta para comando correto:
STX | Command | Status | Nnn | Data | XOR | ETX
Estrutura da resposta para comando errado ou com XOR incorreto:
STX | NAK | Status | XOR | ETX
Onde:
Command (1 byte): ldentificados do comando (ver tabela).
Nnn (3 bytes): Comprimento dos dados do comando (000 caso não possua dados).
Data (Nnn bytes): Tramas de dados associadas ao comando e/ou a resposta (são detalhadas à seguir).
Status (1 byte): Estado atual do validador paralelo (são detalhadas à seguir).
• STATUS_NO_CONFIG (0)
• STATUS_ENABLED (1)
• STATUS_DISABLED (2)
• STATUS_CARD_READED (3)
• STATUS_CARD_ACCEPTED (4)
• STATUS_CARD_ERROR (5)
XOR (1 byte): São realizados sobre os dados "sombreados".
4. Trama de dados
Os dados sempre são representados em formato ASCII ('0' -'9'). As tramas possíveis são:
4.1 CFG_DATA
N N | L L | E E | V V | B B | S | T T T T | S S S S S S S S S S |
NNLLEEVVBB: identificador único do bloqueio
• NN: ID do sistema (sempre "00").
• LL: ID de linha (sempre "00").
• EE: ID da estação.
• VV: ID da linha de bloqueio.
• BB: ID do bloqueio.
S: sentido da passagem (entrada, saída): sempre "0".
TTTT: timeout em milésimos de segundo.
SSSSSSSSSS (10 bytes): número de série do validador paralelo
Somente são enviados em Dados Resposta. Em Dados Comando vão em branco.
4.2 CARD_DATA
R | S S S S S S S S S S | C C | F F | O O |
lnformação incluída em um cartão correto (processado ou não):
R: VALIDATION_RESULT (1 byte): indica o resultado do processo de validação do cartão.
• 0: CARD_ACCEPTED.
• 1: CARD_NOT_ACCEPTED.
• 2: NO_CARD (o resto dos dados aparecerá com zeros).
• 3: CARD_ERROR (o resto dos dados aparecerá com zeros).
SSSSSSSSSS: SER_NUM_CARD (10 bytes): Número de série do cartão Validador Paralelo.
CC: CARD_TYPE (2 byte): Tipo de cartão.
FF: FARE_ TYPE (2 byte): Tipo de tarifa.
00: OPERATOR_TYPE (2 byte): Tipo de operador.
5. Controle de erros
Caso um comando enviado pelo DBD não seja recebido pelo validador paralelo (comando foi perdido) ou for recebido de forma errada (XOR errado) e o validador paralelo tenha devolvido NAK, este pode voltar a reenviar (re-tentativa) N vezes e finalmente realizar um reset.
Caso o comando tiver sido recebido, porém a resposta se perdeu, deve se ter em conta que o validador paralelo já o processou. Caso o DBD envie uma mensagem repetida (por não ter recebido retorno do validador paralelo), a resposta do validador paralelo deverá ser a mesma resposta anterior, mesmo que nenhuma nova ação seja feita. Ou seja, há um reenvio da mensagem anterior, do validador paralelo para o DBD.
6. Estados Validador Paralelo
O validador paralelo pode estar em um dos seguinte cinco estados:
Sem configurar (STATUS_NO_CONFIG): Estado inicial de autômato do validador paralelo depois do inicio ou reset. Deve receber um comando CMD_SET_CONFIG para poder passar para STATUS_DISABLED.
Desabilitado (STATUS_DISABLED): Não aceita leitura de cartões.
Habilitado (STATUS_ENABLED): Aceita a leitura de cartões.
Cartão lido (STATUS_CARD_READED): Cartão lido à espera de confirmação desde o DBD. O validador paralelo passa para este estado desde STATUS_ENABLED ao ler um cartão. Os dados (saldo ou similar) do cartão ainda não foram modificados pelo validador paralelo.
Cartão aceito (STATUS_CARD_ACCEPTED): Cartão lido e processado. O validador paralelo passa para este estado depois de receber a ordem do DBD para que processe o cartão lido e o comando ter sido realizado de forma correta. O DBD registrará o trânsito usando como data e hora a própria do DBD, habilitará o giro do bloqueio e esperará o mesmo. Depois do giro (ou o timeout, caso no qual registrará uma incidência) o DBD desabilitará (e se procede habilitará) o validador paralelo.
Cartão rejeitado (STATUS_CARD_ERROR): Cartão lido e rejeitado. O validador paralelo passa para este estado depois de receber a ordem do DBD para que processe o cartão lido e o comando não ter sido realizado de forma correta (formato incorreto, saldo insuficiente, etc. ). O DBD, alguns segundos depois de registrar a incidência correspondente, (tempo necessário para que o usuário leia o display) desabilitará (e se procede habilitará) o validador paralelo.
Nota:
Em qualquer dos estados anteriores o DBD pode receber um comando:
CMD_RESET
CMD_GET_CONFIG
Caso receba algum dos seguintes comandos quando não é esperado, devolverá o estado atual e não realizará nenhuma mudança:
CMD_CONFIG
CMD_ENABLE
CMD_DISABLE
CMD_PROCESS_CARD
Os textos a serem visualizados no display são orientativos (também podem ser utilizados leds).
6.1 STATUS_NO_CONFIG
Estado:
Texto do tipo "NÃO PASSAR CARTÃO"
Não aceita a leitura de cartões
Comandos a partir do DBD que implicam mudanças:
Comando CMD_CONFIG:
Se a configuração é correta devolve STATUS_DISABLED
Em caso contrário, devolve STATUS_NO_CONFIG
6.2 STATUS_DISABLED
Estado:
Texto do tipo "NÃO PASSAR CARTÃO"
Não aceita a leitura de cartões
Comandos a partir do DBD que implicam mudanças:
Comando CMD_ENABLE:
Caso o consiga devolve STATUS_ENABLED
Caso não o consiga devolve STATUS_NO_CONFIG e executa um reset.
6.3 STATUS_ENABLED
Estado:
Texto do tipo "PASSE O CARTÃO".
Aceita a leitura de cartões.
Caso leia um cartão, seja ou não errado guarda seus dados e passa a STATUS_CARD_READED.
TIMEOUT: passa a STATUS_DISABLED
Comandos a partir do DBD que implicam mudanças:
Comando CMD_DISABLED:
Caso o consiga devolve STATUS_DISABLED
Caso não o consiga devolve STATUS_NO_CONFIG e executa um reset.
6.4 STATUS_CARD_READED
Estado:
Texto do tipo "ESPERE"
Não aceita a leitura de cartões
TIMEOUT: não processa o cartão e passa ao STATUS_DISABLED
Comandos a partir do DBD que implicam mudanças:
Comando CMD_PROCESS_CARD
Caso seja processado corretamente, passa para STATUS_CARD_ACCEPTED
Caso exista erro, passa para STATUS_CARD_ERROR
6.5 STATUS_CARD_ACCEPTED
Estado:
Texto do tipo "PODE PASSAR"
Não aceita a leitura de cartões
TIMEOUT: passa para STATUS_DISABLED
Comandos a partir do DBD que implicam mudanças:
Comando CMD_DISABLED
Caso o consiga devolve STATUS_DISABLED
Caso não o consiga devolve STATUS_NO_CONFIG e executa um reset
6.6 STATUS_CARD_ERROR
Estado externo:
Texto do tipo "CARTÃO INVÁLIDO"
Não aceita a leitura de cartões.
TIMEOUT: passa para STATUS_DISABLED
Comandos a partir do DBD que realizam operações:
Comando CMD_DISABLED
Caso o consiga devolve STATUS_DISABLED
Caso não o consiga devolve STATUS_NO_CONFIG e executa um reset
Diagrama de estados do validador paralelo