这是像linux上的ttyUSB0这样的虚拟串行端口的IRQ吗



我正在从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?

这不是你的问题。操作系统就是这么做的。只需使用块读取或某种I/O多路复用(如selectepoll_wait)。没有什么特别需要做的。

最新更新