salut tout le monde
Je suis un peu pressé et stressé depuis quelque jour. je suis en train de développer une application TR en C sous turbo C++ pour faire des acquisitions des informations venant des capteurs pour commencer le prof ma donnée l’exemple du help de turbo C sur les fonctions getvect et setvect. Mais je n’arrive pas à comprendre le fonctionnement !
Pourriez-vous m’aidez s'il vous plait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#include <dos.h>
#include <conio.h>
 
#define INTR 0X1C    /* est ce que  « 0X1C » c’est le numéro de l’interruption dans le vecteur des interruptions */ 
 
#ifdef __cplusplus /* selon mes recherche sur internet, __cplusplus  définie uniquement dans le cas d'une compilation C++  et on pourra utiliser cette chaîne de remplacement pour distinguer les parties de code écrites en C++ de celles écrites en C */
    #define __CPPARGS ... /* pourquoi cette instruction */
#else
    #define __CPPARGS /*si elle n’est pas défini alors en la définir maintenant mais elle sert a quoi */
#endif
Le grand problème et la :
void interrupt ( *oldhandler)(__CPPARGS); /*l’utilisation de la fonction interrupt et  différente de la déclaration dans le help du turbo C a cause du  (__CPPARGS); ! */
int count=0; /*la réinitialisation  du compteur appartient à la procédure void interrupt oldhandler ? Si oui pour quoi on n’utilise pas  accolades {} de la fonction void */
void interrupt handler (__CPPARGS)
{
/* increase the global counter */
   count++; // il est ou le temps!
 
/* call the old routine */
   oldhandler();
}
int main(void)
{
/* save the old interrupt vector */
   oldhandler = getvect(INTR);
 
/* install the new interrupt handler */
   setvect(INTR, handler);
 
/* loop until the counter exceeds 20 */
   while (count < 20) /*comment se fait l'incrémentation selon quel critère ' je c'est qui'il comptepar l'instruction c++; mais je veux que la fonction dure 30 seconde*/
      printf("count is %d\n",count);
 
/* reset the old interrupt handler */
   setvect(INTR, oldhandler);
 
   return 0;
}
Cordialement.