Есть такая проблема, некое устройство обменивается с компом данными по 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.: Система как-нибудь сообщает о приходе данных на порт ?
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Com-port настройка (2023)
- Форум Работа с com портом (2007)
- Форум tcsetattr повторный вызов (2011)
- Форум [C] Com Port (2007)
- Форум Serial port programming (2008)
- Форум RS232 (2004)
- Форум Не получается читать с порта (2013)
- Форум non canonical com port read (2004)
- Форум Протокол обмена Linux -> датчик (2017)
- Форум программно настроить последовательный порт (2010)