我正在从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多路复用(如select
或epoll_wait
)。没有什么特别需要做的。