在我的申请中没有。设备(照相机、A/D、D/A等)与服务器通信。我有两种方法可以节省设备的耗电量,因为并非所有设备都必须始终工作:
做poling,即每个设备周期性地继续查看一个文件的内容,在那里它得到一个用于唤醒或睡眠的值。如果它发现了觉醒,那么它就会醒来并做好它的工作。
实际上,在这种情况下,设备将处于休眠状态,但驱动程序将处于活动状态并正在运行。
使用中断,我可以在需要时唤醒设备。
我无法决定该走哪条路,以及为什么。有人能在这方面给我一点启发吗?
平台: Windows 7,32位,运行于Intel Core2Duo上
发布于 2012-06-07 10:26:40
投票就其性质而言是不准确的。目标精度越高,轮询就越浪费。理想情况下,只有在不能处理中断时才考虑轮询;否则,应该首选使用中断。
这个规则的一个例外是,如果您想要“节流”某些东西,例如,当您可能得到几个事件每秒,但您想要反应只有一个事件每分钟。在这种情况下,您经常使用轮询和中断的组合,其中一个中断设置了一个标志,轮询完成了真正的工作,但只在设置了标志时。
发布于 2012-06-07 12:02:16
如果您的设备要周期性地被唤醒,我将以适当的频率进行轮询(这总是更容易设置,因为它只是看一点点)。如果清醒事件是异步的,我宁愿采用中断驱动的体系结构,尽管存在代码和电子开销。
发布于 2012-06-13 06:22:28
这取决于你的硬件和软件的结构和软件的复杂性。最好是选择中断机制而不是轮询机制。
在轮询中,您的控制器将连续地轮询硬件,以检查所需的值是否可用。
虽然使用中断机制将释放控制器执行其他任务,而当中断出现时,您的ISR可以根据特定的需要执行任务。
https://stackoverflow.com/questions/10929875
复制相似问题