Я пытаюсь прочитать последовательные данные UART из Linux.У меня есть 2 последовательных устройства, сопоставленных с файловой системой Linux, например: ttys1 и ttys2.После этого open () используется для получения FD:
int fd1 = open("ttys1", O_RDWR | O_NOCTTY);
int fd2 = open("ttys2", O_RDWR | O_NOCTTY);
Эти вызовы находятся в конструкторе объектов, а приложение находится в состоянии ожидания, например,
В состоянии выполнения, я хочу записать данные Uartот этого устройства.
У меня есть поток, который вызывает метод start (), который создает epoll и добавляет fd1 и fd2 к epoll для мониторинга:
for(int i = 0 ; i < 2; i++)
{
events[i].events = EPOLLIN | EPOLLERR | EPOLLET ;
events[i].data.fd = (i == 0) ? fd1 : fd2;
if(epoll_ctl(epollFD, EPOLL_CTL_ADD, events[i].data.fd, &events[i]))
{
fprintf(stderr, "Failed to add file descriptor to epoll\n");
close(epollFD);
return;
}
else
{
cout << "Succesfully added File Descriptors to ePoll" << endl;
}
}
После этого у меня естьзапущенный поток, ожидающий события epoll и считывающий данные с помощью epoll_wait ()
Моя проблема заключается в том, что первые события связаны с большим объемом данных, которые я хочу игнорировать.Если обычно я получаю 1-10 байт от каждого устройства UART после каждого ожидания epoll, при первом выстреле я получаю буферизованные данные с этих устройств, но я хочу отслеживать трафик только после добавления fd в epoll.Есть идеи ?Спасибо!