Serial read is blocking
-
I'm running a serial connection to a sensor wired as simplex. The code runs fine when the sensor is there. I wanted to turn the LED yellow if the serial read times out and returns no data, but the read function is blocking. It just sits there indefinitely.
I am playing around with
char buff = {0};
int fd;fd = open("/dev/ttyS1", O_RDONLY | O_NOCTTY | O_NONBLOCK);
struct termios config;
tcgetattr(fd, &config);
config.c_iflag &= ~(IGNBRK | BRKINT | ICRNL |INLCR | PARMRK | INPCK | ISTRIP | IXON);
config.c_oflag = 0;
config.c_lflag &= ~(ECHO | ECHONL | ICANON | IEXTEN | ISIG);
config.c_cflag &= ~(CSIZE | PARENB);
config.c_cflag |= CS8;
config.c_cc[VMIN] = 0;
config.c_cc[VTIME] = 10;
cfsetispeed(&config, B57600);
cfsetospeed(&config, B57600);
tcflush(fd, TCIOFLUSH);
tcsetattr(fd, TCSANOW, &config)ret = read(fd, &buff, 1);
if (ret<=0) {
status_yellow();
} -
Hi @Andrew-Keefe,
I'm not positive on this one. I have an example of using UART for an ESC here, and I remember having to be careful what task was opening the UART port:
Here's opening of the port (note: this is beta level code)