# Interface do SADAPMAP ## Sistema de Aquisição de Dados para Análise de Materiais em Altas Pressões Esse software é responsável por realizar os procedimentos de calibrações das prensas hidráulicas do LAPMA (Laboratório de Altas Pressões e Materiais Avançados) da UFGRS. Ele vem sendo desenvolvido há alguns anos, tendo sido originalmente desenvolido por Alisson Claudino (2017-2018) e depois por Pedro Kopper (2019). O código sofreu diversas alterações radicais durante esse tempo, gerando um código um tanto confuso. Um código similar, mas escrito do zero, pode ser encontrado no repositório de (https://git.cta.if.ufrgs.br/SADAPMAP/processamento)[Processamento]. Atualmente, ele é utilizado com uma placa (http://cta.if.ufrgs.br/projects/sacada)[SACADA] para aquisição de dados. Porém, o software em si suporta virtualmente qualquer dispositivo implementado na pasta `interfaces`. ### Instalação Para instalar o software, é necessário ter os pacotes `git` e `pipenv` instalados. A partir daí, você pode clonar o repositório para uma pasta local ```bash git clone https://git.cta.if.ufrgs.br/SADAPMAP/Interface.git ``` e instalar as dependências ```bash cd Interface pipenv install ``` para rodar, use ```bash pipenv run python3 SADAMAP.py [configuração] ``` onde '[configuração]' é o nome do arquivo de configuração que você quer rodar (.yaml). ### Estrutura do projeto `interfaces`: Guarda os arquivos que definem as interfaces de hardware que o programa pode usar. O programa determina qual interface carregar pelo arquivo de configuração .yaml. `nanopb_pb2`: Biblioteca nanopb, utilizada por algumas interfaces mais avançadas que se baseiam em Protocol Buffers. Não são mais implementadas pelo SACADA nem pelo Arduino. `Protocol`: git submodule que linka o repositório (https://git.cta.if.ufrgs.br/SADAPMAP/Protocol)[Protocol], que guardava a implementação de Protocol Buffers do SACADA. `resources`: Recursos auxiliares ao desenvolvimento do programa. Imagens, textos, arquivos de configuração de UI etc `threads`: Antigamente, guardava as threads do programa, porém hoje o programa é single-threaded. Atualmente guarda as classes utilizadas nos processamentos. `ui`: Guarda o código relativo à interface de usuário. Alguns deles são gerados por computador e não devem ser editados. `util`: Guarda funções/classes miscelâneas que são úteis mas não se encaixam em mais nenhuma categoria. ### Fluxo de desenvolvimento #### Aquisição offline (sem hardware) Essa é uma funcionalidade do software que permite que se use uma interface "falsa" para fins de desenvolvimento chamada mock. Ao utilizar essa interface, ela irá alimentar o sistema com dados falsos, mas utilizando o mesmo software que uma interface real, permitindo testar o sistema mesmo sem nenhum hardware acoplado. #### Criação da interface gráfica A interface gráfica é escrita em PyQt5 e, para gerar os arquivos de interface gráfica, utilizamos a ferramenta Qt Designer 4. Ela gera arquivos .ui, que são salvos na pasta `resources/UI` e devem ser compilados para Python utilizando o `pyuic5` (instalável via pip) utilizando o comando `pyuic5 resources/UI/[arquivo].ui -o ui/[arquivo].py` sempre que alterados. ### Suporte O suporte desse software é realizado exclusivamente via issues nesse repositório, com o fim de criar uma documentação pública e que possa ser útil a todos. ### Licença Este programa é um software livre; você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU como publicada pela Free Software Foundation; na versão 3 da Licença, ou (a seu critério) qualquer versão posterior. Este programa é distribuído na esperança de que possa ser útil, mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU para mais detalhes. Uma cópia da licença (em inglês) está disponível no arquivo LICENSE.