# Serial read is blocking

Source: https://forum.modalai.com/topic/142/serial-read-is-blocking
Category: Flight Core and Legacy VOXL (https://forum.modalai.com/category/9/flight-core-and-legacy-voxl)
Tags: flight-core
Posted: 2021-02-24 17:58:07 UTC by Andrew Keefe
Replies: 1 · Views: 780

## Andrew Keefe · 2021-02-24 17:58:07 UTC

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();
}

## Reply by modaltb (ModalAI staff) · 2021-02-26 16:52:50 UTC

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: 

https://github.com/modalai/px4-firmware/blob/modalai-1.11/src/drivers/uart_esc/modalai_esc/modalai_esc.cpp#L736

Here's opening of the port (note: this is beta level code)

https://github.com/modalai/px4-firmware/blob/modalai-1.11/src/drivers/uart_esc/modalai_esc/modalai_esc_serial.cpp#L48
