Comment puis-je lire des données à partir du port série sous Linux à l'aide de C?

Je suis nouvelle série de la programmation sous Linux à l'aide de C. j'ai trouvé un petit morceau de code pour écrire des données sur le port série qui je partage ici. Après l'exécution de ce code, je l'ai peut supposer que les données écrites sur un port spécifique. Maintenant, je voudrais ouvrir un autre terminal et à l'aide de séparer le code souhaitez lire les données écrites sur le port - comment dois-je faire?

#include <stdio.h>   /* Standard input/output definitions */
#include <string.h>  /* String function definitions */
#include <unistd.h>  /* UNIX standard function definitions */
#include <fcntl.h>   /* File control definitions */
#include <errno.h>   /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */

/*
 * 'open_port()' - Open serial port 1.
 *
 * Returns the file descriptor on success or -1 on error.
 */
int
open_port(void)
{
  int fd; /* File descriptor for the port */

  fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);
  if (fd == -1)
  {
   /* Could not open the port. */
    perror("open_port: Unable to open /dev/ttyS0 - ");
  }
  else
    fcntl(fd, F_SETFL, 0);

  n = write(fd, "ATZ\r", 4);
  if (n < 0)
    fputs("write() of 4 bytes failed!\n", stderr);

  return (fd);
}

Le code ci-dessus va écrire les données sur un port spécifique.

Notez que la fonction d'écriture peut (en théorie) de retour de 3 pour indiquer qu'il a écrit 3 des 4 octets avec succès. Vous pouvez décider de traiter une courte écrire " comme une erreur ou si pour recommencer à écrire le résidu de la mémoire tampon.

OriginalL'auteur Amit Singh Tomar | 2011-12-22