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)
Reading along? Create a free ModalAI Forum account to join in.
With an account you can reply, ask your own question, get an email when a ModalAI engineer answers, and mark the reply that solved it. Your place in each thread is saved between visits.
Questions about VOXL, Flight Core, ESCs and ModalAI drones are answered here by the engineers who build them.
Register Login