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

  FORUM HardWare.fr
  Programmation

  gestion du port parallèle en C++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

gestion du port parallèle en C++

n°45222
bab
Posté le 08-07-2001 à 18:32:12  profilanswer
 

Est-ce que quelqu'un saurait gérer le port parallèle sous windows en C++ ?

mood
Publicité
Posté le 08-07-2001 à 18:32:12  profilanswer
 

n°45230
electricbl​ue
Pas très inspiré...
Posté le 08-07-2001 à 20:19:44  profilanswer
 

J'avais ce genre de pb à régler aussi.
Ya plusieurs solutions:
1)tu integre de l'assembleur ds ton code C++
2)tu utilises des programmes deja fait pour ca (payants et non payants)
3)tu utilises les API de ce cher windows
4)t'utilise une dll specialement crée pr ca
 
Pr ma part, je pouvais pas integrer de l'assembleur directement ds mon code paske je suis sous borland C++ 5.0 et ya pas l'utilitaire qui permette de mettre de l'assembleur (il s'appelle turbo assembleur de borland).
Alors je me suis rabattu sur les API, mais le resultats est pas trop top. Finalement, l'utilisation d'une dll d'acces aux ports est le meilleure slution (pr l'instant...)

n°45248
bab
Posté le 08-07-2001 à 23:34:02  profilanswer
 

Tu aurais par hasard une dll dont tu parles (pour inspiration ou utilisation).
Mon but est d'envoyer des données traitées à partir d'un fichier, sur le port parallèle. Donc il faudrait que je complète le programme que j'ai fait, qui s'occupe déjà des données.

n°45262
Belegar
Posté le 09-07-2001 à 01:23:23  profilanswer
 

Tu trouveras tout ce que tu cherches sur le site suivant :
 
http://www.programmationworld.com
 
section Langage -> électronique :)
 
Fais attention, les fonctions inp() et outp() ne fonctionnent pas sur les systèmes NT !


---------------
Belegar The Dwarf
n°45365
electricbl​ue
Pas très inspiré...
Posté le 09-07-2001 à 14:33:44  profilanswer
 

OK, je vais t'envoyer les liens, ms là je peux pas trop.
Alors à ce soir!!!
(sois patient  ;) )

n°45391
Belegar
Posté le 09-07-2001 à 15:38:53  profilanswer
 

pas besoin de dll en C++ !! tout est fourni dans les librairies standards. Sous VC++, c'est dans conio.h, sous djgpp c'est danc pc.h, sous linux c'est dans asm/io.h (généralement) etc...


---------------
Belegar The Dwarf
n°45419
electricbl​ue
Pas très inspiré...
Posté le 09-07-2001 à 16:39:31  profilanswer
 

Non pas tt est fourni!!
En tt cas avec le borland c++ 5.0 que j'utilise, t'as pas trop le choix, soit API soit dll, sinon fo avoir le turbo assembleur (tres difficile à trouver, meme chez l'editeur).
Sinon g pas testé VC++, ms ca m'etonnerai qu'on ait acces aussi facilement aux hardware ss win 32 bits!!
 
Sinon, voici le lien vers une page sur le port // (entre autres), vers la fin ya pleins de liens pr des utilitaires ou dll de gestion de port //:
http://www.lvr.com/parport.htm
 
voir aussi le lien (tiré de la meme page) pr l'utilisation des dll en VC++ et VB: http://www.boondog.com/tutorials/dlltutor/dlltutor.htm
 
voila, bonne lecture!!!  :)

n°45473
HelloWorld
Salut tout le monde!
Posté le 09-07-2001 à 19:39:20  profilanswer
 

"1)tu integre de l'assembleur ds ton code C++ "
 
pas la peine : fo passer par l'ecriture sur les ports et ca ben ca marche pas en win32 (instruction protegee)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°45511
electricbl​ue
Pas très inspiré...
Posté le 10-07-2001 à 00:37:42  profilanswer
 

