Raspberry

Arquivo ini e parâmetros por linha de comando (dicas 2)

Domótica - MQTT e Raspberry - servidor NTP no Raspberry

Dando continuidade à série de dicas para programar em C++ no Raspberry, vamos ver mais alguns recursos  importantes, como a utilização de arquivo ini e parâmetros por linha de comando.

Se não leu o artigo anterior relacionado, veja em Como programar em C++ no Raspberry.

Onde comprar Raspberry

Como citado anteriormente, os artigos relacionados ao Raspberry são uma parceria com a CurtoCircuito. Visite o site e compre Raspberry com nosso parceiro para reforçar essa parceria.

Arquivo ini para carregar predefinições

Vamos criar uma situação hipotética (porque apesar de ter usado em um projeto real, não posso dar informações a respeito). Temos no Raspberry um acionamento de relé no pino 22, geramos log em /var/log/DobitAoByte.log. Nossa base de dados de produção está em /home/pi/DobitAoByte.sqlite3. O caminho de logs é um padrão, mas o da base de dados provavelmente deveria ser /opt/database. Só que ainda assim pareceria meio distribuído, certo? E se formos dar manutenção depois de um tempo e não lembrarmos os caminhos dos arquivos? E se alguém desconectar o pino do acionamento do relé sem querer?

Para não ter que recorrer à documentação do projeto para coisas tão simples e para não ter que recompilar o programa para definir novos parâmetros, podemos utilizar um arquivo ini.

Para carregarmos parâmetros a partir de arquivo, temos a opção da lib boost no Raspberry. Então, criamos um arquivo ini em /home/pi com os seguintes parâmetros:

Aqui definimos o pino 22 para o relay1, o log como citado anteriormente, a base de dados e o nome de tabela a ser criada. Instalemos agora a libboost:

E criamos o código para ler nosso arquivo DobitAoByte.ini:

Perceba que o próprio método pt.get faz um casting inflow, usando comoDa compilação à execução:

arquivo ini

Agora, vamos mudar os parametros no arquivo ini e rodar novamente:

arquivo ini

E pra finalizar, vamos remover o parâmetro “table” da sessão database do arquivo ini:

arquivo ini

Parâmetros por linha de comando em C++

O arquivo ini é excelente para rodar programas que serão serviços de sistema. Mas em alguns casos, pode ser necessário passar parâmetros por linha de comando para fazer testes previamente à criação do arquivo ini, ou para sobrescrever um parâmetro padrão sem ter que mexer no arquivo. Para tal, existem diversas opções, das quais acho mais simples utilizar essa abaixo.

Para compilar:

E o teste:

flags e parâmetros

Se esse recurso for utilizado após o carregamento do arquivo ini, os parâmetros podem ser sobrescritos, de modo que os parâmetros de linha de comando prevaleçam sobre predefinições em variáveis internas, assim como em variáveis alimentadas pelo arquivo ini.

Se eu me lembrar, no próximo artigo relacionado mostrarei como criar uma função de debug e uma função de log.

Até a próxima