Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    4

    [C] timer

    Prima di tutto un ciao a tutti! visto che sono nuovo...


    Sto scrivendo un programma per il quale mi occorre usare un timer. Qualcuno non avrebbe in giro qualche file .c un link o qualcosa da darmi per capire come funzionano gli interrupt in C?

    grazie

  2. #2
    Utente di HTML.it L'avatar di ibykos
    Registrato dal
    Feb 2005
    Messaggi
    201
    esempio 1:

    codice:
    /*
     * alarm.c
     *
     * Simple synchronous alarm program. This is used as a
     * reference for progressive examples of asynchronous
     * alarm programs.
     */
    #include "errors.h"
    
    int main (int argc, char *argv[])
    {
        int seconds;
        char line[128];
        char message[64];
    
        while (1) {
            printf ("Alarm> ");
            if (fgets (line, sizeof (line), stdin) == NULL) exit (1);
            if (strlen (line) <= 1) continue;
    
            /*
             * Parse input line into seconds (%d) and a message
             * (%64[^\n]), consisting of up to 64 characters
             * separated from the seconds by whitespace.
             */
            if (sscanf (line, "%d %64[^\n]", 
                &seconds, message) < 2) {
                fprintf (stderr, "Bad command\n");
            } else {
                sleep (seconds);
                printf ("(%d) %s\n", seconds, message);
    	    system("date");
            }
        }
    }
    esempio 2

    codice:
    /*
     * alarm_fork.c
     *
     * This version of alarm.c uses fork to create a new process to
     * wait for each alarm to expire.
     */
    #include <sys/types.h>
    #include <sys/wait.h>
    #include "errors.h"
    
    int
    main (int argc, char *argv[])
    {
      char line[128];
      int seconds;
      pid_t pid;
      char message[64];
    
      while (1) {
        printf ("Alarm> ");
        if (fgets (line, sizeof (line), stdin) == NULL)
          exit (0);
        if (strlen (line) <= 1)
          continue;
        system ("date");
        /*
         * Parse input line into seconds (%d) and a message
         * (%64[^\n]), consisting of up to 64 characters
         * separated from the seconds by whitespace.
         */
        if (sscanf (line, "%d %64[^\n]", &seconds, message) < 2) {
          fprintf (stderr, "Bad command\n");
        }
        else {
          pid = fork ();
          if (pid == (pid_t) - 1)
    	  errno_abort ("Fork");
          if (pid == (pid_t) 0) {
    	//		If we are in the child, wait and then print a message
    	sleep (seconds);
    	system ("date");
    	printf ("(%d) %s\n", seconds, message);
    	exit (0);
          }
        }
      }
    }
    sono entrambi in c per Unix, spero di esserti stato utile.
    ciao!

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    4
    Io ho bisogno un interrupt vero e proprio, ho guardato in fretta i due source, ma mi pare che contengano solamente dei semplici ritardi...correggimi se sbaglio.

    grazie comunque

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non si capisce:

    1) con quale sistema operativo stai lavorando

    2) con quale compilatore

    3) perche' dovresti usare l'interrupt per un timer

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    4
    Questo programma lo sto scrivendo su windows e uso devcpp.
    Ora sarebbe abbastanza lungo descrivere per cosa ho bisogno l' interrupt. ti faccio un altro esempio, metti che fai una scanf, io vorrei farsì che se non viene inserito niente dopo un certo tempo, il programma passa ad eseguire delle altre istruzioni.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quello che vuoi non si ottiene certamente gestendo gli interrupt.

    Mentre con il DOS poteva essere ancora una cosa proponibile, con Windows non puoi gestire gli interrupt in codice utente ma lo devi fare attraverso codice che gira in modalita' kernel, in genere in un device driver.

    Cio' che può servirti sono i timer messi a disposizione dal sistema operativo e gestibili tramite le API SetTimer e KillTimer (a cui ti rimando per il semplice funzionamento).

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    4
    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.