Le Port parallèle

Le Port parallèle - C++ - Programmation

Marsh Posté le 15-02-2005 à 08:37:42    

Bonjour,
 
Je suis en deuxième année de BTS Informatique et Réseaux et je dois, pour mon projet, gérer une communication radio avec une carte radio branchée sur le port parallèle.
 
J'ai téléchargé le DLL inpout32.dll censé gérer les soucis de programmation du port parallèle sous WIN_XP mais le compilateur refuse mes instructions "_inp" et "_outp".
J'éssaie toutes les bibliothèques possibles mais sans résultat.
 
Ca m'énérve :fou: car c'est une part de mon projet et je dois la réussir.
 
Est-ce-qu'il me manque quelque chose?
 
Merci

Reply

Marsh Posté le 15-02-2005 à 08:37:42   

Reply

Marsh Posté le 15-02-2005 à 08:47:07    

Le compilateur ou le linker ?
 
Et si tu nous donnais plutôt le vrai message d'erreur ?

Reply

Marsh Posté le 15-02-2005 à 09:34:43    

Le linker ne connais pas les fonctions "_inp" et "_outp", ni les fonctions "outport" et "inport".
Mais je viens de découvrir qu'elles sont obsolètes pour WIN_XP.
A première vue, il faut créer une sorte de fichier avec "CreateFile".
Est-ce-que c'est bien la marche à suivre.
Je tente un essai avec C++ Builder5 mais je n'y crois pas beaucoup...

Reply

Marsh Posté le 15-02-2005 à 09:37:05    

Et si tu nous donnais plutôt le vrai message d'erreur ?

Reply

Marsh Posté le 15-02-2005 à 09:37:15    

Et si tu nous donnais plutôt le vrai message d'erreur ?

Reply

Marsh Posté le 15-02-2005 à 09:37:39    

Et si tu nous donnais plutôt le vrai message d'erreur ?
(je sais pas si c'est assez visible là).

Reply

Marsh Posté le 15-02-2005 à 09:42:49    

message d'erreur:
'_inp' undeclared (first use this function)
(Each undeclared identifier is reported only once for each  function it appears in.)
 
Comme tout les messages d'erreur, ça n'aide pas beaucoup...

Reply

Marsh Posté le 15-02-2005 à 09:44:23    

Si, il aide beaucoup.  
 
Il te dit que ta fonction n'est pas déclarée. C'est donc pas un problème de DLL ou de linker (puisque là, il te dirait que ta fonction n'est pas définie).

Reply

Marsh Posté le 15-02-2005 à 09:49:22    

Et comment je fais pour la déclarer ?
Je trouve son prototype nulle part dans les fichiers include...

Reply

Marsh Posté le 15-02-2005 à 09:52:37    

#include <conio.h> à tout hasard ?

Reply

Marsh Posté le 15-02-2005 à 09:52:37   

Reply

Marsh Posté le 15-02-2005 à 10:16:38    

"_inp" n'est pas présent dans conio.h
Et, il parait que ces fonctions sont obsolètes et qu'il faut utiliser CreateFile

Reply

Marsh Posté le 15-02-2005 à 10:20:06    

T'utilises quel compilateur pour ne pas les avoir dans conio.h ?
 
Secondo, si tu la déclares à la main comme ça:
 

Code :
  1. #ifdef __cplusplus
  2. extern "C" {
  3. #endif
  4. int __cdecl _inp(unsigned short);
  5. #ifdef __cplusplus
  6. }
  7. #endif


Est-ce que ça fonctionne ?


Message édité par Lam's le 15-02-2005 à 10:21:11
Reply

Marsh Posté le 15-02-2005 à 10:25:46    

J'utilise Dev C++ v4.9.9.1
Mais je vais tenter ta méthode...

Reply

Marsh Posté le 15-02-2005 à 10:29:39    

Arf, effectivement. Gcc doit être le seul compilo sous windows à ne pas avoir ces fonctions là. :) (Borland, Visual C++, ICC, et même Watcom l'ont).
 

Reply

Marsh Posté le 15-02-2005 à 10:39:07    

J'utilise Borland C++ 5 pour l'interface graphique de la transmission radio, je vais regarder si ces fonctions y sont...

Reply

Marsh Posté le 15-02-2005 à 10:44:04    

Raté aussi...

Reply

Marsh Posté le 15-02-2005 à 10:45:09    

J'ai ajouté les déclarations indiquées dans le fichiers conio.h de DevC++. Le programme se compile, se linke mais... plante! lol

Reply

Marsh Posté le 15-02-2005 à 11:29:57    

Ce qui est normal sous WinNT.
Fais une recherche sur le forum, sujet abordé X fois.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 15-02-2005 à 11:40:25    

HelloWorld a écrit :

Ce qui est normal sous WinNT.
Fais une recherche sur le forum, sujet abordé X fois.


J'étais parti du principe qu'il utilisait ceci:
   http://www.logix4u.net/inpout32.htm
 
 

Reply

Marsh Posté le 15-02-2005 à 12:29:51    

Il serait surprenant que ta carte radio communique sur le port parallèle, ça serait pas le port série, plutôt ?
Sous Win32, ça va pas être facile d'attaquer le port série avec des "_inp, inportb, _outp, outportb", l'accès direct aux port I/O étant protégé par l'OS (si, si, on m'a dit que Windows était un OS ;))
Tu peux accéder aux données des ports série via des fichiers virtuels. Cherche du côté des fonctions de l'API Win32 : CreatFile, SetCommTimeouts, Get/SetCommState, Get/SetCommModemStatus, struct DCB...
Maintenant, si c'est réellement sur port parallèle, good luck. Y'a rien(?) de moins standard que la réception de données sur port //.