HelloWorld > meme pas essayé
par contre les dll marchent tres tres bien (j'utilise une dll qui est faite avec les fonctions inp et outp du VC++)

n°45788
Belegar
Posté le 10-07-2001 à 20:04:09  profilanswer
 

Mais bien sûr que si ça marche en Win32. Ça ne marche pas sous les systèmes NT, mais il est possible de contourner le problème en changeant les droits momentanément ou en passant par l'API.


---------------
Belegar The Dwarf
mood
Publicité
Posté le 10-07-2001 à 20:04:09  profilanswer
 

n°45796
HelloWorld
Salut tout le monde!
Posté le 10-07-2001 à 21:19:47  profilanswer
 

:??:
quand je dis ke ca marche pas, c'est ke faire:
 
_asm
{
    mov dx, 0x60
    in  ax, dx
}
 
ben ca marche pas
apres si tu augmente ton nivo de priorite via les API ca n'a rien a voir avec l'assembleur
 
"il est possible de contourner le problème en changeant les droits momentanément ou en passant par l'API."
 
c'est koi la difference ? on passe par les API dans le but de changer les droits....
ensuite tu changes pas les droits de ton executable ... sous windows les executables ne peuvent avoir une priorite RL0, seul du code offert en tant que service genre dll ou VxD peut avoir cette priorite ...
et tu dis ke ca marche en win32n, mais moi j'ai essayé, j'ai fais un petit executable 32 bits ki fait "entrez un numero de port", "voulez vous lire ou ecrire une valeur sur ce port ?" etc ...
ben sous DOS ca marche nickel (quand compilé en DOS biensur) et sous win ben ...
ah ca oui il ecrit la valeur sur le port mais si je la relit derriere ben c'est comme si j'avais rien fait => mes in et out sont ignorés.
 
je me suis documenté et résultat : ke ce soit NT ou 95/98, tu peux pas le faire directement
fo changer le nivo de priorite
pour ca soit tu fais une dll soit tu fais un VxD afin d'avoir un nivo de privilege maximal (=> l'instruction est protegee).
 
sinon en effet ces dll marchent nickel
"par contre les dll marchent tres tres bien (j'utilise une dll qui est faite avec les fonctions inp et outp du VC++)"
 
mais ca m'etonnerais qu'elle soit ecrite avec inp et outp de VC++ puisque a ma conaissance ces fonctions n'existent que sous DOS


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°45822
electricbl​ue
Pas très inspiré...
Posté le 11-07-2001 à 00:16:04  profilanswer
 

HelloWorld : "mais ca m'etonnerais qu'elle soit ecrite avec inp et outp de VC++ puisque a ma conaissance ces fonctions n'existent que sous DOS  "
 
J'ai fais que reprendre le commentaire du code cpp fourni avec la dll, ms on s'en fout de ca vu que ca marche!!!

n°45827
Acidechaos
Posté le 11-07-2001 à 00:55:35  profilanswer
 

pas mal le site programmation world :)

n°45866
electricbl​ue
Pas très inspiré...
Posté le 11-07-2001 à 10:37:59  profilanswer
 

Question bonus: si on travaille en mode ECP ou EPP du port //, est-ce que si j'envoie des données (sur la partie data du port) en utilisant la fonction de la dll qui fait exactement la meme chose que "outp", les signaux de handshake sont générés automatiquement??

n°45940
HelloWorld
Salut tout le monde!
Posté le 11-07-2001 à 14:46:38  profilanswer
 

pourras tu publier ici le code de cette dll (la partie outp uniquement, pas la partie qui change la priorite)
merci :)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°46021
electricbl​ue
Pas très inspiré...
Posté le 11-07-2001 à 20:21:06  profilanswer
 

Bon, voici le lien direct vers la dll tant convoitée:
http://www.boondog.com/tutorials/dlltutor/8255.zip
 
