Simulador de Sistemas de Tempo Real com Python
Se você está buscando uma forma prática de aprender e implementar conceitos de sistemas de tempo real, programação concorrente e sincronização em Python, este projeto pode ser exatamente o que você precisa! Neste post, vamos explorar o Real-Time System Simulator, um sistema que integra tarefas paralelas e simulações de um computador de bicicleta. Perfeito para estudantes e desenvolvedores que querem expandir suas habilidades!
O Que é o Real-Time System Simulator?
Este projeto é uma simulação de um sistema de tempo real que implementa conceitos de tarefas concorrentes e programação paralela. Inspirado em cenários reais de engenharia, ele inclui:
- Hello_Task: Uma tarefa simples que imprime mensagens no console.
- Producer: Um produtor controlado que imprime caracteres com repetição e retardo.
- Sistema Embarcado de Bicicleta: Simula um computador de bicicleta que exibe velocidade, quilometragem e tempo de viagem.
Principais Funcionalidades
- Hello_Task:
- Imprime mensagens no console.
- Configurável para repetir a mensagem e incluir um tempo de espera.
- Exemplo:
Hello, I am Task A Hello, I am Task A
- Producer:
- Produz caracteres repetidos no console.
- Permite configurações de caracteres, número de repetições e tempo de retardo.
- Possui controle externo para interromper a execução.
- Exemplo:
AAAAAA
- Sistema Embarcado de Bicicleta:
- Simula um computador que alterna entre modos para exibir:
- Viagem: Quilometragem atual.
- Velocidade: Velocidade em tempo real.
- Total: Quilometragem acumulada.
- Tempo: Duração da viagem.
- Ideal para aprender sobre sistemas embarcados e sincronização.
- Simula um computador que alterna entre modos para exibir:
Estrutura do Projeto
Organizado para facilitar o entendimento e manutenção, o projeto segue uma estrutura modular:
atividade_4_ufam/
├── core/ # Código principal
│ ├── hello_task.py # Implementação da Tarefa Hello_Task
│ ├── producer.py # Implementação da Tarefa Producer
│ ├── bike_computer.py # Simulação do computador de bicicleta
│ ├── utils.py # Funções auxiliares
│
├── config/ # Configurações globais
│ └── config.py # Parâmetros gerais e constantes
│
├── tests/ # Testes unitários
│ ├── test_hello_task.py
│ ├── test_producer.py
│ ├── test_bike_computer.py
│
├── main.py # Arquivo principal para executar o projeto
├── requirements.txt # Dependências do projeto
├── README.md # Documentação
└── .gitignore # Arquivos ignorados pelo Git
Como Instalar e Configurar
- Clone o repositório:
git clone git@github.com:raulbatalha/atividade_4_ufam.git cd atividade_4_ufam
- Crie e ative um ambiente virtual:
python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows
- Instale as dependências:
pip install -r requirements.txt
Como Executar
- Executar o Sistema Principal:
python main.py
- Executar os Testes:
python -m unittest discover -s tests
- Executar os testes isolados com Pytest:
- Deve ser instalado o
Pytest
caso não tenha na sua máquina:sudo apt install python3-pytest
- Depois do
Pytest
instalado na sua máqui é hora de executar os teste do projeto:pytest tests/
- Deve ser instalado o
Exemplos de Saída
- Hello_Task:
Hello, I am Task A Hello, I am Task A
- Producer:
BBBBB
- Sistema Embarcado de Bicicleta:
Trip Distance: 5.00 km Speed: 28.30 km/h Total Distance: 12.00 km Time: 120 s
Tecnologias Utilizadas
-
Python 3.x
Um dos melhores para aprendizado e desenvolvimento rápido. -
Threading
Usado para gerenciar tarefas concorrentes e simular o comportamento de sistemas de tempo real. -
Unittest
Framework de testes integrado ao Python para validar funcionalidades.
Próximos Passos
Este projeto já oferece uma base sólida, mas há espaço para melhorias e extensões, como:
- Adicionar suporte a persistência de dados para salvar a quilometragem total.
- Criar uma interface gráfica para o computador de bicicleta.
- Melhorar os testes com cenários mais avançados.
Contribua com o Projeto
Contribuições são bem-vindas! Para participar:
- Faça um fork do repositório.
- Crie uma branch com sua funcionalidade:
git checkout -b minha-nova-funcionalidade
- Envie suas alterações:
git push origin minha-nova-funcionalidade
- Abra um Pull Request.
Conclusão
O Real-Time System Simulator é um projeto didático e divertido, perfeito para quem quer aprender conceitos avançados de programação concorrente em Python. Com uma estrutura modular e várias funcionalidades úteis, é um excelente ponto de partida para projetos maiores e mais complexos.
Se você tem sugestões ou deseja contribuir, fique à vontade para entrar em contato ou deixar um comentário!
Pronto para o desafio? 🚀 Clone o repositório e comece agora!