Я пытался связаться через последовательный порт с ПЛК, управляющим механическим затвором, для задачи в отрасли.Не имея большого опыта в этой теме и спеша, я не осознавал важность сохранения старых настроек и их восстановления при выходе из программы.После изменения некоторых полей в структуре termios я больше не мог читать что-либо из порта даже после использования точно такой же функции открытия порта, которую я использую для другого порта (ttyD0), который прекрасно работает для этих настроек.Любые предложения, как я могу восстановить ttyD1 обратно в рабочее состояние?
Код, используемый для открытия порта, выглядит следующим образом:
int OpenPort()
{
fd = open("/dev/ttyD0", O_RDWR | O_NOCTTY);
if (fd < 0)
{
cerr << "open error " << errno << strerror(errno) << endl;
}
else
{
struct termios my_termios;
fcntl(fd, F_SETFL, 0);
tcgetattr(fd, &my_termios);
//bzero(&my_termios, sizeof(my_termios));
tcflush(fd, TCIFLUSH);
my_termios.c_cflag = B115200 | CS8 | CREAD | CLOCAL | HUPCL;
//my_termios.c_lflag = ICANON;
//cfsetospeed(&my_termios, B115200);
tcsetattr(fd, TCSANOW, &my_termios);
}
return fd;
}