Reply

Marsh Posté le 15-02-2005 à 19:45:22    

Pour mon info, quel est le type de l'interface physique : un bus série (synchrone) ou vraiment une liaison parallele (a)synchrone ?


Message édité par Stroustrup-Junior le 15-02-2005 à 19:45:37
Reply

Marsh Posté le 15-02-2005 à 20:07:31    

lsdyoyo a écrit :

Sous Win32, ça va pas être facile d'attaquer le port série avec des "_inp, inportb, _outp, outportb", l'accès direct aux port I/O étant protégé par l'OS (si, si, on m'a dit que Windows était un OS ;))


WindowsNT oui. Sous Win9x les accès directs aux ports sont autorisés.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 16-02-2005 à 09:14:06    

J'utilise la DLL inpout32.dll et les fonctions associées livrées avec ("Inp32" et "Oup32" ). Les fonctions ont l'air de fonctionner...
Il faut maintenant que je teste la communication entre le robot et le PC. En fait, la liaison se fait entre un robot (le S3R1 "road runner" de serielectronique.com) et la station de controle sous WIN_XP.
La carte radio est connéctée sur le port parallèle du PC... :pt1cable:

Reply

Marsh Posté le 16-02-2005 à 09:17:25    

Extraits de la doc fournie avec le robot :
"La carte communique avec le PC via le port parallèle. Elle utilise le port DATA en entrées et le port STATUS pour les sorties."

Reply

Marsh Posté le 16-02-2005 à 09:41:39    

Quelles sont les adresses des registres STATUS et DATA ?
Je sais qu'elles varient entre 0x378 et 0x380 mais l'adresse exacte, je ne la connais pas...


Message édité par Le Troll O Silicium le 16-02-2005 à 09:42:07
Reply

Marsh Posté le 16-02-2005 à 10:16:11    

http://img224.exs.cx/img224/9617/bartgoogle2gi.gif

Reply

Marsh Posté le 16-02-2005 à 10:28:34    

J'avoue, c'était une question nulle...
J'ai trouvé les adresses sur logix4u.net

Reply

Marsh Posté le 16-02-2005 à 11:13:29    

Les fonctions Inp32 et Oup32 marchent nickel !

Reply

Marsh Posté le 17-02-2005 à 23:24:45    

Si t'es administrateur oui.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed