Votre question

commande outp et inp sur devC++

Tags :
  • Compile
  • Programmation
Dernière réponse : dans Programmation
12 Avril 2005 13:48:41

Bonjour, je suis débutant en programmation C++ et doit communiquer avec un capteur de température. J'utilise Win Xp.
Je possède un code un Turbo C que je dois utiliser en C++.
J'ai un problème avec les commandes outp et inp.
Impossible de compiler avec Dev C++.
J'ai essayé avec _outp et outport, mais rien de mieux.
Est-ce un problème de librairie ou quelque chose comme çà?
:-?

Autres pages sur : commande outp inp devc

a b L Programmation
12 Avril 2005 14:55:46

Je viens d regarder dans les librairie par défaut et ça n'y est pas.
Par contre c'est une fonction qui se trouve dans mvcrt.dll

donc ajoute:
  1. #ifndef _MSC_VER
  2. typedef int (*outp_t) (unsigned short port, int databyte);
  3. typedef int (*inp_t) (unsigned short port);
  4.  
  5. outp_t _outp = NULL;
  6. inp_t _inp = NULL;
  7.  
  8. int JeVeuxMonOutp(void)
  9. {
  10. HINSTANCE hInst = LoadLibrary("msvcrt.dll");
  11. if (!hInst)
  12. return 0;
  13.  
  14. _outp = (outp_t) GetProcAddress(hInst, "_outp");
  15. if (!_outp)
  16. return 0;
  17.  
  18. _inp = (inp_t) GetProcAddress(hInst, "_inp");
  19. if (!_inp)
  20. return 0;
  21.  
  22. return 1;
  23. }
  24. #else
  25. #include <conio.h>
  26. int JeVeuxMonOutp(void)
  27. {
  28. return 1;
  29. }
  30.  
  31. #endif


Et pense à appeler JeVeuxMonOutp(void) en début de programme :-)
12 Avril 2005 16:10:31

merci CRicky, çà a l'air de marcher.
Par contre, vu que t'as lair de bien conaître mes genres de problèmes, tu n'aurais pas une solution pour la commande delay? Ca doit être le même problème. Merci d'avance :-)
a b L Programmation
12 Avril 2005 17:35:20

La commande delay ? c'est quoi ? _sleep () ?
13 Avril 2005 09:24:33

La commande delay a peu près la même fonction que Sleep, elle permet d'avoir un temps d'attente. Mais pour delay, le temps est en millisecondes alors que pour Sleep (car sleep ne fonctionne pas), le temps d'attente.
Je crois que c'est la seule différence. Si ce n'est pas ça, merci de m'en dire plus.
a b L Programmation
13 Avril 2005 10:43:59

sleep est une fonction dépendante de l'OS, elle n'est pas dans la norm ANSI C (comme outp je uppose)
La fonction sleep de UNIX est en seconde, mais la foncciton Sleep de windows est en millisecondes (enfin je crois).

Sinon sous windows tu peut utiliser la fonction GetTickCount () qui te donne le nombre de millisecondes écoulées depuis l'execution de l'application:

Un sleep de 1000ms:
  1. DWORD ref = GetTickCount ();
  2. while ( GetTickCount () - ref < 1000 );


L'horloge windows n'est précise qu'à 10 millisecondes. Pour des timer plus précis, il y a QueryPerformanceCounter () qui utilise des entiers 64bits et est précis à 100 nanosecondes.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS