我在Linux中使用termios api与串行设备通信.我正在尝试检测设备是否已断开连接,以便在超时后尝试重新连接.我有以下示例代码:
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(); }
在ttyUSB设备物理断开连接后,我实际上并没有看到select()或fcntl返回错误值(-1).当然,我可以检查/ dev /中的文件是否存在,但我希望有一个更优雅的解决方案.
非常感谢任何建议,谢谢!