Hiện nay, tôi đang đọc CTS và tín hiệu DSR của một cổng nối tiếp theo cách sau:Làm thế nào để có hiệu quả chờ CTS hoặc DSR của RS232 trong Linux?
bool get_cts(int fd) {
int s;
ioctl(fd, TIOCMGET, &s);
return (s & TIOCM_CTS) != 0;
}
Bây giờ tôi muốn đợi cho đến khi get_cts()
trả về true. Một vòng lặp đơn giản không phải là giải pháp tốt nhất mà tôi nghĩ (vì nó cực kỳ tốn nhiều tài nguyên).
void wait_cts(int fd) {
while(1) {
if(get_cts(fd)) {
return;
}
}
}
Có giải pháp nào tốt hơn khi sử dụng C hoặc C++ trên Linux không? (Tôi không thể sử dụng bất kỳ điều khiển luồng phần cứng nào vì tôi không cần dòng dữ liệu nối tiếp.)
Bất kỳ lý do tại sao bạn không thể ngủ một chút trong vòng lặp đó? – Mat
Tôi có thể làm điều đó nhưng không có giải pháp nào khác? – SecStone