В настоящее время я читаю сигналы CTS и DSR последовательного порта следующим образом:
bool get_cts(int fd) {
int s;
ioctl(fd, TIOCMGET, &s);
return (s & TIOCM_CTS) != 0;
}
Теперь я бы хотел подождать, пока get_cts()
вернет true. Я думаю, что простой цикл - не лучшее решение (поскольку он чрезвычайно ресурсоемкий).
void wait_cts(int fd) {
while(1) {
if(get_cts(fd)) {
return;
}
}
}
Есть ли лучшее решение, использующее C или C ++ в Linux? (Я не могу использовать аппаратное управление потоком данных, поскольку мне вообще не нужны строки последовательных данных.)