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

  FORUM HardWare.fr
  Programmation
  C++

  [Probleme] _inp & _outp

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Probleme] _inp & _outp

n°708192
mesta
Posté le 25-04-2004 à 22:50:03  profilanswer
 

Bonjour a tous,
j'essaie de faire un programme pour communiquer via le port COM sous xp mais j'ai quelques problemes.
J'utilise le compilateur DevCpp (je n'ai pas VC++ chez moi), et les fonction _inp et _outp ne sont pas intégrés à la librairie <conio.h> (contrairement a VC++). Je me suis renseigné et j'ai trouvé un peu de doc sur ça, mais je n'ai pas eu de resultat concluant.
 
Programme en VC++:

Code :
  1. #define RBR 0
  2. #define LCR 3
  3. #define COM1 0x3f8
  4. int main()
  5. {
  6. _outp(COM1+LCR,128); // je mets la valeur 128 dans le registre LCR
  7. printf("%x",_inp(COM1+LCR)); // je lis ce qu'il y a dans ce le registre LCR
  8. }


Jusqu'ici tout marche impec, avec VC++ bien sur ;)
 
Avec DevCpp, pour communiquer avec le port COM c'est un peu plus compliqué. J'ai telechargé un fichier DLL (inpout32.dll) et j'ai rajouté un bou de code dans mon fichier, ce qui donne:

Code :
  1. #define LCR 3
  2. #define COM1 0x3f8
  3. typedef short _stdcall (*inpfuncPtr)(short portaddr);
  4. typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);
  5. int main()
  6. {
  7. HINSTANCE hLib;
  8. inpfuncPtr inp32;
  9. oupfuncPtr oup32;
  10. /* Chargement du dll */
  11. hLib = LoadLibrary("inpout32.dll" );
  12. if (hLib == NULL) {
  13.   printf("Le chargement du DLL a echoué.\n" );
  14.   return -1;
  15. }
  16.      inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32" );
  17.      oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32" );
  18. int tmp=0;
  19. oup32(COM+LCR,tmp); // je mets la valeur 0 dans le registre LCR
  20. printf("reg LCR : %x",inp32(COM1+LCR)); // je lis la valeur du registre LCR


Le probleme est le suivant, quelque soit la valeur de

Code :
  1. tmp

que j'envoie, le registre ne change pas, comme si rien ne se passé, j'ai toujours la valeur FF.
 
Je m'y prends peut etre mal, mais je n'ai trouvé que cette solution.. j'espere que quelqu'un pourra m'aider :)
 
Merci d'avance!


Message édité par mesta le 25-04-2004 à 22:53:37
mood
Publicité
Posté le 25-04-2004 à 22:50:03  profilanswer
 

n°708215
myst78
Posté le 25-04-2004 à 23:28:23  profilanswer
 

j'ai bossé sur le port com recemment, et j'ai compris d'apres mes recherches que inp et outp ne fonctionnent pas sous xp (et tout systeme NT d'ailleurs)
 
il faut utiliser CreateFile, WriteFile et ReadFile...


---------------
Fleur de métal, entité invulnérable, vêtue tant bien que mal, d'une muraille inébranlable...
n°708221
mesta
Posté le 25-04-2004 à 23:38:53  profilanswer
 

Si c'est possible, et moi ce que j'ai comprit, c'est qu'il faut reecrire un driver .. mais il y en a deja sur internet, mais je n'ai pas reussi a les faire marcher
ex: http://www.zealsoftstudio.com/ntport/

n°708288
myst78
Posté le 26-04-2004 à 09:21:24  profilanswer
 

ben, je pense que c'est pas la peine de te compliquer la vie, ca marche tres simplement avec ces fonctions...
et je maintiens que inp et outp ne marchent pas sous NT, ou alors on m'a menti :/
 
mais tu veux faire quoi exactement ? tu veux communiquer avec quoi ?


---------------
Fleur de métal, entité invulnérable, vêtue tant bien que mal, d'une muraille inébranlable...
n°708497
mesta
Posté le 26-04-2004 à 12:43:47  profilanswer
 

C'est un petit programme permettant de communication via le port COM entre 2 PCs (envoyer des messages & fichiers).
Ce programme marche parfaitement avec VC++ (quand je compile), mais pas avec le compilateur que j'ai chez moi (DevCpp).
 
Il doit bien exister une solution tout de même .. même en bidouillant. Personne n'aurait une ptite idée?


Message édité par mesta le 26-04-2004 à 12:48:34
n°709302
xterminhat​e
Si vis pacem, para bellum.
Posté le 27-04-2004 à 08:45:09  profilanswer
 

Sous XP, inp et outp ne fonctionnent pas. Il faut développer un nouveau driver ou utiliser celui existant au travers des fonctions précités.
 
Sous linux par contre, ca marche tres simplement, car les ports sont accessibles directement.
 


---------------
Cordialement, Xterm-in'Hate...
n°709391
HelloWorld
Salut tout le monde!
Posté le 27-04-2004 à 10:28:14  profilanswer
 

Ben voyons. Les IO directs sous Linux je demande à voir.
NT et Linux l'interdisent, et c'est tout à fait normal.
Utiliser un driver pour ça c'est _mal_ car c'est outrepasser les recommandations de l'OS (et ça marche pas en user, seul les users privilégiés/admin peut installer un driver).
=> CreateFile( "COM1", ...
=> fopen( "COM1", ...
Pblm traité X fois ici.

n°709524
sisicaivra​i
Life is Beautifullll
Posté le 27-04-2004 à 11:41:01  profilanswer
 

perso devant faire un truc portable j'utilise ctb :
http://www.iftools.com/docs.html


---------------
blog dessins + srtCleaner | Ricoh R6 | K20d | MK-wii 5112-3549-9484 | en phase de déblablatisation depuis le 26 avril 2002 | Belgian Connection

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

  [Probleme] _inp & _outp

 

Sujets relatifs
probleme de nom décoré DLL C (résolu)Probléme programmation PHP pour enregistremetn dasn deux tables MySQL
[C] Probleme avec lecture fichierProblème de sélection avec VB pour calculer l'écart type
[c++] probleme de comparaison de type d'objets derivésbesoin d'aide pour la fonction socket probleme avec free
Problème de compilationProblème de compilation !
[Tomcat/JDBC] Problème de configuration Tomcat et de connexion Oracle[Apache] Probleme d'URL
Plus de sujets relatifs à : [Probleme] _inp & _outp


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