在我的申请中没有。设备(相机,A / D,D / A等)正在与服务器通信。我有两种方法可以节省设备的功耗,因为并非所有设备都必须始终工作:
1-进行极化,即每个设备定期继续查看文件内容,以获取唤醒或睡眠的值。如果它发现了唤醒,那么它就会醒来并完成它的工作。
在这种情况下,实际上设备将处于休眠状态,但驱动程序将处于活动状态并进行极化。
2-使用中断,我可以在需要时唤醒设备。
我无法决定走哪条路以及原因。有人可以在这方面赐教我吗?
平台:Windows 7,32位,在Intel Core2Duo上运行
答案 0 :(得分:6)
投票本质上是不精确的。目标精度越高,轮询就越浪费。理想情况下,只有在无法执行中断操作时才应考虑轮询;否则,应优先使用中断。
此规则的一个例外是,如果您想故意“限制”某些内容,例如,当您每秒钟可能获得多个事件时,但您希望每分钟只响应一个事件。在这种情况下,您经常使用轮询和中断的组合,其中中断设置标志,轮询执行实际作业,但仅在设置标志时。
答案 1 :(得分:2)
如果要定期唤醒你的设备,我会以适当的频率进行轮询(这总是更容易设置,因为它只是看了一下)。如果唤醒事件是异步的,我宁愿选择中断驱动的架构,尽管有代码和电子开销。
答案 2 :(得分:0)
这取决于您的硬件和软件架构以及软件的复杂性。在轮询中选择中断机制是最好的。
在轮询中,您的控制器将忙于连续轮询硬件以检查是否有所需的值。
使用中断机制会释放控制器执行其他任务,当出现中断时,ISR可以根据特定需要执行任务。