Este repositório implementa a comunicação convencional leitor-medidor contida na norma ABNT NBR 14522 do ponto de vista do leitor.
O propósito desta biblioteca é fornecer uma implementação portável e compatível com sistemas embarcados e microcontrolados bem como com qualquer outro sistema de propósito geral.
A classe genérica LeitorFSM implementa o leitor da comunicação convencional. Tal classe tem duas dependências (ou policies):
- TimerPolicy: interface que define verificação de alarmes/timeout
- SerialPolicy: interface que define transmissão e recepção de dados de uma porta serial (ou qualquer outra porta, desde que respeite essa interface)
Assim, para extender essa biblioteca para outros microcontroladores, ambientes
e/ou sistemas, deve-se implementar as duas dependências/policies e passá-la como
parâmetro à classe genérica LeitorFSM. Novas policies de timer e serial
podem ser adicionadas às pastas {include,src}/{serial,timer}/
e aplicações à
pasta app/
. Respectivos ajustes ao arquivo CMakeLists.txt
serão necessários
para compilar a nova aplicação. Além disso, sugere-se adicionar um arquivo de
toolchain do cmake na pasta cmake/
para compilar para outra plataforma. O
arquivo cmake/TC-raspberry.cmake
contém um exemplo funcional e testado de
toolchain (Leia os comentários do arquivo cmake/TC-raspberry.cmake
para
orientações sobre arquivos toolchains do cmake).
Atualmente o repositório contém somente policies para aplicações Windows e
Unix-like. Veja a aplicação app/leitor-cli
para um exemplo funcional e testado
em um Raspberry.
Primeiramente é necessário ter o cmake instalado. Então, uma vez dentro do repositório do projeto, execute:
mkdir build
cd build
cmake ..
make
Se não houver nenhum erro, os arquivos compilados estarão na pasta build. Por exemplo, o binário da aplicação leitor-cli estará em build/apps/leitor-cli/leitor-cli (obs.: execute o binário leitor-cli para mais informações em como usar a aplicação.)
...
A estrutura e organização de arquivos e do sistema de compilação CMake foram baseados no repositório https://github.com/bsamseth/cpp-project
Os arquivos src/serial/win_unix/serialib.cpp
e include/serial/serialib.h
foram pegos do repositório https://github.com/imabot2/serialib para a leitura da
porta serial no Windows e Unix-like.
Veja o arquivo LICENSE
.