Voici le code de la fonction de sortie (ce code est ds le zip):
 
// ------------------------------------------------------
//   FUNC: Out8255
//   DESC: uses Microsoft's Visual C++ _outp() function
//         to output a PortData to PortAddress
// ------------------------------------------------------
 
short _stdcall Out8255( int PortAddress, int PortData )
{
  short Dummy;  
  // Need Dummy since _outp officially returns int  
  // short is a 16-bit integer in Win32 C++
  // whereas int is 32-bit integer Win32 C++
  // use (short) to force returning 16-bit integer
  // back to VB
  Dummy = (short)(_outp( PortAddress, PortData ));
 
  return(Dummy);
 
}; // end of Out8255
 
Et ya meme pas de changement de priorité (en tt cas pas ds ces fichiers).
En parlant de chagement de priorité, tu voulais ptete dire les fonctions API qui permettent de l'utiliser???

n°46066
bab
Posté le 12-07-2001 à 09:07:09  profilanswer
 

c'est bon, tout marche comme il faut en utilisant la librairie <conio.h> (avec _outp)
merci Belegar pour le lien que tu as mis

n°46439
HelloWorld
Salut tout le monde!
Posté le 12-07-2001 à 20:15:13  profilanswer
 

j'ai regarde ce code et decouvert avec grande surprise que sous VC++ et sous windows95 ben outp ca existe (pas sous le Borland :()
alors cette histoire de priorite ke je vous ai fait chier avec ben c'est ke pour NT alors ... il me semblait que le source de la mega dll ke j'avais pompé disais ke sous 95 c'etait necessaire aussi
en tout cas sous 95 j'ai pu verifier ke ca marche
moi avec mon prog j'avais du boire je sais pas mais ca vait fouaré ... a moins ke je me soit gouré de port va savoir.
je pense en fait que cette dll offrait une fonction qui marche et sous 95 et sous NT ...
on en apprend tous les jours ;)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°46443
electricbl​ue
Pas très inspiré...
Posté le 12-07-2001 à 20:35:28  profilanswer
 

Ouais c cool pr ceux qui ont VC++
Par contre, la dll marche avec tt les win, donc plus besoin de se faire chier à tt reécrire soi-même!! (reste à savoir comment l'utiliser correctement)
 
Sinon, personne pr répondre à ma question posée plus haut sur le handshake???

n°46475
bab
Posté le 12-07-2001 à 22:55:47  profilanswer
 

je sais pas si ça répond à ta question mais dans mon prog, il faut que je valide chaque donnée en faisant un créneau d'horloge à l'adresse 0x37A càd :
 
_outp (0x378, data);
_outp (0x37A, 0);
_outp (0x37A, 1);
_outp (0x37A, 0);

n°46476
electricbl​ue
Pas très inspiré...
Posté le 12-07-2001 à 23:03:12  profilanswer
 

Oui, en quelque sorte, enfin je sais pas  :)  
J'avais lu qu'en mode EPP ou ECP, des signaux de handsake étaient générés, et je sais pas s'il fo les créer soi-même ou s'ils sont crée automatiquement.
Tu me rassures qd meme 1 peu, vu qu'en utilisant des fonctions de bases d'acces aux ports, on ne dervait faire sortir que les données voules.

mood
Publicité
Posté le   profilanswer
 


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

  gestion du port parallèle en C++

 

Sujets relatifs
Gestion des fenêtres en javascript[Delphi] Gestion des apostrophe dans une chaine
[C] Port série sous winQuel langage pour une gestion commerciale ?
Comment envoyer des données sur le port USB???? Par tous les moyens...interfaçage par le biais du port parallèle
Visual C++ Gestion de la mémoire...BTS informatique de gestion et DUT genie informatique
[MySQL] Gestion des utilisateurs 
Plus de sujets relatifs à : gestion du port parallèle en C++


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