IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

MingW outport inport


Sujet :

Windows

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 29
    Points : 7
    Points
    7
    Par défaut MingW outport inport
    Dans le cadre de mon projet tutoré, je dois développer une application sous mingw en C qui pilote une carte d'acquisition. pour cela j'aurais besoin des fonction permettant de piloter le port serie.

    Merci d'avance pour vos réponses.

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: MingW outport inport
    Citation Envoyé par etudiantgeii
    Dans le cadre de mon projet tutoré, je dois développer une application sous mingw en C qui pilote une carte d'acquisition. pour cela j'aurais besoin des fonction permettant de piloter le port serie.
    Mingw est un compilateur pour Windows. On ne peut plus bricoler les I/O sous Windows. Il faut passer par des fonctions systèmes comme OpenFIle(), WriteFile() etc.

    Il y a des exemples sur le Web et dans MSDN.
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 29
    Points : 7
    Points
    7
    Par défaut
    Merci pour l'info, je vais aller me renseigner.

    Cela dit nous developpons sous windows 98, les I/O y sont elles vérouillées également ?

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par etudiantgeii
    Merci pour l'info, je vais aller me renseigner.

    Cela dit nous developpons sous windows 98, les I/O y sont elles vérouillées également ?
    Je ne sais pas, mais en tout cas, qu'une application aille bricoler directement dans la machine, c'est de la mauvaise pratique. Les systèmes évoluent vers plus de sécurité et tendent à interdire ces pratiques douteuses. Il y a des drivers pour ça...
    Pas de Wi-Fi à la maison : CPL

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 29
    Points : 7
    Points
    7
    Par défaut
    Ok on va regarder ca, merci pour la réponse.

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Les I/O ne sont pas verrouillées sous 98. Sous visual 6, les fonctions pour les utiliser étaient déclarées dans <conio.h>.
    Si tu dois, comme un de mes condisciples en BTS récupérer des données sur une carte faite à la do-it-yourself, il te faudra justement passer par les IO.
    Par contre, si c'est une carte connue possédant un driver, ben il serait mieux d'utiliser celui-ci...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 29
    Points : 7
    Points
    7
    Par défaut
    En fait on a des routines (avec point c et tout) mais notre prof veut que l'on utilise MingW, or probleme les routines utilisent outportb(), fonction qui n'est pas reconnu par MingW. Donc on a cherché des fonctions semblables mais qui soit reconnu par MingW.

    On a trouvé outp, on va verifier (des qu on pourra acceder au pc ) ces fonctions. On vous tiendra au courant si ca marche (évidemment si vous en avez rien a faire faut le dire XD)

    A+

  8. #8
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Il me semble que MingW utilise msvcrt.dll, tu peux donc tenter d'utiliser _inp/_outp de cette lib (qui est celle de VC++).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #if defined&#40;__cplusplus&#41;
    extern "C"
    &#123;
    #endif
    int __cdecl _inp&#40;unsigned short&#41;;
    unsigned short __cdecl _inpw&#40;unsigned short&#41;;
    unsigned long __cdecl _inpd&#40;unsigned short&#41;;
    int __cdecl _outp&#40;unsigned short, int&#41;;
    unsigned short __cdecl _outpw&#40;unsigned short, unsigned short&#41;;
    unsigned long __cdecl _outpd&#40;unsigned short, unsigned long&#41;;
    #if defined&#40;__cplusplus&#41;
    &#125;
    #endif
    http://msdn.microsoft.com/library/en-us/vclib/html/_crt__inp.2c_._inpw.2c_._inpd.asp
    http://msdn.microsoft.com/library/en-us/vclib/html/_crt__outp.2c_._outpw.2c_._outpd.asp

    mais bon... faudrait peut être mieux se les coder (fonctions assembleur en ligne), ou mieux comme ça été éviqué : utiliser l'API Win32 (CreateFile...).

    Vous la pilotez comment votre carte d'acquisition ?

  9. #9
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 29
    Points : 7
    Points
    7
    Par défaut
    En fait on pilote la carte d'acqui par port serie ISA, Je suis en train d'utiliser createFile etc mais j'ai un soucis le premier parametre de cette fonction demande un char* or outport prenait un short vu que j'aimerais faire quelque chose d'assez ressemblant, comment faire ?

  10. #10
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Ca n'a rien à voir. Avec in/out tu attaques directement le hardware, en modifiant les I/O ports.
    Avec CreateFile, tu manipules ton port comme si c'était un fichier. CreateFile pour l'ouvrir, ReadFile / WriteFile pour lire / écrire dedans, CloseHandle pour fermer. Et ça marche aussi en C avec fopen / fread / fwrite / fclose, sauf que tu peux pas faire de réglages (SetCommState ...).
    Donc le nom à donner c'est celui du fichier associé au port, soit "COM1" ou "COM2" par exemple.
    http://msdn.microsoft.com/library/en-us/dnfiles/html/msdn_serial.asp
    http://c.developpez.com/faq/vc/?page...WithSerialPort
    Le principe consiste donc à écrire dans ce fichier pour envoyer des caractères sur le port.

  11. #11
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 29
    Points : 7
    Points
    7
    Par défaut
    Je vais utiliser, avec MinGW, CloseHandle()...
    Le seul problème est que, la seule donnée pour accéder au port que l'on a, est une adresse hexa et non un nom du type COM1...

  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Donc, ta carte n'a pas de driver?
    Dans ce cas pas le choix, il faut utilier les fonctions de conio.h (inp/outp)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 29
    Points : 7
    Points
    7
    Par défaut
    Bah si elle a des drivers... enfin on a des point c et point h, mais le soucis c'est que mingw devellopper studio accepte pas outport.
    Donc dans un premier temps on a pensé a utilise outp et inp, comme tu l'as dit, mais il semblerait qu'il marche pas non plus (ou alors c'est moi qui suis totalement con) donc la je suis parti sur CloseHandle(), CreateFile() etc mais c'est pas super simple et je me demande surtout si je peux filer a CreateFile une adresse hexa pour le port car c'est tous ce que j'ai concernant le port

    voila

  14. #14
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Tu ne peux pas ouvrir un port avec une adresse Hexa.

    CreateFile() ne peut ouvrir que des fichiers (ou plus vraissemblablement des tubes nommés) mis à leur disposition par les drivers.

    Ils montrent quel genre de fonction, tes .c/.h ?

    Et pourquoi mingW ne les accepte pas ? Tu es sûr que ces fichiers source et header sont compilables sous Win32, au moins? (si ce sont des sources et headers pour DOS, c'est mort pour mingW)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #15
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Je t'ai expliqué que l'adresse hexa n'intervient pas du tout, à aucun moment, avec CreateFile. C'est caché, ça n'a rien à voir. L'approche est totalement différente.
    Si c'est vu comme un port COM, tu as forcément un fichier virtuel de type COM1/COM2/COMx qui existe. Trouve celui associé à ta carte. Tu peux utiliser winobj:
    http://www.sysinternals.com/Utilities/WinObj.html
    et regarder dans le répertoire "GLOBAL??", tu auras la liste des fichiers associés aux périph (CdRom0, COM1, COM2, ...).

    Sinon, garde ton approche inp / outp. Je t'ai donné le code pour déclarer ces fonctions dans devcpp...

  16. #16
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 29
    Points : 7
    Points
    7
    Par défaut
    Ok je vais essayer ton code avant de me lancer dans les createfile qui de toute maniere ne répondrons pas a la demande de notre professeur.
    Je vous dirai si ca marche, il ne devrait pas y avoir de raison.

    Si tu pouvais m'expliqer ce que cela fait car je ne comprend pas bien tout.

    En plus Mingw n'accepte pas les fonctions disable,enable, interrupt (utiliser pour les interruptions du timer de la carte acquisition). Connaissez vous des fonctions capable de les remplacer ou encore un moyen de les utiliser.

    Merci

  17. #17
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 5
    Points : 6
    Points
    6
    Par défaut inp out en DLL pour utilisation avec DEV C++
    Bonjour,

    Voici une DLL écrite en VS6 que j'ai trouvé sur le WEB et que j'utilise avec avec DEV C++ (mingw) pour piloter une carte I/O.

    Si tu le souhaites je peux te transmettre sources + DLL par mail ...

    A+

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    //   FILE&#58; 8255.cpp
    //   AUTH&#58; P.OH
    //   DATE&#58; 07/01/98
    //   DESC&#58; C source file for 8255 DLL - compiled with Microsoft Visual C++ 5.0
    
    #include <stdio.h>
    #include <conio.h>  // contains Visual C++'s inp and out functions
    
    
    
    // ------------------------------------------------------
    //   FUNC&#58; Out8255
    //   DESC&#58; uses Microsoft's Visual C++ _outp&#40;&#41; function
    //         to output a PortData to PortAddress
    // ------------------------------------------------------
    
    
    extern "C" __declspec&#40;dllexport&#41; short _stdcall Out8255&#40; int PortAddress, int PortData &#41;
    &#123;
      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 &#40;short&#41; to force returning 16-bit integer
      // back to VB
      Dummy = &#40;short&#41;&#40;_outp&#40; PortAddress, PortData &#41;&#41;;
    
      return&#40;Dummy&#41;;
    
    &#125;; // end of Out8255
    
    
    // ----------------------------------------------------
    //   FUNC&#58; In8255
    //   DESC&#58; uses Microsoft's Visual C++ _inp&#40;&#41; function
    //         to read PortAddress
    // ----------------------------------------------------
    
    extern "C" __declspec&#40;dllexport&#41; short _stdcall In8255&#40; int PortAddress &#41; 
    &#123;
      short PortData; 
      // short is a 16-bit integer in Win32 C++
      // whereas int is 32-bit integer in Win32 C++
      // use &#40;short&#41; to force returning 16-bit integer 
      // back to VB
      
      PortData = &#40;short&#41;&#40;_inp&#40; PortAddress &#41;&#41;;
      return&#40; PortData &#41;;
    
    &#125;; /* end of In8255 */

  18. #18
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut

    Cette dll ne fait rien d'autre que renommer _outp en Out8255 et _inp en In8255. Je vois pas trop ce que tu en attends.
    Pour disable,enable, interrupt, il n'y a aucun équivalent dans le monde de la programmation 32 bits.

  19. #19
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 29
    Points : 7
    Points
    7
    Par défaut
    en faite au moment ou j ai tapé ce message je ne savais pas vraiement qu'il n'y existait pas d'equivalent donc .... dsl de ne pas avoir editer ... ^^

Discussions similaires

  1. Alignement inport/outport avec subsytem
    Par bluehangel dans le forum Simulink
    Réponses: 1
    Dernier message: 05/03/2014, 14h23
  2. inport et outport
    Par jackk dans le forum C
    Réponses: 13
    Dernier message: 13/12/2006, 00h06
  3. DevC++ avec un nouveau MinGW est disponible
    Par HRS dans le forum Dev-C++
    Réponses: 1
    Dernier message: 28/02/2005, 13h37
  4. [info ide] mingw developper studio
    Par heinquoi dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 29/07/2004, 17h02
  5. Bibliothèque Gcc/mingw 2.95.3.6
    Par richard dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 11/10/2003, 22h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo