LINUX.ORG.RU

Чтение с ttyS*


0

0

Не удаётся написать программу по приёму данных с ttyS* (так, чтобы работала). Если не влом, приведите пожалуйста рабочий код программы. Буду Вам за это очень признателен. P.S. Написанная мною программа почему-то читает только символ с кодом 0A. Почему?

anonymous

#include <unistd.h>
#include <fcntl.h>
#include <termios.h>

#define DEVICE "/dev/ttyS0"
#define SPEED  B115200

char c;
int fd;
struct termios term;

fd = open(DEVICE, O_RDONLY | O_NONBLOCK);
fcntl(fd, F_SETFL, 0);
tcgetattr(fd, &term);
tcflush(fd, TCIOFLUSH);
cfsetospeed(&term, SPEED);
cfsetispeed(&term, SPEED);
cfmakeraw(&term);
term.c_cflag &= ~(CSTOPB | HUPCL);
term.c_cflag |= CRTSCTS;
term.c_cc[VMIN] = 1;
term.c_cc[VTIME] = 0;
tcsetattr(fd, TCSAFLUSH, &term);

while (read(fd, &c, 1) > 0)
  write(STDOUT_FILENO, &c, 1);

/* Подробности можно прочитать по команде `info libc'. */

nobody ★★
()

Огромное спасибо!

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.