Пишу приложение обмена по RS-485 в для embedded системы на базе uclinux'a. По этому интерфейсу бегает проприетарный протокол, в котором предусмотрены свои старт/стоп биты при передаче. Соответственно мне нужно отключить установку этих битиков драйвером порта, так? Сделал вот так:
int fd;
struct termios oldTermios, newTermios;
if ((fd = open(dev, O_RDWR | O_NOCTTY | O_NONBLOCK)) < 0) {
return -1;
}
if (tcgetattr(fd, &oldTermios) < 0) {
return -1;
}
memset(&newTermios, 0, sizeof(struct termios));
newTermios.c_cflag = CS8 | CLOCAL | CREAD | UART_DEFAULT_BAUD;
newTermios.c_iflag = IGNPAR;
newTermios.c_oflag = 0;
newTermios.c_lflag = 0;
newTermios.c_cc[VTIME] = 0;
newTermios.c_cc[VMIN] = 0;
if (tcsetattr(fd, TCSANOW, &newTermios) < 0) {
return -1;
}
if (tcflush(fd, TCIOFLUSH) < 0) {
return -1;
}
Но осциллографом вижу, что все равно добавляются стандартные стартовые биты, а не те что определены протоколом.
Похоже что-то я упустил, что я делаю не так?