Erkennen, ob ein Zeichengerät unter Linux mit termios api (c ++) die Verbindung getrennt hat
Ich verwende die Termios API in Linux, um mit einem seriellen Gerät zu kommunizieren. Ich versuche zu erkennen, ob das Gerät getrennt wurde, damit ich nach einer gewissen Zeit versuchen kann, die Verbindung wiederherzustellen. Ich habe den folgenden Beispielcode:
while(1)
{
FD_ZERO(&rfds);
FD_SET(tty_fd, &rfds);
// have tried checking fcntl(tty_fd, F_GETFL); too
// Blocking call to wait until we have data
select(tty_fd+1, &rfds, NULL, NULL, NULL);
// While we have data, collect it
while (read(tty_fd, &c, 1)>0 && bytesRead++<200)
{
serialBuffer.push_back(c);
}
bytesRead = 0;
// Try to parse it
BufferParse();
}
Es wird nicht angezeigt, dass select () oder fcntl Fehlerwerte (-1) zurückgeben, nachdem das ttyUSB-Gerät physisch getrennt wurde. Natürlich konnte ich überprüfen, ob die Datei in / dev / vorhanden ist, aber ich hatte gehofft, dass es eine elegantere Lösung gibt.
Würde mich über jeden Rat freuen, danke!