各位大侠,我们是通过硬件直接关机的,想在关机前通知应用程序,怎么做呢?提示在BSP包中写
SetSystemPowerState(NULL, POWER_STATE_OFF, POWER_FORCE);
但我感觉没效果,它不会关所有应用
硬件关机不是通过控制电源芯片就可以了吗,用一个GPIO口控制电源芯片应该行的。难道关机前SETEVENT?
引用: 引用 4 楼 jeanszu 的回复:
如何做到在关机前给应用程序一个提示呢?
关机信号,应该是通过按键,产生中断吧, 此时你发个按键消息到应用不就可以了吗
引用: 引用 3 楼 jeanszu 的回复:
就是想要在关机前发个信息给应用程序。
是的,你是硬件关机,关机提示是软件来做的
所以需要发个消息给应用,由应用显示提示界面,然后关机
你的硬件设计要支持才行。比如,Linear公司有一种芯片,称为按钮控制器,在按钮关机动作时,会先发出一个中断一段时间给CPU(大约1秒),到了时间才关机。
在此硬件关机的io管脚只能作为判断关机的条件,不可作为关机的开关,否则cpu立即停止,用软件检测此条件,软件关机。
比如硬件设计某一io为高时(应用程序认为要执行关机操作),然后在应用中timer不停检查此io,确定是否关机,软件实现关机。
需要两个event
一个是在检测到关机按键时,发给应用程序的event1.
另一个是在应用程序处理完保存操作后,发给系统的event2.
不过前提是系统有一个线程专门检测event2,然后关机.
硬件上用两个IO口,一个作Power按键检测,另一个作电源IC关电控制,驱动中检测到Power按键按下,发送消息(这个消息可以自己定义)给应用程序,应用程序干完自己要干的事情(如显示Logo,保存用户信息等),操作电源IC关电控制IO口关电即可。
问题已经解决,就是在检测关机IO口的中断程序中发自定义消息给应用程序,待其完成任务后关机。