Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1021 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  problème de boucle

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème de boucle

n°958264
rafale30
Posté le 21-01-2005 à 10:34:37  profilanswer
 

Bonjour à tous j'ai modifié un programme en y rajoutant une boucle (do, while) pour éclairer silmultanément 2 états sur le port parallèle, le probleme est que ma boucle est trop lente et on voi le clignotemen a l'oeuil nu des leds, pourriez-vous m'aidez pour accélérer ma boucle merci a tous  
 

Code :
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <windows.h>
  4. /* OBLIGATOIRE - NE PAS TOUCHER */
  5. /* Définitions des fonctions intégrées à la DLL inpout32.dll */
  6. typedef short _stdcall (*inpFunction)(short portaddr);
  7. typedef void _stdcall (*oupFunction)(short portaddr, short data);
  8. /* FIN DE LA ZONE OBLIGATOIRE */
  9. int main(void)
  10. {
  11.      /* OBLIGATOIRE - NE PAS TOUCHER */
  12.      HINSTANCE hLib;
  13.      inpFunction inp32;
  14.      oupFunction oup32;
  15.      /* FIN DE LA ZONE OBLIGATOIRE */
  16.      /* Les variables du programme */
  17.      short datasIn, datasOut;
  18.      int port;
  19.      /* OBLIGATOIRE - NE PAS TOUCHER */
  20.      /* Charge la libriairie */
  21.      hLib = LoadLibrary("inpout32.dll" );
  22.      if (hLib == NULL)
  23.      {
  24.           printf("ECHEC: LoadLibrary Failed !!!\n" );
  25.           return -1;
  26.      }
  27.      /* récupère les adresses des fonctions Inp32 et Out32 */
  28.      inp32 = (inpFunction)GetProcAddress(hLib, "Inp32" );
  29.      if (inp32 == NULL)
  30.      {
  31.           printf("ECHEC: GetProcAddress for Inp32 Failed !!!\n" );
  32.           return -1;
  33.      }
  34.      oup32 = (oupFunction)GetProcAddress(hLib, "Out32" );
  35.      if (oup32 == NULL)
  36.      {
  37.           printf("GetProcAddress for Oup32 Failed.\n" );
  38.           return -1;
  39.      }
  40.      /* FIN DE LA ZONE OBLIGATOIRE */
  41.      /* Début du programme de test */
  42.      /* Lecture des registres du port parallèle LPT1 (0x378 à 0x37F) */
  43.      for(port=0x378; (port<0x380); port++)
  44.      {
  45.           datasIn = inp32(port);
  46.           printf("Port LPT read 0x%03X = %04X\n", port, datasIn);
  47.      }
  48.      printf("\n" );
  49.      do
  50.      {
  51.      /* Ecriture sur le port parallèle */
  52.      port = 0x378;    /* registre DATA */
  53.      datasOut = 0x03; /* 0000 0001 */
  54.      oup32(port, datasOut);
  55.      ;printf("Port LPT write to 0x%X : datasOut=0x%2X\n", port, datasOut);
  56.      /* Lecture de vérification */
  57.      datasIn = inp32(port);
  58.      ;printf("Port LPT read 0x%03X = %04X\n", port, datasIn);
  59.      /* SHOOT AGAIN: Ecriture sur le port parallèle */
  60.      port = 0x378;    /* registre DATA */
  61.      datasOut = 0xC0; /* 10000000 */
  62.      oup32(port, datasOut);
  63.      ;printf("Port LPT write to 0x%X : datasOut=0x%2X\n", port, datasOut);
  64.      /* Lecture de vérification */
  65.      datasIn = inp32(port);
  66.      ;printf("Port LPT read 0x%03X = %04X\n", port, datasIn);
  67.      /* Fin du programme de test */
  68.       } while (1)   ;
  69.      /* OBLIGATOIRE - NE PAS TOUCHER */
  70.      /* libère la librairie */
  71.      FreeLibrary(hLib);
  72.      /* FIN DE LA ZONE OBLIGATOIRE */
  73.      return 0;
  74. }

mood
Publicité
Posté le 21-01-2005 à 10:34:37  profilanswer
 

n°958271
++fab
victime du syndrome IH
Posté le 21-01-2005 à 10:43:31  profilanswer
 
n°958275
nerisson
Pic-pic
Posté le 21-01-2005 à 10:51:36  profilanswer
 

Multi ou c'est un exercice d'un prof  :??:

n°958282
rafale30
Posté le 21-01-2005 à 11:06:42  profilanswer
 

en effet c un pro

n°958283
rafale30
Posté le 21-01-2005 à 11:06:58  profilanswer
 

en effet c un proj

n°958306
HelloWorld
Salut tout le monde!
Posté le 21-01-2005 à 11:36:12  profilanswer
 

et si t'enlèves les printf ça donne quoi ?
PS: dans le code OBLIGATOIRE - NE PAS TOUCHER il manque des FreeLibrary en cas d'échec de GetProcAddress.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°958313
++fab
victime du syndrome IH
Posté le 21-01-2005 à 11:45:09  profilanswer
 

do while(1) vs while(1) c'est plus bourricot que kif-kif !
D'ailleurs, comment on en sors de cette boucle ?
comment on libere la Library ?

n°961244
rafale30
Posté le 24-01-2005 à 21:05:34  profilanswer
 

ok je vous vous remercie tous cété les printf

n°963688
ChristianS​_
Posté le 27-01-2005 à 13:17:33  profilanswer
 

Salut,
 
juste comme ça... c'est possible d'allumer les deux en meme temps avec une seule instruction  oup32(port, datasOut) !?  non ? en combinant les 2 bits  00000001  et 10000000, genre : oup32(0x378;, 0xC3)  ?
 

n°963690
scull
MySCULL cay bon mangez en!
Posté le 27-01-2005 à 13:20:53  profilanswer
 

He bien c'est le but du programme, le but ultime étant d'allumer environ + de 20 dels. C'est pour cela que il nous faut accélérer notre boucle while ;) Afin d'éviter le clignotement


---------------
Créer son forum gratuit |  Mon beau blog phpBB caÿ le mal :o

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  problème de boucle

 

Sujets relatifs
[PHP] Problème avec une boucle[C] problème de boucle
[PHP] Problème boucle while et "continue;"Problème avec un boucle For Each et une fonction recursive
Probleme boucle while[Résolu][Firefox et Javascript] Problème avec history.back() qui boucle !
Problème avec un boucle[algo] problème d'inclusion de boucle
Problème avec boucle [résolu]gtk-1.2 : probleme dans une boucle gtk_events_pending
Plus de sujets relatifs à : problème de boucle


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR