0

我正在从 Linux 下的虚拟串口读取数据(连接的设备是 xbee 模块)

目前,读取是通过检查端口缓冲区的线程完成的。但是在很多设备的情况下,这并不好,因为一个端口上的数据可能每毫秒出现一次,另一个端口每秒出现一次,因此它成为 CPU 的负担。

我想知道是否有类似中断的东西,只有在新数据可用时才会触发事件(我知道这个主体适用于微控制器)。

如何在 C++ 中做到这一点?

我不知道如何使用这些信息,因为我缺乏知识。如果我有这样的事情:

while(1){

   int n= PollComport(comport_number, buf, 4095);
   if(n>0){
   //make somemthing with the new data
   }
}

我想删除while循环。我在哪里以及如何使用 epoll_wait?

4

1 回答 1

2

这不是你的问题。操作系统就是这样做的。只需使用阻塞读取或某种 I/O 多路复用(如selectepoll_wait)。你不需要做任何特别的事情。

于 2012-09-01T10:11:25.227 回答