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

Autres éditeurs Discussion :

Comment gérer les erreurs de la compilation sous linux ?


Sujet :

Autres éditeurs

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut Comment gérer les erreurs de la compilation sous linux ?
    Bonjour,

    j'ai réalisé une application console avec Borland C++, et je voudrai la compiler sous linux.

    Bien entendu, je l'ai un peu adaptée pour qu'elle puisse fonctionner sous linux, mais lorsque j'essaie de la compiler, j'ai plusieurs erreurs du type :

    'HANDLE' was not declared in this scope


    J'ai cherché sur le net à quoi correspondaient ces erreurs mais je n'ai rien trouvé !!!



  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Un HANDLE est un type défini dans winNT.h par Il est utilisé pour manipuler des objets sous l'œil de l'OS.

    Reste il des includes malvenu dans votre projet ?
    Pouvez vous poster une des ligne levant l'erreur ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Voici un screen des erreurs de compilation :



    Un HANDLE est un type défini dans winNT.h par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef void * HANDLE
    Là, je ne comprend pas la modification que je dois effectuée ???


  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par c_boireau Voir le message
    Un HANDLE est un type défini dans winNT.h par
    Là, je ne comprends pas la modification que je dois effectuer ???
    Vous tentez d'utiliser un type windows dans un programme linux... c'est impossible
    • Ligne 11 : WinNT.h aucun fichier ou répertoire de ce type, c'est un fichier windows.
    • Ligne 29 : HANDLE non défini, c'est un type windows ( je suppose que le ligne est HANDLE dhl; ).
    • Ligne 44 : Vous utilisez CreateFile, c'est une fonction windows, utilisez plutôt fopen qui est standard ou la classe fstream si vous travaillez en c++.
    • Ligne 49 : fonction Sleep : exclusivement windows, utilisez sleep (attention, les unités ne sont pas les mêmes...)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    C'est d'accord, donc il faut que je remplace la fonction "CreateFile" (qui me sert à ouvrir le port série) par la fonction "fopen" ?

    Lorsque j'aurai modifié tout ça, ça fonctionnera ?


  6. #6
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par c_boireau Voir le message
    C'est d'accord, donc il faut que je remplace la fonction "CreateFile" (qui me sert à ouvrir le port série) par la fonction "fopen" ?

    Lorsque j'aurai modifié tout ça, ça fonctionnera ?
    Oulà non !

    Quand on regarde le log de compilation, on se rend compte qu'il y a d'autres fonctions typiquement windows qui ne peuvent pas être utilisées avec linux.

    De plus quand on a trouvé l'équivalent d'une fonction windows en linux, celle ci peuvent avoir des comportement légèrement différents, ce qui peut avoir des conséquences importantes.

    Exemple : CreateFile permet d'ouvrir un fichier avec windows, en linux, on a fopen pour ouvrir un fichier... mais open réalise aussi cette opération. Une différence entre ces fonctions est que fopen bufferise les données pas open.

    Dans le cas particulier d'une ouverture de port COM, c'est plutôt open(...) qu'on utilisera.

  7. #7
    Invité(e)
    Invité(e)
    Par défaut
    Pour découvrir un peu plus la programmation linux, on peut lire ceci : http://mtodorovic.developpez.com/linux/programmation-avancee, en particulier la sixième section qui aborde la communication avec des périphériques, dont le port COM.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Merci mabu, je viens de parcourir le lien que tu m'as passé, mais rien qui puisse m'aider pour l'ouverture, la configuration, et l'écoute du port USB !!!

    Si quelqu'un pouvait m'indiquer comment procéder pour ce port USB svp ???
    Juste la syntaxe des fonctions à utiliser !!!



  9. #9
    Invité(e)
    Invité(e)
    Par défaut
    Un petit bout de code pour ouvrir le port est envoyer une ou deux données :
    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
    int main()
    {
      /*Le descripteur de fichier */
      int fd;
     
      /* ouverture du port */
      fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);
      if(fd < 0){
        perror("impossible d'ouvrir le port : ");
        exit(EXIT_FAILURE);
      }
     
      /* écriture d'un message */
      if(write(srl_handle, "hello", 5) < 0){
        perror("impossible d'ecrire : ");
      }
     
      /* fermeture du port */
      if(close(fd) < 0){
        perror("probleme à la fermeture : ");
      }
      return EXIT_SUCCESS;
    }
    Pour l'écoute, on utilisera plutôt un thread et la fonction read.

    Pour la configuration, cela dépend de ton système.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Merci Mabu, par contre il ne reconnait pas "EXIT_FAILURE" et "EXIT_SUCCESS" !!!

    Enfin il ne reconnait pas la fonction "exit" !!!



  11. #11
    Invité(e)
    Invité(e)
    Par défaut
    Ces définitions font partie de la norme du c.

    ou mieux, les man pages.

  12. #12
    Invité(e)
    Invité(e)
    Par défaut
    Hum, je crois que j'ai un peu trop lu en diagonale...

    [EDIT bout de message zappé]

    Apparemment, au fil du post, le port série s'est transformé en port USB. Bon le principe reste le même, mais on ouvrira plutôt le fichier /dev/ttyUSBx (toujours en fonction du système).

    Si l'application est en c++ plutôt qu'en c, on peut utliser les classes de la stl. Le principe reste le même : on ouvre le même fichier.

    La FAQ est une bonne base pour commencer à utiliser ces classes.
    Dernière modification par Invité(e) ; 31/07/2008 à 09h39. Motif: Bout de message qui manque

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Hum, je crois que j'ai un peu trop lu en diagonale...
    Comment ça ???


    Mon application est du C++ !!!

    Et par rapport à l'application sous windows que j'ai réalisée pour le port série, comment faire sous linux, pour configurer le port série (vitesse de transmission, bits de données, ...), initialiser les timeouts, ...



  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Inclus stdlib.h.


    Citation Envoyé par c_boireau Voir le message
    Merci Mabu, par contre il ne reconnait pas "EXIT_FAILURE" et "EXIT_SUCCESS" !!!

    Enfin il ne reconnait pas la fonction "exit" !!!



  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Inclus stdlib.h.
    Merci, c'était bien ça !

    Mais pour configurer le port série, quelqu'un connait les fonctions à utiliser ????

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Impeccable, ça fonctionne bien !

    A bientôt, et encore merci à tous !!!


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/05/2013, 01h29
  2. [Fortran 90] Comment gérer les erreurs Run Time ?
    Par Truth dans le forum Fortran
    Réponses: 5
    Dernier message: 13/11/2008, 16h46
  3. [bash][ftp] comment gérer les erreurs
    Par Merfolk dans le forum Linux
    Réponses: 2
    Dernier message: 31/07/2008, 09h17
  4. [Débutant]Comment gérer les erreurs simplement ?
    Par nahouto dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2006, 21h55

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