Есть такая проблема, некое устройство обменивается с компом данными по RS232. Есть только три вида посылок, размерами 9, 3 и 34 байта. Необходимо определить какая пришла посылка и заполнить соответствующую структуру. Система Linux Slackware 9.0. Порт я открываю так:
int serial;
struct termios oldtio, newtio;
if ((serial = open(argv[1], O_RDWR | O_NOCTTY)) < 0)
error(1, errno, "Ошибка вызова open\n");
if ((result = tcgetattr(serial, &oldtio)) < 0)
error(1, errno, "Ошибка вызова tcgetattr\n");
bzero(&newtio, sizeof(newtio));
newtio.c_cflag = B9600 | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR | ICRNL;
newtio.c_oflag = 0;
newtio.c_lflag = 0;
newtio.c_cc[VTIME] = 0;
newtio.c_cc[VMIN] = 5;
tcflush(serial, TCIFLUSH);
if ((result = tcsetattr(serial, TCSANOW, &newtio)) < 0)
error(1, errno, "Ошибка вызова tcsetattr\n");
p.s.: Система как-нибудь сообщает о приходе данных на порт ?