Как мне читать данные из последовательного порта в Linux с помощью C?

Я новичок в последовательном программировании в Linux с использованием C. Я нашел небольшой фрагмент кода для записи данных на последовательный порт, которым я делюсь здесь. После запуска этого кода я могу предположить, что данные были записаны на определенный порт. Теперь я хотел бы открыть другой терминал и, используя отдельный код, хочу прочитать данные, записанные на этом конкретном порту - как мне это сделать?

#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);
}

Приведенный выше код будет записывать данные на конкретный порт.

11
задан Jonathan Leffler 22 December 2011 в 06:53
поделиться