#include #include #include #include #include #include #include #ifndef N_EXAMPLE #define N_EXAMPLE 26 #endif int main(void) { struct termios mode; int fd; int ret; int ldisc = N_EXAMPLE; speed_t speed = B115200; fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY); if (fd == -1) { perror("open"); exit(EXIT_FAILURE); } /* konfiguracja portu szeregowego */ memset(&mode, 0, sizeof(struct termios)); cfmakeraw(&mode); mode.c_cflag |= CLOCAL | CREAD | CS8; mode.c_oflag = 0; cfsetispeed(&mode, speed); cfsetospeed(&mode, speed); tcflush(fd, TCIFLUSH); tcsetattr(fd, TCSANOW, &mode); /* ustawienie line discipline */ ret = ioctl(fd, TIOCSETD, &ldisc); if (ret) { perror("ioctl"); exit(EXIT_FAILURE); } /* czekanie tak dlugo jak nasza line discripline jest aktywna */ while (1) { if (ioctl(fd, TIOCGETD, &ldisc) < 0 || (ldisc != N_EXAMPLE)) break; sleep(10); } close(fd); return 0; }