begin process at 2008 05 12 02:38:28
1 170 129 membres
34 nouveaux aujourd'hui
13 956 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PORT PARALLELE SOUS WIN XP


Information sur la source

Catégorie :Périphériques Niveau : Initié Date de création : 08/03/2004 Date de mise à jour : 23/03/2004 16:20:08 Vu / téléchargé: 45 404 / 11 343

Note :
7,88 / 10 - par 16 personnes
7,88 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (92)
Ajouter un commentaire et/ou une note

Description

Ce source permet d'écrire,de lire sur le port parallele LPT1 ou 2 et de s'en servir comme E/S TTL avec en bonus quelques astuces et fonctions permettant de récupérer l'heure et date machine et fonction pour lire et écrire dans un fichier.
tout cela sous Win Xp.

Conclusion

Aucun bug connu et il sera bientot accompagné par la gestion du port rs232 ou COM
j'ai rajouter une aide + un tableau du port parallele et les fonctions pour faire du bidirectionnel
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   Source_port_para
    • Source_logiciel.rarTélécharger ce fichier [Réservé aux membres club]39 113 octets

Télécharger le zip

  • signaler à un administrateur
    Commentaire de LordBob le 08/03/2004 19:10:34

    voila une source qui nous change !!!

  • signaler à un administrateur
    Commentaire de gagah1 le 09/03/2004 10:50:53

    Salut!
    Je comprends rien sur ce fichier.rar ? Où sont les codes sources?
    Merci!!!!!!!

  • signaler à un administrateur
    Commentaire de lolo32 le 09/03/2004 11:23:17

    Voila enfin une source que l'on espérais plus
    CHAPEAU

    Les sources sont dans l'archive RAR

  • signaler à un administrateur
    Commentaire de exterminabur le 09/03/2004 15:52:42

    Salut a tous merci pour la note et vos commentaires chaleureux car moi ausi je la cherchai cette source mais je ne l'avais pas trouvée donc je l'ai inventé avec l'aide de mes recherches sur le net...
    sinon oui les sources sont dans un fichier .rar il suffit de l'ouvrir avec winrar et en plus je l'ai mi à jour côté docs en y ajoutant un fichier d'explications.
    voila voila bonne continuation à tous et merci aux créateurs de ce site
    qui nous permettent d'aller de l'avant...
    @
    exterminabur

  • signaler à un administrateur
    Commentaire de angeliz_dan le 13/03/2004 17:25:50

    Bonjour exterminabur

    ouf ça y est j'ai réussi à utiliser la DLL et envoyer des bits sur le port // graçe à tes sources (test réalisé en MFC  visual ++ 7)

    Merciiiiiiiiiiiiiiiiiii

    par encore tester le réception mais c'est déja çà

    Cordialement

    Angeliz

  • signaler à un administrateur
    Commentaire de thenono le 16/03/2004 17:04:52

    Salut tous

    je dois être con, mais j'ai un petit pb avec le prog sous 2000.
    J'utilise dev c++ 4, je pense avoir suivi les recommendations (sauf la partie de la création d'un fichier .exe car je ne pense pas que se soit possible avec dev c++) et j'ai l'erreur suivante quand je compile :
         implicit declaration of function 'int_outp(...)'
    Une idée de comment résoudre ce pb pour pouvoir exécuter le prog ?

    Thanks,

    Nono

  • signaler à un administrateur
    Commentaire de exterminabur le 16/03/2004 17:54:20

    salut :-)
    je viens de vérifier
    et la biblio qui te manque et la <conio.h>
    donc tu dois rajouter
    #include <conio.h>

    essaye
    @+
    exterminabur

  • signaler à un administrateur
    Commentaire de thenono le 17/03/2004 15:56:42

    Salut

    j'ai une petite question.
    Je test le prog pour le port //, ca fonctionne,  je me suis fait un signal d'horloge, mais je n'arrive pas à atteindre une fréquence supérieur à 32Hz. Est-ce que quelqu'un sait d'où celà pourrait venir ?

    Nono

  • signaler à un administrateur
    Commentaire de lpikachu58 le 22/03/2004 14:02:31

    c'est nul autant utiliser le dll portIO.dll qui est beaucoup plus stable que ton code

  • signaler à un administrateur
    Commentaire de exterminabur le 22/03/2004 14:19:24

    je ne vois pas en quoi mon code est instable!
    ensuite le dll portIO.dll est issu de la lib et *.h de mon source.
    en plus cela permet à ceux qui ne savent pas implanter une dll dans leur code d'utiliser le prot // comme E/S TTL.
    enfin si tu as mieux montre nous un code avec ta dll cela peut servir à tout le monde surtout pour ceux qui ont essayé de faire marcher le port // sous win 2k/xp sans succès.
    je n'ai fais que proposer une solution et un exemple car il n'y en exister pas d'aussi clair et détailler sur bon nombre de site de code et de source.
    @+

  • signaler à un administrateur
    Commentaire de angeliz_dan le 22/03/2004 14:35:46

    Salut exterminabur

    Je confirme ton code est très stable sous xp pro, visual c++ .net
    il m'a permis de mettre à jour un de mes logiciels
    Encore merci

    bonne journée

  • signaler à un administrateur
    Commentaire de atsouet le 23/03/2004 12:29:18

    salut exterminabur, j'ai un 'tit probleme pour faire fonctionner ton prog, c'est avec "winio_nt.h", je ne la trouve pas dans le .rar et j'ai l'impression que c'est a cause de ça ke le prog ne fonctionne pas, est-ce parce que j'utilise   Visual Studio .NET  ?
    merci de me venir en aide, c'est assez pressé, merci d'avance ;-)

    @+        François

  • signaler à un administrateur
    Commentaire de lpikachu58 le 23/03/2004 13:37:01

    Je ne vois pas l'intérêt de réinventer la roue.
    Chez moi pas fiable pour faire du temps réel

    @+

  • signaler à un administrateur
    Commentaire de angeliz_dan le 23/03/2004 15:13:49

    bonjour atsouet

    pour ma part j'ai ajouté WinIo.lib dans le dossier Source File
    dans mon prog en MFC visual studio.net avec certain include de portpara

    et plus de problême du winio_nt.h  

    Cordialement

  • signaler à un administrateur
    Commentaire de exterminabur le 23/03/2004 15:35:58

    Re salut à vous noble programmeur
    lpikachu58, mon prog n'a pas été réalisé pour faire du temps réel
    et je ne suis pas sûr que l'on puisse faire du temps réel avecle port para.
    mais si tu y arrives cela serait cool si tu nous faisais partager ton source ou/et un exemple d'applicatif détaillé.
    je pourrais ainsi améliorer mon source et revoir mon applicatif perso.
    merci de ton intervention qd même cela fait avancer le scmilili... le schmilblick...
    @+
    exterminabur

  • signaler à un administrateur
    Commentaire de angeliz_dan le 23/03/2004 15:46:09

    Bonjour

    temps réel avec le port //  oups !!!
    mais part contre il est bidirectionnel
    comment faire ???

    Cordialement

  • signaler à un administrateur
    Commentaire de exterminabur le 23/03/2004 16:18:36

    salut angeliz_dan
    j'ai rajouté un fichier text pour expliquer la lecture et l'écriture sur le port parallele
    ainsi tu pourras sûrement faire du bidirectionnel
    sieur exterminabur @ ton service!
    ;-)
    @+
    Benoît

  • signaler à un administrateur
    Commentaire de poliotech_jul le 26/03/2004 15:44:15

    Salut à tous,

    Je suis nouveau connecté et déjà satisfait. c'est exactement le code qu'il me fallait.
    Merci et bravo exterminabur
    @+

    Poliotech_jul

  • signaler à un administrateur
    Commentaire de angeliz_dan le 26/03/2004 17:29:35

    Bonjour exterminabur

    pour le bidirectionnel, en fait je parlais de l'adresse  0x378
    effectivement pour recevoir j'utilise bien _inp(0x379)

    sur un vieux pc atari st 520 c'etait possible.

    mais ce n'est pas important

    Encore merci pour ton prog

    Cordialement

    Angeliz



  • signaler à un administrateur
    Commentaire de zorlac le 06/04/2004 15:55:27

    pas mal ton code, il m'a bien servi ;-)
    je ne vois pas pq lpikachu58 cherche des poux, c très stable sous 2000, surtout que l'intégrer directement limite certaines dépendance, sauf si on fait un link static avec MinDependency ;-)

  • signaler à un administrateur
    Commentaire de angeliz_dan le 25/04/2004 19:09:29

    Bonjour

    info:
    pour placer le port 0X378 en entrée il faut auparavant configurer
    le bit 5 à 1 de 0x37A

    Cordialement



  • signaler à un administrateur
    Commentaire de dronome le 05/05/2004 23:24:49

    Bonjour à tous !

    Tout d'abord, je tiens à préciser qu'il faudrait peut-être remercier le véritable auteur de ce code... http://www.internals.com

    Il n'y a rien de mal à pomper du code mais de là à vouloir en faire sa gloire, je trouve ça un peu moyen qd meme... Mais bon, si tu pense progresser en prog comme ça, pk pas ! ;-)

    Morbidux.

  • signaler à un administrateur
    Commentaire de angeliz_dan le 06/05/2004 10:28:40

    Bonjour dronome

    Exterminabur  à ajouté des lignes de code à ce programme
    il n'a pas précisé que c'etait lui le créateur de ce soft,

    donc lire les posts avant de dire ce qu'il n'est point .

    bonne journée et merci à exterminabur

    cordialement



  • signaler à un administrateur
    Commentaire de dronome le 06/05/2004 11:49:11

    Bonjour angeliz_dan,

    "Exterminabur  à ajouté des lignes de code à ce programme
    il n'a pas précisé que c'etait lui le créateur de ce soft,"

    Qu'a-t-il ajouté comme lignes ? Il n'a fait qu'un prog utilisant cette librairie...

    "donc lire les posts avant de dire ce qu'il n'est point ."

    Quels posts parlent de ce qu'il a ajouté ???

    An postant mon précédent message, je voulais juste ajouter qu'il serait bien de remercier l'aureur de la librairie de fonctions... Il ne suffit pas de rajouter son nom pour s'approprier un code source (Micro$oft en sait qqchose....)

    Bonne journée à toi aussi...

    Morbidux.

  • signaler à un administrateur
    Commentaire de exterminabur le 06/05/2004 13:58:27

    bonjour dronome
    tout d'abord merci à angeliz_dan de prendre ma défense.
    Ensuite,j'ai eu la librairies et le dll sur ce site (cppfrance).
    donc mon prog n'est pas sur ces fichiers mais sur l'utilisation du port parallele que personne n'a pu m'aider a utiliser et configurer sur Win xp sauf l'auteur de ce dll que j'aurais du en effet remercier et citer.
    de plus , ce dll ne permet que de débloquer les ports que win xp nous empeche d'utiliser. Mon prog lui explique ,au mieux que j'ai pu, comment ecrire sur le port parallele + ces adresses etc... à l'aide de ces librairies.
    Enfin, je n'ai rien prétendu sur le fait que j'en étais l'auteur ou non.
    et oui je ne le suis pas. Mon but n'était et est que de donner accès un exemple le plus détaillé possible sur le port parallele plus des bonus utiles (à mon gout).
    donc t'as raison de présicer que ce n'est pas moi l'auteur.
    Par contre, tu parles de ce soft, je ne suis pas d'accord car c'est bien moi l'auteur de ce soft.En effet c'est moi qu'il l'ai créé et utilisé sans aide extérieure excepté la dll et la librairie correspondante.
    Donc , c'est comme une biblio comme <XXXX.h> tu ne précises jamais qui est à l'origine de cette biblio que je crois mais pourtant tu crées bien un soft, non?
    donc au mieux de dire que je ne suis pas honnête, dit le autrement en rectifiant l'oubli et l'omission que j'ai faite et d'apporter ton aide en donnant des sites de références cela est plus utiles car je crois que tous ceux qui mettent leur codes sur ce site ne veulent pas tjs en tirer des mérites ou des louanges mais plutot faire part de leurs expériences ou d'exemples puisque ce site est la pour cela : s'entraider en échangeant des connaissances en code.
    donc je présente mes excuses envers le ou les auteurs du dll et de la librairie correspondante; je ne fais que l'utiliser sans en tirer gloire ou bénéf.
    @+
    exterminabur

  • signaler à un administrateur
    Commentaire de tsycraft le 18/05/2004 15:38:35

    Ton code m'interesse enormement pour mon projet de cette année : lire les données d'un fpga à partir du byteblaster grâce à un logiciel free. Mais malheuresement je rencontre des erreurs sous visual studio.net :

    'DefaultDomain' : chargé 'c:\winnt\microsoft.net\framework\v1.0.3705\mscorlib.dll', aucun symbole chargé.
    'parallele' : chargé 'C:\Documents and Settings\Administrateur\Mes documents\Projets Visual Studio\parallele\bin\parallele.exe', symboles chargés.
    'parallele.exe' : chargé 'c:\winnt\assembly\gac\system.windows.forms\1.0.3300.0__b77a5c561934e089\system.windows.forms.dll', aucun symbole chargé.
    'parallele.exe' : chargé 'c:\winnt\assembly\gac\system\1.0.3300.0__b77a5c561934e089\system.dll', aucun symbole chargé.
    'parallele.exe' : chargé 'c:\winnt\assembly\gac\system.drawing\1.0.3300.0__b03f5f7f11d50a3a\system.drawing.dll', aucun symbole chargé.
    'parallele.exe' : chargé 'c:\winnt\assembly\gac\accessibility\1.0.3300.0__b03f5f7f11d50a3a\accessibility.dll', aucun symbole chargé.



    Je pense avoir pourtant suivi tes instructions alors si quelqu'un peut m'aider ça serai sympa??????????????

  • signaler à un administrateur
    Commentaire de angeliz_dan le 18/05/2004 21:45:13

    Bonsoir

    tu programmes en Mfc ?? car moi ça fontionne mais avec quelques
    modif du projet

    bye

  • signaler à un administrateur
    Commentaire de tsycraft le 19/05/2004 15:29:23

    c bon plus de probleme j'ai pu liberer les ports i/o du port para grace à ce ptit utilitaire: userport.

  • signaler à un administrateur
    Commentaire de c_cheurlin le 25/05/2004 15:51:38

    Bonjour a tous,

    Merci pour ton prog, il marche presque bien mais je pense que le pbl vient plus de moi. En effet, je n'arrive pas à lire le port // Je veux récupérer des infos transmises à une imprimante. J'execute le prog, ca marche mais dans le fichier de sortie rien??? J'obtiens juste les heures d'execution des cycles et pas ce qui circule sur le port. Je pensais que l'imprimante dialoguerait avec le PC lorsqu'on demande d'imprimer qq chose ou lorsqu'il y a une erreure et que je recevrais des données pour tester le prog. Mais rien !!! Est ce que qq un peut m'aider SVP.

  • signaler à un administrateur
    Commentaire de marcelteam le 14/09/2004 15:56:37

    J'ai testé ce code sous Win 95, 98, 2000 et XP et ça marche impeccable !

  • signaler à un administrateur
    Commentaire de CYouness le 17/10/2004 12:43:22

    c cool ton programme. merci..........

  • signaler à un administrateur
    Commentaire de exterminabur le 17/10/2004 14:53:48

    merci
    de rien
    et bonne chance a tous

  • signaler à un administrateur
    Commentaire de jdelamarre le 27/10/2004 20:52:32

    je souhaite le recompiler avec BCC55 et ca ne marche pas
    merci de m'aider
    E:\Borland\Source_logiciel>bcc32 portpara.cpp
    Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
    portpara.cpp:
    Warning W8036 ./Source/Dll/WinIo.h 12: Non-ANSI keyword used: '_declspec'
    Warning W8036 ./Source/Dll/WinIo.h 13: Non-ANSI keyword used: '_declspec'
    Warning W8036 ./Source/Dll/WinIo.h 14: Non-ANSI keyword used: '_declspec'
    Warning W8036 ./Source/Dll/WinIo.h 15: Non-ANSI keyword used: '_declspec'
    Warning W8036 ./Source/Dll/WinIo.h 16: Non-ANSI keyword used: '_declspec'
    Warning W8036 ./Source/Dll/WinIo.h 17: Non-ANSI keyword used: '_declspec'
    Warning W8036 ./Source/Dll/WinIo.h 18: Non-ANSI keyword used: '_declspec'
    Warning W8036 ./Source/Dll/WinIo.h 19: Non-ANSI keyword used: '_declspec'
    Warning W8036 ./Source/Dll/WinIo.h 20: Non-ANSI keyword used: '_declspec'
    Warning W8036 ./Source/Dll/WinIo.h 21: Non-ANSI keyword used: '_declspec'
    Error E2268 portpara.cpp 40: Call to undefined function '_outp' in function ecri
    tPRN(int)
    Warning W8071 portpara.cpp 59: Conversion may lose significant digits in functio
    n test_fichier(FILE *,FILE *)
    Warning W8071 portpara.cpp 63: Conversion may lose significant digits in functio
    n test_fichier(FILE *,FILE *)
    *** 1 errors in Compile ***

  • signaler à un administrateur
    Commentaire de bricolomi le 27/11/2004 11:08:18

    Bonjour
    je programme en Delphi 6 je voudrais savoir comment utiliser votre Dll car je n'ai encore jamais utilisé ce genre de programme avec delphi
    merci
    dede

  • signaler à un administrateur
    Commentaire de 2N2222A le 29/01/2005 17:03:21

    Si je ne me trompe, la fonction outp (de conio.h) utilisée dans cet exemple est obsolète et prohibée. Les plateformes professionnelles (Borland C++ Builder 6 par exemple) l'ont virée. Officiellement, elle n'existe plus.
    C'est un vrai problème, car l'accès direct à un port reste un besoin fréquent.
    Honnêtement, je ne suis pas séduit par le code ancestral d'exterminabur, car je ne suis pas tenté de revenir à du BC4, 4.5 ou 5. Il me semblerait logique d'arrêter de coder comme au siècle dernier, et de laisser tomber le DOS/Win16 pour du vrai Win32 multiTâche/multiThread.
    Je vais donc me repencher sur la fameuse DLL dlportio, qui est a priori une solution plus moderne... que je n'ai toujours pas réussi à faire tourner.
    Tout ça pour faire grouiller des bits, pffffffffffffff.
    Cordialement

  • signaler à un administrateur
    Commentaire de exterminabur le 30/01/2005 00:25:39

    ouais je sais c vieux mais ca marche
    du moins on peut faire qqchose avec
    mais je suis pour une évolution bonne et intelligente de ce port
    si tu y arrive je serai ravi et interessé
    alors bon courage
    @+

  • signaler à un administrateur
    Commentaire de angeliz_dan le 30/01/2005 19:15:44

    bonsoir

    eh oui ça marche et même bien.
    même avec windows xp pro,  facile à implémenter en mfc.
    je suis autodidacte jamais eu de prof et j'y suis arrivé,
    donc  encore merci  exterminabur et a son créateur

    Cordialement

  • signaler à un administrateur
    Commentaire de 2N2222A le 30/01/2005 21:42:52

    Salut à tous. Ravi que ce topic continue à vivre.
    En fait, il n'est pas impossible que je revienne à votre solution. Car le tdlportio (qui est un sous-clone gratuit de TVicPort à 50$) n'a pas que des avantages. Par exemple :
    - Quand on est un utilisateur avec des privilèges standards, il faut qu'un administrateur installe le pilote (fichier port95nt.exe). C'est normal mais pénible.
    - Pour des raisons de simplicité/efficacité, la DLL court-circuite le système pour accéder au(x) port(s). C'est donc plus rapide mais n'offre aucune garantie contre les collisions (bon, maintenant je suppose que tout le monde a une imprimante USB ou ethernet, et donc il n'y a plus beaucoup d'activité sur le LPT). Il suffit de faire un peu attention. surtout pour le mode bidirectionnel.

    Quand même un avantage pour tdlportio: il y a l'écriture/lecture en mode rafale (burst), très efficace, qui s'applique bien à mon besoin (gestion d'un debugger JTAG nécessitant la génération de mots série de 256 bits).

    J'ai fini mon IHM et presque fini le traitement. Il me reste le handler LPT, je ne pensait pas que ce serait ça le plus coriace à coder.

    @exterminabur : ta solution est viable, je la garde en secours si j'ai trop de pb avec le DriverLINX.
    Et bien sûr je te remercie et te cire les pompes avec allégresse pour cette intéressante invention.

    Définition du Larousse : INVENTEUR : Qui découvre, retrouve un objet caché ou perdu, un trésor.
    ++

  • signaler à un administrateur
    Commentaire de exterminabur le 31/01/2005 09:57:54

    Merci à toi
    2N2222A
    mais je ne suis pas l'auteur de la dll mais un applicateur de celle ci
    mon prog est bien de moi
    si tu pouvais mettre ton source en lien ou sur ce site
    ca peut nous aider
    merci et bonne continuation à tous
    et à angeliz_dan
    A+

  • signaler à un administrateur
    Commentaire de 2N2222A le 01/02/2005 02:16:56

    Re,
    Bon, voilà quelques nouvelles.
    Ainsi que l'avait précisé dronome, il est bon de faire un tour sur http://www.internals.com et récupérer le pack winio. Et effectivement, ce pilote est une petite merveille. Je le préfère à tdlportio car il est plus facile à mettre en place, et surtout il est bien documenté, avec des exemples...
    >>>>> Donc, je l'adopte. <<<<<<
    Il faut juste quelques petits réglages pour rendre tout cela compatible avec BCB6. Entre autre, ne plus utiliser _outp() qui n'existe plus mais WritePort(), convertir winio.lib avec l'utilitaire COFF2OMF, virer toutes les déclarations WINIO_API de winio.h en lui ajoutant :
    typedef int BOOL;
    typedef unsignde char BYTE;
    typedef unsigned short WORD;
    typedef unsigned long DWORD;
    typedef BYTE *PBYTE;
    typedes WORD *PWORD;
    typedef void *HANDLE;
    typedef char *PSTR;
    #define NULL 0
    qui correspond au contenu de Types.h que je n'ai pas dans mon environnement. Bref, des petites bricoles qui prennent ~1 heure.
    J'ai écrit quelques séquences 00, FF, 55, AA... sur le port en regardant le résultat à l'oscilloscope. Sur ma machine AMD-1GHz+Win2kpro, les crénaux entre deux WritePort() font 2µs, ils sont très propres (flancs raides, pas de rebonds), l'état haut n'est pas très élevé mais normal pour du TTL (3,55V).
    Avec une petite routine de lecture timer dans la boucle, je suis un peu en dessous de 100kHz, avec des signaux stables (gitter inférieur à 1µs). Désolé, je n'ai pas encore regardé si mon BIOS-LPT est en NORMAL/ECP/EPP.

    Pour résumer, ce pack winio fonctionne bien, encore merci à exterminabur de nous l'avoir fait connaître.

    Oooops, 02:18, je vais pioncer.
    ++



  • signaler à un administrateur
    Commentaire de kimmelf2 le 19/02/2005 01:37:02

    2N2222A> tu as le bonjour de 2N1711 et de BC547 :-)

  • signaler à un administrateur
    Commentaire de ricky78 le 25/02/2005 14:40:48

    Bonjour à tous

    J'ai telechargé cette source pour un avoir un exemple d'utilisation de winio.lib. Mon probleme est la rapidité de lecture sur le port série sous XP.

    Je programme sous visual C++ 6.0.
    Tous les exemples que j'ai pu trouver, avant l'appel du _inp ou du _outp il suffit d'avoir le InitializeWinIo(); et le prog ecrit sur le port.

    Or pour moi aucun des exemples ne marchent. Il faut absolument que j'ouvre le port avec un createfile pour faire fonctionner ces exemples

    est ce normal ou dites moi ce que je n'ai pas compris?

    Merci de vos réponses


  • signaler à un administrateur
    Commentaire de kimmelf2 le 26/02/2005 23:19:07

    2N2222A>
    au fait !

    apparemment tu es un electronicien. Est ce cque tu ne connaitrais pas, par hazard, un site qui proposerai des schemas pour faire des extensions serie/parralleles ?

    avec eventuellement aussi :
    - des tutos qui expliqueraient, par ex, comment gerer toutes les lignes du port para
    - des schemas pour faire des cartes PCI (oui je sais, je pousse peut etre un peu la)

    je suis aussi a la recherche d'un truc un peu special : le schema d'une carte permettant de brancher des perifs IDE sur un proc quelquonque, genre 68000 ou autre

    si tu connais ca .... :-)

    merci d'avance

  • signaler à un administrateur
    Commentaire de luminoufo le 07/03/2005 01:39:18

    Bonjours,
    ce topic est fort inéresent car il n'y a pas beaucoup de renseignement en francais sur le web,  mais je n'arrive pas a faire marcher ton prog exterminabure.

    Je travaille avec visual c++ 6.0 et je sais pas comment faire pour atacher c'est fichier:

    winio.def, winio. dsp winio.dsw

    a mon prog que aparement je doit renomer en .lib
    quand je compile il me met ca:

    "Compiling...
    Afficheur1.c
    c:\program files\microsoft visual studio\myprojects\sdfd\afficheur1.c(102) : fatal error C1010: unexpected end of file while looking for precompiled header directive
    Error executing cl.exe.

    Afficheur1.obj - 1 error(s), 0 warning(s)"


    C du chinois pour moi alors si quelqu'un sais m'aider, je lui serais reconnaisent.

    Le prog que je voudrais faire fonctionner est:


    /*  Programme permettant d'afficher des valeurs numériques
        sur un afficheur 7 segments
        Si besoin d'alimentation 5V, utiliser la broche 1 ( alim +5V )  */

    /* librairies */
    #include <stdio.h>
    #include <winio.h>
    #include <dos.h> /* printf et autres */
    #include <conio.h> /* fonction outp */
    #include <stdlib.h> /* fonction system */
    #define DATA 0x378  /* Adresse du bus de donnees */
    #define CONTROL 0x37A /* L'adresse du registre de contrôle */

    void main()

    {
        /* initialisation des variables */
        unsigned char done=0;
        unsigned char Valeur;
        unsigned char Binary;

        /* boucle du programme */
        while (done!=0)
        {

        system("cls"); /* efface l'ecran */
        printf("Entrez une valeur entre 0 et 9 pour l'afficher\n( tout autre nombre quittera le programme... ): "); /* message par défaut */
        scanf("%d",&Valeur); /* prompt */
        switch(Valeur)
        {
        case 0:
            {
                Binary = 63; /* allume les broches a,b,c,d,e,f de l'afficheur ( valeur binaire 00111111 ) */
                break;
            }
        case 1:
            {
                Binary = 6; /* allume les broches b et c de l'afficheur ( valeur binaire 00000110 ) */
                break;
            }
        case 2:
            {
                Binary = 91; /* allume les broches a,b,d,e,g de l'afficheur ( valeur binaire 01011011 ) */
                break;
            }
        case 3:
            {
                Binary = 79; /* allume les broches a,b,c,d,g de l'afficheur ( valeur binaire 01001111 ) */
                break;
            }
        case 4:
            {
                Binary = 102; /* allume les broches b,c,f,g de l'afficheur ( valeur binaire 01100110 ) */
                break;
            }
        case 5:
            {
                Binary = 109; /* allume les broches a,c,d,f,g de l'afficheur ( valeur binaire 01101101 ) */
                break;
            }
        case 6:
            {
                Binary = 125; /* allume les broches a,c,d,e,f,g de l'afficheur ( valeur binaire 01111101 ) */
                break;
            }
        case 7:
            {
                Binary = 7; /* allume les broches a,b,c de l'afficheur ( valeur binaire 00000111 ) */
                break;
            }
        case 8:
            {
                Binary = 127; /* allume les broches a,b,c,d,e,f,g de l'afficheur ( valeur binaire 01111111 ) */
                break;
            }
        case 9:
            {
                Binary = 111; /* allume les broches a,b,c,d,f,g de l'afficheur ( valeur binaire 01101111 ) */
                break;
            }
        default:
    {
        Binary = 0; /* eteint toutes les broches */
                outp(CONTROL,0x00); /* On configure le bus de donnees en sortie */
                outp(DATA,Binary);  /* Ecriture de la valeur dans le registre de donnees */
                done = 2;            /* done != NULL donc la boucle est quitté, fermeture du programme */
                break;
            }
        }


        outp(CONTROL,0x00); /* On configure le bus de donnees en sortie */
        outp(DATA,Binary);  /* Ecriture de la valeur dans le registre de donnees */

        }

        printf("\n\nFin du programme\n"); /* message de fin :p */

    }

    .

  • signaler à un administrateur
    Commentaire de exterminabur le 07/03/2005 09:17:35

    alors je l'ai compilé sur visual 6 c++ aussi
    donc il suffit d'ajouter au projet le fichier .lib
    donc tu compiles une fois ton programme
    puis dans le le menu "Project" puis "Add to project"
    et "Files..." (moi je l'ai en anglais)
    tu vas dans le dossier "Debug"de ton projet et tu sélectionne le fichier "WinIo.lib" puis clique sur "ok"
    si tu le vois pas choisis dans "fichier de type" "Library Files (.lib)" voilà
    Mais auparavant tu dois copier les fichiers "WinIo.dll" , "WinIo.lib",WinIo.sys" et "Winio.vxd" compris dans mon .zip de ce topic (dans mon dossier Debug) dans ton dossier Debug ainsi que tout le dossier "Source" de mon .zip dans le dossier de ton projet (sans modifier son nom de  ce dossier).
    Ca devrai aller mieux
    n'hésite pas à redemander.
    @+

  • signaler à un administrateur
    Commentaire de kimmelf2 le 08/03/2005 14:16:55

    je te donne un petit resume de ton prog :

    #include <stdio.h>
    #include <winio.h>
    #include <dos.h> /* printf et autres */
    #include <conio.h> /* fonction outp */
    #include <stdlib.h> /* fonction system */
    #define DATA 0x378  /* Adresse du bus de donnees */
    #define CONTROL 0x37A /* L'adresse du registre de contrôle */

    // valeurs en hexa pour l'allumage des broches
    unsigned char liste[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F);
    unsigned char STOP=0x00;

    void main()

    {
        unsigned char done=0;
        unsigned char Valeur;
        unsigned char Binary;

        while (done!=0)
        {

        clrscr(); /* efface l'ecran */
        printf("Entrez une valeur entre 0 et 9 pour l'afficher\n( tout autre touche quittera le programme... ): "); /* message par défaut */
        valeur=(unsigned char)egetch(); /* prompt */

        if(valeur>='0' && valeur<='9') Binary=liste[valeur-'0'];
        else
    {
    Binary=STOP;
    done=1;
    }
        outp(CONTROL,0x00);
        outp(DATA,Binary);
        }
    }


    voila, un petit poil plus simple a lire deja qu'un switch qui se contente d'assigner une meme variable :-)

    par contre, est ce que tu accepterais de me transmettre le schemas de ta carte afficheur stp ? j'arrive pas trop a trouver un couple schema-programme  qui marche. qd je trouve l'un, il faut payer pour avoir l'autre !!

  • signaler à un administrateur
    Commentaire de luminoufo le 09/03/2005 00:13:26

    meci les gars ca c de la réponce rapide,

    Alors pour le shéma de ma "carte afficheur" comme tu dit c pas vraimen une carte, c tout juste un afficheur(broche a l'air) ou l'on doit aparement connecter le port // direct

    (ce qui m'etonne car je sais pas si sa ttl peux fournir les 15mA nécessaire pour chaque diode)

    En plus je n'en ai pas vraiment ce qui m'importe ici c de pouvoir commander mon port a ma guise, si j'arrive a faire fonctioner ce prog basique, je me dit que je pourait remplacer un automate (de 3000?) avec mon pc
    juste en placent un multi plexeur derriere pour recomposer un mots de 16bite ca me fait 65000 sorties et entrés (le delire).
    Pour ton shéma je peut juste te donner ce lien:http://freelektronik.free.fr/LEKTRONIK/C3bis.htm#C3b31

    Donc j'essaye ce que tu me dit de faire exterminabure, mais ca marche po; donc résumon:
    je créé un projet(la je bloc deja), moi j'ai choisi win32 aplication, est ce que c ca?
    ensuite je colle tout mon prog, je fait ajouter "files", puis tout ce que tu me dit de faire, et quand je compile il me dit:
    si c'est le .h ==>cannot compile the file "C:\....; no compile tool is associated with the file extension" :=(

    si c'est le .c ==>

    "c:\program files\microsoft visual studio\myprojects\wcsqcx\adzdaz.c(105) : fatal error C1010: unexpected end of file while looking for precompiled header directive
    Error executing cl.exe.

    adzdaz.obj - 1 error(s), 0 warning(s)"

    C peut etre une erreure toute simplle je suis plus electronique que programation
    (a l'ecole on en est encore qu'au tableau a deux dimention, c pour ca j'alucine devan la simplification de mon prog par kimmelf2)
    merci d'avance.

  • signaler à un administrateur
    Commentaire de kimmelf2 le 12/03/2005 00:13:09

    en fait, mon tableau n'est qu'a une dimension :-)

    c'est juste que dans ton prog, dans le switch, tu execute a chaque fois la meme chose : Binary = xxx ;

    moi, tout ce que j'ai fait, c'est de regrouper les valeurs xxx dans un tableau et utiliser ta variable Valeur pour selectionner la bonne.

    juste un truc : evite la fonction system. le C est suffisamment complet pour s'en passer. A trop en prendre l'habitude, on fini par lui passer des params saisis par l'utilisateur, et la, c'est le debut des failles de securite.

    remarque, c'est pas forcemment un mauvais point si tu veux travailler pour billou :-)

  • signaler à un administrateur
    Commentaire de kimmelf2 le 12/03/2005 00:21:48

    j'oubliais, pour tes messages d'erreur :

    pour le .h : ca peut arriver qu'un compilo te dise qu'un .h, c'est pas fait pour etre compile en brut.

    pour le .c : ton message signifie "fin de fichier inattendue pendant la recherche des directives d'entetes precompilees".

    en clair, ca veut dire que tu dois avoir des lignes qui commencent par # (du genre #define ou #ifndef par exemple), que tu demarre une structure de controle, mais qu'elle n'a pas de fin.

    exemple en C d'une structure de controle : if (...) {...} else {...}
    ramene dans les headers precompiles (HPC):
    #ifndef .....
    .......
    #elseif .....
    ......
    #else
    ......
    #endif

    les #elseif et #else sont facultatifs, par contre , le #endif est OBLIGATOIRE

    je crois que ds les HPC, il n'y a pque les #ifdef et #ifndef qui obligent de fermer avec un #endif.
    verifie si tous tes #ifxxx sont bien termines par #endif

  • signaler à un administrateur
    Commentaire de kimmelf2 le 12/03/2005 00:38:04

    dernier truc : les sorties sont en 5Volts normallement. donc soit tu grille ton afficheur, soit tu grille ton port // !!!

    etant donne que tu sera je pense tres embete de grille ton port, protege le en protegeant l'afficheur

    donc, place des resistances de 270 ohms sur chaque segment

  • signaler à un administrateur
    Commentaire de luminoufo le 14/03/2005 01:31:26

    Merci pour le conseille c vrai que ca ne me plairait pas de voir mes sortie paralelle partir en fumé sous mes yeux(une putin de journée lol)
    Non j pensais mettre un optocoupleur a chaque sortie comme protection.
    Sinon le prog que j'esssaye de faire marcher ne contien pas de #if (c celui que tu a amélioré) ca serais winio qui aurais des erreur?

    Pourait tu me dire dans quel type de fichier est ce que je doit faire mon prog? (c/c++ header file?)
    Quand je choisi ca il me met une extension  .h non compilable .

  • signaler à un administrateur
    Commentaire de kimmelf2 le 15/03/2005 14:11:53

    prefere un .c ou .cpp

    les optocoupleurs, ce ne sont que des leds placees en face de phototransistors a l'intrerieur d'un boitier. donc qd tu commande un opto, c'est comme si tu commandais un afficheur ou une simple led. moralite : il te faut aussi une resistance.

    le + simple, si tu veux pas trop t'embeter, tu prend un reseau de resistances en boitier DIL (comme les circuits integres)

    l'ideal reste qd meme de placer une carte d'isolation entre ton port para et la carte de test. le principe de base est simple : 2 buffers unidirectionnels trois etats ou 1 buffer bidirectionnel. le sens des donnees (et donc le sens du bidirect ou la selection d'un unidirect) est donne par une ligne style read/!write

    http://www.electroniquepratique.com/article.asp?mag=IPC&num=10&article=11
    par contre, le texte n'a pas l'air d'etre le bon, mais si tu arrive a te proccurer le mag .... tu pourra peut etre le trouver si y'a une bonne bibliotheque pas loin de chez toi

    http://circuits.epanorama.net/circuits/parallel_output.html un peu ce que tu veux faire je crois :-)

  • signaler à un administrateur
    Commentaire de jpreffu le 20/09/2005 19:49:19

    Bonjour,

    il me reste 2 erreurs en compil DEV4 c++:

    40 portpara.cpp
    implicit declaration of function `int _outp(...)'
    474 portpara.cpp
    `return' with no value, in function returning non-void

    pouvez vous m'aider ??

    Merci

  • signaler à un administrateur
    Commentaire de exterminabur le 21/09/2005 08:56:05

    Salut à toi
    pour la première,il me semble que cela veut dire qu'il manque la déclaration de la fonction _outp.... donc il faut que tu rajoutes sa bibliothèque et ou sa dll (ou lib) comme je l'explique dans le fichier texte du zip ,il me semble...
    sinon pour la seconde, c'est une erreur de c/c++.si tu as un return à la fin d'une fonction celle ci doit être déclarer comme tel:
    "int fonction (void)" et non void fonction(void) qui ne demande pas de return (bien sûr à la place de int tu met ce que tu veux (char,....) ).
    Voilà en espérant que cela t'aide
    Exterminabur

  • signaler à un administrateur
    Commentaire de jpreffu le 21/09/2005 18:44:29

    Bonjour, EXTERMINABUR

    Et oui c'est la première fois, Je débute en DEV++ et par par une appli pas facile.
    Je cherche à piloter une interface moteur pasàpas avec le //.
    Des applis que je maitrisais super avant XP (vive le progrés)
    Pour l'erreur "return with no value , in fonction returning non-void
    il s'agit de ton exemple portpara.cpp!!!!
    Pour l'autre erreur je ne trouve pas dans qu'elle *.h il y a _outp()??
    sinon j'ai bien fait toutes les déclarations et associations comme expliqués.


    @+

  • signaler à un administrateur
    Commentaire de jpreffu le 29/09/2005 19:29:20

    Bonjour,

    Je suis toujours bloqué en DEV C++ pour l'erreur
    "implicit declaration of function `int _outp(...)'"
    Le meme code se compile super en Visual C++ ????
    et mon prog marche bien.


  • signaler à un administrateur
    Commentaire de exterminabur le 30/09/2005 14:40:11

    ouf ca me rassure
    j'espère que cela t'a aidé qd même ^^
    ++

  • signaler à un administrateur
    Commentaire de kimmelf2 le 04/10/2005 18:50:33

    Commandement No 1 :
    Google est ton ami :
    www.google.fr/search?q=_outp   tout betement
    et en prenant lejuste le 1er resultat :
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt__outp.2c_._outpw.2c_._outpd.asp

    voila .....

  • signaler à un administrateur
    Commentaire de jpreffu le 15/10/2005 15:22:28

    Enfin réussi à faire compiler mon appli sur DEV C++, il faut faire les déclarations ci-desous avant d'employer les fonctions:

    HINSTANCE hDlla=LoadLibrary("WinIo.dll");

    FARPROC lpfnGetProcessID=GetProcAddress(HMODULE(hDlla),"InitializeWinIo");
        typedef int (__stdcall * pICFUNC)(void);
        pICFUNC InitializeWinIo;
        InitializeWinIo=pICFUNC(lpfnGetProcessID);

        FARPROC lpfnGetProcess3ID=GetProcAddress(HMODULE(hDlla),"ShutdownWinIo");
        typedef int (__stdcall * pICFUNC3)(void);
        pICFUNC3 ShutdownWinIo;
        ShutdownWinIo=pICFUNC3(lpfnGetProcess3ID);

    FARPROC lpfnGetProcess2ID=GetProcAddress(HMODULE(hDlla),"SetPortVal");
        typedef int (__stdcall * pICFUNC2)(long,short,int);
        pICFUNC2 SetPortVal;
        SetPortVal=pICFUNC2(lpfnGetProcess2ID);

        Et ensuite refermer
    ShutdownWinIo(); //désactivation du contrôle sur le port parallèle
        FreeLibrary(hDlla);

    Voila pour info.Je pilote donc maintenant un moteur Pas à Pas au travers d'une petite interface .
    Merci à tous.
    Salutations.

  • signaler à un administrateur
    Commentaire de MALROCK le 17/10/2005 21:41:34

    EXCUSE MOI 2n2222A mais j'ai pas compris comment tu fais pour compiler se programme du port // avec borland c++ builder 6!!!!!
    pourais tu m'expliquer plus en détail stp?
    merci d'avance
    doz

  • signaler à un administrateur
    Commentaire de HTC34 le 05/03/2006 12:05:11

    Bonjour,

    Voilà un exemple de programme ou l'on peut jouer sur plusieurs tableaux, soft et hard avec la possibilité de contrôler son travail facilement.
    Il en faudrait plus, attaquons nous au port série !
    Merci pour ce développement soft /matériel réaliste.
    Un débutant... (il en faut !)
    Hugues

  • signaler à un administrateur
    Commentaire de exterminabur le 05/03/2006 12:33:30

    Merci de ce compliment

    J'ai eu besoin donc j'ai du en faire

    content que ca serve à tous.
    Amicalement
    Exter

  • signaler à un administrateur
    Commentaire de bracto le 06/03/2006 11:06:52

    Je n'ai pas encore tester le prog de exterminabur, mais deja beaucoup d'info!! HyperCool

  • signaler à un administrateur
    Commentaire de dydyvos le 28/03/2006 16:44:44

    Bonjour.

    J'ai testé le programme sur DEV C++ et j'ai une erreur de linker qui est :

    portpara.cpp: undefined reference to `_outpw(unsigned short, unsigned short)'

    si quelqu'un sait comment régler le problème? Merci d'avance.

  • signaler à un administrateur
    Commentaire de exterminabur le 28/03/2006 18:04:43

    salut
    alors je l'vais fait sur vc studio 6+
    mais regarde dans mon fichier,j'ai expliqué pour l'histoire des fcts _outpw().
    Il y a une .dll à avoir dans ton dossier système de windows et un .lib à associer à ton projet (je ne sais pas comment on le fait sur dec c++)

    voilà

  • signaler à un administrateur
    Commentaire de dydyvos le 28/03/2006 18:09:30

    merci j'vé regardé.
    bonne soirée.

  • signaler à un administrateur
    Commentaire de willemchagrin le 04/05/2006 10:58:23

    Salut Exterminabur,
    Je debute en programmation et je trouvais ta source particulierement interessante. J'utilise Visual C++ et l'edition de liens se fait sans erreur. Cependant, lorsque je lance mon executable, il m'affiche une fenetre avec "portpara.exe has encountered a problem and needs to close.  We are sorry for the inconvenience." et me demande si je veux envoyer un rapport. Est ce que tu sais d ou ca peux venir et le fait que je ne sois pas administrateur peut il engendrer ce genre de problemes.
    Merci infiniment

  • signaler à un administrateur
    Commentaire de exterminabur le 04/05/2006 21:18:58

    Salut
    ton problème vient de windows.

    soit le fait de ne pas être admin joue ou bien tu as oublié de mettre une dll qque part dans les dossiers de windows

    relie bien ce que je dis de faire

    peut être cela répondra t'il à ta question.

    sinon il faut désactiver la gestion d'erreur de windows (si tu connais) mais n'étant pas admin je ne pense pas que tu ais accès à ces options

  • signaler à un administrateur
    Commentaire de willemchagrin le 05/05/2006 10:41:43

    Salut Exterminabur,
    Je te remercie de m avoir repondu, je pense avoir fait exactement ce que tu m a dit,j ai cependant envoye mon executable et fichiers annexes sur le PC d un collegue et pas de message d erreur, je n ai pas verifie si l ecriture sur le port se fasaitt bien mais ayant suivi tes instructions je pense que cela doit marcher puisque l execution se passe comme prevu.
    Merci encore!

  • signaler à un administrateur