Skip to content

Instantly share code, notes, and snippets.

@gbrennon
Created October 25, 2021 04:00
Show Gist options
  • Save gbrennon/93831c38d344365eea22edce0170ab02 to your computer and use it in GitHub Desktop.
Save gbrennon/93831c38d344365eea22edce0170ab02 to your computer and use it in GitHub Desktop.
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <pthread.h>
#define sensor_alto1 100;
#define sensor_alto2 150;
#define sensor_alto3 200;
time_t tempo_inicio, tempo_agora, tempo_total; //Variáveis do tipo time_t
int sensor;
bool comando_reator; //False = Mantém os Reatores. True = Desliga Reatores.
void ReatorSafe() //Função ReatorSafe
{
    printf("Reator pode continuar ligado");
}
void ReatorOff() //Função ReatorOff
{
    printf("Reator precisa ser desligado");
}
int ler_sensor() //Função que realiza leitura da temperatura, em loop infinito --Thread0
{
    pthread_t thread0;
    while(1)
    {
        sensor = TempRead(void);        
    }
}
int ler_console() //Console que interpreta os valores do sensor --Thread1
{
    pthread_t thread1;
    while(1)
    {    
        tempo_inicio = 0;
        if(sensor <= sensor_alto1)
            comando_reator = false;
        else if(sensor == sensor_alto2 || sensor < sensor_alto3)
        {
                while(sensor <= sensor_alto2 || sensor > sensor_alto1)
                {
                    tempo_agora = time(NULL);
                    tempo_total=tempo_agora-tempo_inicio;
                    if(tempo_total > 200)
                        comando_reator = false;
                    else
                        comando_reator = true;
                }
        }
        else if(sensor >= sensor_alto3)
            ReatorOff;                        
    }
}
int muda_reator() //Função que interpreta os comandos do console e liga/desliga reator
{
    while(1)
    {
        if(comando_reator == True)
            ReatorOff;
        else if(comando_reator == False)
            ReatorSafe;            
    }
}
main()
{
    pthread_create(&thread1, NULL, ler_sensorsensor, sensor);
    pthread_create(&thread2, NULL, ler_console, comando_reator);
    pthread_create(&thread3, NULL, muda_reator, NULL);
    system("pause");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment