Hi, I'm trying to read some bytes through the serial port. I am using the following code
int fd; int s_rc; fd_set rset; uint32_t count; uint8_t rd_data[16]; struct timeval tv; fd = open("/dev/ttyS1", O_RDWR | O_NOCTTY); if (fd == -1) { fprintf(stderr, "ERROR: Cannot open /dev/ttyS1\n"); return -1; } tv.tv_sec = 1; tv.tv_usec = 0; /* Add a file descriptor to the set */ FD_ZERO(&rset); FD_SET(fd, &rset); do { s_rc = select(fd + 1, &rset, NULL, NULL, &tv); if(s_rc == -1) { if (errno != EINTR) { fprintf(stdout, "WARN: Non blocked signal was caught\n"); break; } } else if (s_rc == 0) { fprintf(stdout, "WARN: select() timeout\n"); errno = ETIMEDOUT; } else if (FD_ISSET(fd, &rset)) { count = read(fd, rd_data, 10); fprintf(stdout, "INFO: %d bytes readed\n", count); } else { fprintf(stdout, "Something else happen\n"); } } while (1); For some reason the select() function is returning only with timeout. It's not returning when new bytes arrive at serial. Am I doing something wrong? Thanks Daniel Pereira de Carvalho