Forum Programmation.c++ Visual C++ et Port RS232 sous LINUX

Posté par  .
Étiquettes : aucune
0
24
mai
2007
Bonjour,

Est-ce que quelqu'un aurait déjà codé sous Visual C++ des fonctions permettant l'ouverture + la fermeture + la lecture + l'écriture sur un PORT RS232, et ce sous LINUX ? J'ai déjà ce code sous Windows mais je suis supposé le porter sous LINUX et je ne sais pas du tout comment m'y prendre.

Merci d'avance pour votre aide.

Julien
  • # Gni ? tty ?

    Posté par  . Évalué à 4.

    Du Visual C++ sous Linux ?

    Bon, si c'est pour écrire du code portable, il faut savoir que les ports série sont gérés par le noyau et qu'à ce titre, on y accède par /dev/ttyS0, /dev/ttyS1, etc.

    On les ouvre donc comme des fichiers ordinaires et on manipule éventuellement leur paramètres avec les ioctl adéquats directement sur le handler du fichier. On ne fait pas plus simple ...

    Et enfin, "supposé" -> "censé".
    • [^] # Re: Gni ? tty ?

      Posté par  . Évalué à 2.

      Ok merci beaucoup pour votre aide les gars (d'ailleurs je suis preneur pour toute autre information utile, même si les billes que vous m'avez refilées sont déjà très intéressantes).

      PS : cher Obsidian, on peut parler orthographe et grammaire puisque tu le souhaites : "leur paramètre" => "leurS paramètres" ;-)
      • [^] # Re: Gni ? tty ?

        Posté par  . Évalué à 2.

        PS : cher Obsidian, on peut parler orthographe et grammaire puisque tu le souhaites : "leur paramètre" => "leurS paramètres" ;-)


        Il ne fallait pas mal le prendre. Mes commentaires sont loin d'être parfaits, eux non plus.

        DLFP étant très référencé, il est d'usage ici de relever discrètement et occasionnellement les fautes d'orthographe, et de français en général. Dans ce cas particulier, "supposé" est un faux-ami en anglais et comme le piège est classique, c'est rendre service à un participant de le relever, bien sûr, mais ça en fait surtout profiter toute la communauté.

        Même chose pour "supporter" qui occupe actuellement mes signatures de messages ...
        • [^] # Re: Gni ? tty ?

          Posté par  . Évalué à 2.

          Pas de problème, je déconnais. :-D

          Encore merci !
        • [^] # Re: Gni ? tty ?

          Posté par  . Évalué à 1.

          J'ai une autre petite question, suite à ton premier mail.

          J'ai, dans un programme, la fonction suivante :
          ==================================================
          long OpenPort(char Port[], char BaudRate[], char DataBit[], char StopBit[], char Parity[])
          {

          /* File descriptor for the port */
          int fd;

          /* Open the port */
          fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);

          ...etc

          }
          ==================================================
          Or je voudrais remplacer "/dev/ttyS0" par le port dont le nom est refilé à ma fonction (et qui peut être "/dev/ttyS1" ou "/dev/ttyS2" etc... :

          Est-ce que le code suivant est correct ?

          fd = open(Port, O_RDWR | O_NOCTTY | O_NDELAY);

          J'ai un doute car Port pointe sur l'élément 0 du tableau Port (sur Port[0] je veux dire, sur le "/" finalement). Du coup, j'ai l'impression que je n'aurai pas le comportement souhaité. Est-ce que je me trompe et si oui, comment puis-je m'en sortir ?

          Merci d'avance !

          Julien
          • [^] # Re: Gni ? tty ?

            Posté par  . Évalué à 2.

            Non, non c'est bien ça. Tu passes bien un tableau de char à ta fonction, ce qui, en C, revient à passer un pointeur sur le début de ce tableau. Il faut juste penser à vérifier que la chaîne que tu y stockes se termine bien par un 0x00 (avec '\0'). À priori, le C le fait toujours quand tu dupliques une chaîne, à moins de spécifier une taille fixe.
  • # Quelques urls (en anglais)

    Posté par  . Évalué à 3.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.