почему виртуальные порты в linux не меняют поведение при изменении атрибутов терминала? - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь проверить последовательную связь, используя виртуальные последовательные порты в Linux.Вот шаги, которые я делаю:

  1. создайте виртуальные порты: socat -d -d pty,raw,echo=0 pty,raw,echo=0 &, которые выделяют /dev/pts/1 и /dev/pts/2
  2. , открывают соединения с обеих сторон и устанавливают разные скорости передачи:
// from thread 1:
int fd1 = open("/dev/pts/1", O_RDWR | O_NOCTTY);
int baudrate = B115200;
struct termios newtio;
bzero(&newtio, sizeof(newtio));
newtio.c_cflag = baudrate | CRTSCTS | CLOCAL | CREAD;
tcflush(fd, TCIFLUSH);
tcsetattr(fd, TCSANOW, &newtio);

// from thread 2:
int fd2 = open("/dev/pts/2", O_RDWR | O_NOCTTY);
int baudrate = B9600;
struct termios newtio;
bzero(&newtio, sizeof(newtio));
newtio.c_cflag = baudrate | CRTSCTS | CLOCAL | CREAD;
tcflush(fd, TCIFLUSH);
tcsetattr(fd, TCSANOW, &newtio);

// notice that the baudrate is configured different
начинают общаться между ними:
// from thread 1:
write(fd1, "test\n", 5);

// from thread 2:
read(fd2, buffer, MAX_RECEIVED_LEN);

и по какой-то причине связь успешна, хотя скорость передачи данных не одинакова.и даже если я изменю любой другой атрибут, я все еще работаю.почему не терпит неудачу?виртуальный порт не симулирует реальную последовательную связь?

...