Sesta Esercitazione (Registratore digitale)

Esercizio 1 (Registratore digitale)
Esercizio 2 (Reg. dig. + signal handler)
Esercizio 3 (Reg. dig. con timer)
 

Esercizio 1
Create le seguenti funzioni (e testatele una alla volta)

Esercizio 2
Modificate il programma precedente in modo che possa essere interrotto da tastiera (ad esempio con crtl-C che corrisponde a SIGINT).

#include <signal.h>

  int main(){
    ...
    signal(SIGINT,end); // attenzione void end() va modificata in void end(int sig)
    ...
    while(1){
      ... // misura..
    }    
    ...
  }

Esercizio 3
Modificate il programma precedente in modo che la singola misura (+ lettura del tempo, aggiornamento del buffer,...) sia eseguita da una funzione a sua volta chiamata da un timer.

  void misura(int sig){
   ...
  }
  int main(){

    struct itimerval timer;
    timer.it_value.tv_sec = 1;
    timer.it_value.tv_usec = 500000;
    timer.it_interval.tv_sec = 1;
    timer.it_interval.tv_usec = 0;

    setitimer(ITIMER_REAL,&timer,NULL); // regolazione dei parametri
    signal(SIGALRM,misura);

    while(1){
     ... // puo' contenere comunicazione con l'utente per
         // modifica dei parametri di acquisizione (ad es.
         // frequenza di acquisizione)
    }

  }