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

  FORUM HardWare.fr
  Programmation
  C++

  Accélérer une boucle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Accélérer une boucle

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

Bonjour, voici mon petit programme en C++ pour envoyer des signaux sur mon port //.  
Le problème vient que les diodes en sortie clignotent pas assez vite pour que justement on ne voye pas que elles clignotent.
Voici le code source de mon programme... Comment accélérer l'envoie des signaux ?
Si vous avez une idée merci ;)
 

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


---------------
Créer son forum gratuit |  Mon beau blog phpBB caÿ le mal :o
mood
Publicité
Posté le 20-01-2005 à 13:27:19  profilanswer
 

n°957407
scull
MySCULL cay bon mangez en!
Posté le 20-01-2005 à 13:49:25  profilanswer
 

En faisant des recherches, il s'avère que c'est impossible de plus accélérer un while, hormis de changer la puissance du CPU...
Vous confirmez ?


---------------
Créer son forum gratuit |  Mon beau blog phpBB caÿ le mal :o
n°957409
KangOl
Profil : pointeur
Posté le 20-01-2005 à 13:51:00  profilanswer
 

virer les printf ??


---------------
Nos estans firs di nosse pitite patreye...
n°957410
nerisson
Pic-pic
Posté le 20-01-2005 à 13:51:14  profilanswer
 

Ca depends de ce que tu mets dans ta boucle....

n°957417
scull
MySCULL cay bon mangez en!
Posté le 20-01-2005 à 13:57:46  profilanswer
 

les printf en mème temps, sa doit pas consomer énormément...
Et le signal envoyé est difficilement plus léger...


---------------
Créer son forum gratuit |  Mon beau blog phpBB caÿ le mal :o
n°957420
KangOl
Profil : pointeur
Posté le 20-01-2005 à 14:01:46  profilanswer
 

essaye quand meme sans printf et cout :o


---------------
Nos estans firs di nosse pitite patreye...
n°957425
didier1809
${citation_perso}
Posté le 20-01-2005 à 14:05:14  profilanswer
 

si t'a un affichage sur la console : vire le !!!
 
ca ralentit tres tres fortement !
 
en plus ca ressemble a un joli melange de C et C++ tout ca non ?


Message édité par didier1809 le 20-01-2005 à 14:05:56

---------------
.
n°957429
cricri_
Posté le 20-01-2005 à 14:09:21  profilanswer
 

clair, faut virer les printf et cout ..

n°957430
fucky_fuck
Posté le 20-01-2005 à 14:10:09  profilanswer
 

scull a écrit :

les printf en mème temps, sa doit pas consomer énormément...
Et le signal envoyé est difficilement plus léger...


 
détrompes toi ! un printf dans une longue boucle, ca te ralentit a mort !
 
fais un essai sans pour te rendre compte ...
 
edit : et merde 2 fois grillaid !


Message édité par fucky_fuck le 20-01-2005 à 14:10:40
n°957431
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 20-01-2005 à 14:10:36  profilanswer
 

Bin déjà, c'est fait en C, alors bon, côté perfos spa trop ça :/


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
mood
Publicité
Posté le 20-01-2005 à 14:10:36  profilanswer
 

n°957434
KangOl
Profil : pointeur
Posté le 20-01-2005 à 14:14:57  profilanswer
 

Taiche a écrit :

Bin déjà, c'est fait en C, alors bon, côté perfos spa trop ça :/


qu'est ce qu'elle fou là la ligne 58 alors ??
 


---------------
Nos estans firs di nosse pitite patreye...
n°957436
KangOl
Profil : pointeur
Posté le 20-01-2005 à 14:15:21  profilanswer
 

et si tu veux que ce soit plus rapide, fait le en ASM :o


---------------
Nos estans firs di nosse pitite patreye...
n°957595
bjone
Insert booze to continue
Posté le 20-01-2005 à 16:33:59  profilanswer
 

double erreur:
 
affi2 == affi2++;
 
pour incrémenter "affi2++" suffit, et en plus tu devais penser faire "affi2 = affi2++"

n°957600
didier1809
${citation_perso}
Posté le 20-01-2005 à 16:40:30  profilanswer
 

et c'est quoi ces ; devant les printf ?


---------------
.
n°957665
bjone
Insert booze to continue
Posté le 20-01-2005 à 17:26:39  profilanswer
 

ça fait joli.

n°957690
ToxicAveng​er
Posté le 20-01-2005 à 17:48:50  profilanswer
 

Oh, du C avec un cout, comme c'est beau :o

n°959128
el muchach​o
Comfortably Numb
Posté le 22-01-2005 à 09:04:27  profilanswer
 

KangOl a écrit :

et si tu veux que ce soit plus rapide, fait le en ASM :o


 
Nawak. Même en Basic ça devrait être assez rapide.
Le pb, ce sont les printf envoyés dans la ligne de commande, qui n'ont d'ailleurs pas grand intérêt puisqu'il envoie constamment la même chose. Donc il peut déjà formater ses chaines avant la boucle.
Mais même sans ça, il écrit ses traces dans un fichier (au lieu de la console), et ça devrait suffire.


Message édité par el muchacho le 22-01-2005 à 09:08:46
n°959137
WhatDe
Posté le 22-01-2005 à 10:08:46  profilanswer
 

[:mlc]


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

  Accélérer une boucle

 

Sujets relatifs
[PHP] Problème avec une bouclePassage de variable depuis une boucle ???
plusieurs commandes dans une boucle for[PHP]Récuperation d'une boucle en variable
Boucle : tous les fichiers d'un dossier et non un spécifiqueexcel cellule colonne vbs boucle
Controler une boucle infinieaccélérer la compilation (pré-compilation ?)
touche [TAB] qui boucle uniquement sur input + accessibilitebesoin de votre avis sur un insert dans une boucle
Plus de sujets relatifs à : Accélérer une boucle


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