最新评论
Re:Windows CE的电源管理之三 csz_fj 2010-08-03 13:24
好文。问题同上。为什么不写wm的文章了?
Re:Windows CE的电源管理之三 egmkang 2009-12-18 13:57
找来找去还是这个文章最经典了
支持一下,lz现在怎么不写WinCE&WM的文章了?
Re:Windows CE的电源管理之三 田大头 2009-12-03 14:40
不错,学习了
Re:Windows CE的电源管理之三 xufun 2009-11-19 17:21
WindowsMobile电源管理,学习了,
谢谢!
楼主你好,我在学习对PPC电源管理遇到一些问题向你请教。
我做的程序类似说你提到的“天气预报”的例子,但我去掉CeRunAppAtTime 功能。只需要它在运行的时间机器不出入休眠状态。 目前我可以实现程序在运行时间不进入休眠,按Power按也会受影响。但现在有一个问题,我无法实现程序在运行时屏幕自动关闭(黑屏),目前我直能用SetSystemPowerState(NULL, POWER_STATE_IDLE, 0); 方法手动关闭。 我找过一些资料如:
SPI_GETBATTERYIDLETIMEOUT
当系统运行在电池电源状态下,离用户最后输入的时间
SPI_GETEXTERNALIDLETIMEOUT
当系统运行在AC电源状态下,离用户最后输入的时间
SPI_GETWAKEUPIDLETIMEOUT
在系统再次挂起时离系统被自动唤醒的时间
我想自己利用这个参数判断来自动关闭屏幕,但用SystemParametersInfo这个方法不起效果,我有些茫然,希望得到你的指点。谢谢!
re: [导入]总算为开源做了贡献 方圆1 2009-04-01 17:50
re: Windows CE的电源管理之三 yutao001 2008-12-22 11:59
@JasonYe
谢谢,已经找到问题了,是sim卡坏了,不断重新找网络。非常感谢
re: Windows CE的电源管理之三 JasonYe 2008-12-21 11:30
@yutao001
监控从待机到唤醒的消息,上面的示例代码里就有
但唤醒的原因是由设备的中断触发的,并不能知道具体是什么程序发起的。例如,文中举的那个天气预报程序的例子,系统每天早上6点被RTC中断唤醒,如果这个程序不是你自己写的就很难找到原因。这个问题还可以通过“通知队列”查到些端倪,MemMaid里就有这个。但如果是哪个设备的驱动没写好,经常中断唤醒系统就没辙了,除非是你自己开发的。
re: Windows CE的电源管理之三 yutao001 2008-12-20 15:35
我是PPC啊,MemMaid我有,SK工具系列也有
可是不知道怎么监控CPU使用情况
从待机到唤醒到底怎么来监控这个消息?很可能唤醒的瞬间监控程序还没有开始执行,这是个难题啊
如果老兄有兴趣,一起研究下,我可以把system monitor监控的log发上来,不过这个监控只监控到访问pim.vol具体什么操作,那个程序在操作,目前都监控不到
re: Windows CE的电源管理之三 JasonYe 2008-12-20 14:03
@yutao001
手机上的话可以装一个MemMaid类似的软件,观察各进程的CPU使用情况。
re: Windows CE的电源管理之三 yutao001 2008-12-20 12:27
to JasonYe
看来你的文章觉得受益匪浅,我最近遇到一个问题,手机莫名其妙的不停自动唤醒,有时间隔仅几秒时间,本来待机3天,现在1天都不到;想了好多办法都没解决,我想问下,有没有办法拦截或者监控到这个唤醒消息,找出到底是什么程序在不断唤醒。
THX
re: Windows CE的电源管理之三 JasonYe 2008-10-23 10:42
@cyj210
防止系统进入休眠状态,可以参考文中介绍的播放器例子,每隔30秒调用一次SystemIdleTimerReset;休眠状态消息的捕获调用RequestPowerNotifications,参考文中的示例代码。
谢谢你的关注!
re: Windows CE的电源管理之三 cyj210 2008-10-23 09:03
HI JOSAN
A QUESTION:
PPC上,我的程序在下载资源,如果一段时间没操作的话,系统就进入自动
休眠状态,下载也会停止
请问下,如何防止我程序在运行的时候系统进入休眠, AND 这个休眠状态消息可以获取吗,如果可以是,如何获取消息
THANKS
re: Windows CE的电源管理之三 JasonYe 2008-10-21 17:46
@TingSky
有可能按下Power键,系统并没有进入Suspend状态,而是Unattended,这和OEM的实现有关。休眠状态可以由PBT_TRANSITION得到,唤醒状态由PBT_RESUME得到。你可以用程序使系统休眠,再按电源键唤醒试试。
g_hEventShutDown变量(事件句柄)是用来通知这个电源监控程序退出用的。
谢谢你的关注!
re: Windows CE的电源管理之三 TingSky 2008-10-21 17:19
很高兴看到你这篇文章,文章写得很不错。
用你上面的代码,可以接收到如:PBT_POWERINFOCHANGE,PBT_TRANSITION的消息。
当我试着去截获休眠和唤醒的消息,但是失败了。
hPowerNotifications = RequestPowerNotifications(hPowerMsgQ, PBT_TRANSITION | PBT_RESUME);
当我按Power键,进行休眠和唤醒时,并没有接收到相应的消息。
在你的代码中,有这样 g_hEventShutDown 的一个变量,我想问,你是如何来截获休眠、唤醒的消息的,谢谢~
re: Windows CE的电源管理之三 JasonYe 2008-09-11 15:05
@lynnlee
看一下注册表,[HLM\System\CurrentControlSet\Control\Power\State]下面的Suspend或者Unattended,把里面关于GPS的GUID删除即可。至于哪个GUID是指GPS设备,可以查看[HLM\System\CurrentControlSet\Control\Power\Interfaces]。
re: Windows CE的电源管理之三 lynnlee 2008-09-11 13:28
请问楼主 因为在手机电源管理中,长时间没有操作,待机会把GPS关闭,该怎么做才能保持GPS设备一直开启?
re: OAL之系统时钟 JasonYe 2008-09-08 14:37
@AliceCUI
可以先确认一下系统时钟是否正常。比如设置一下系统时间或者通过GetTickCount看看是否能返回准确的1秒钟。
re: OAL之系统时钟 AliceCUI 2008-09-05 16:18
@jackyge
请问:我们得硬件是PXA300 系统WINCE5,
现在有个很棘手得问题,就是我们得系统反应速度非常慢,特别是当系统启动到出现桌面图标,双击一个图标打开得速度非常慢(10~20s),查了WINCE 启动时得时钟是正常得(ACCR 得设置值)。
另外我们另一个项目和我们现在得wince方案一样,我们把我们项目得BootImage.nb0 和nk.bin 下载到另一个项目得板子上,出现桌面图标并双击图标打开得速度很快(1,2s)。
请问这和硬件得甚么部分有关系吗?或者软件上是哪里有问题啦?
re: Windows CE的电源管理之三 JasonYe 2008-09-01 12:45
@JoJoKor
对的,事件g_hEventShutDown是主线程通知这个监控线程退出时用的,全局变量,一般在主线程内初始化和置位。
re: Windows CE的电源管理之三 JoJoKor 2008-08-30 18:00
請問 g_hEventShutDown 這個變數是為了app to exit 但未宣告
就是讓我們開發者自行去定義的嗎?
re: OAL之系统时钟 jackyge 2008-03-26 18:54
感谢楼主的即时答复,我现在确实是想加入DVS算法,对于你说的预测下一时间间隔的占用率还不是很清楚,但最近我得出差,暂时不能做这方面的研究了,等回来研究一下再与你请教,望关注我的回复,估计得半个多月吧,呵呵,多谢楼主的指教与分享。
re: OAL之系统时钟 JasonYe 2008-03-25 13:43
@jackyge
OAL层本身并没有提供插入DVS算法的接口,可以考虑在应用层实现,即用一个线程每隔一段时间计算一下所有线程的CPU占用率,再用一定的预测方式计算下一个时间间隔内的CPU占用率,算出相应的CPU频率。这种方法对于任务变化不是很剧烈的系统应该还可以吧。
考虑通过修改内核调度函数来实现的话,可以准确预知下一个时间间隔内要运行的是哪几个线程,这样可以让预测更准确些,但不知道实际效果会怎样,因为系统随时有可能会被某些硬件中断所干扰。
re: OAL之系统时钟 jackyge 2008-03-25 13:33
我看你提到了某段程序运行时的CPU占用率,如果我现在要根据CPU的占用率动态的调节频率和核心电压的话,应该在哪部分写代码?OAL层是否有这种接口?还是需要在内核调度的什么地方写呢?不知道你有没有什么好的建议,是否可以用一个线程每隔一个时段来算一下占用率并相应调节呢?那这个间隔时间又设多少好呢?盼复。。。。
re: OAL之系统时钟 JasonYe 2008-03-20 22:21
对的,这种内部调用函数不一定要实现,就是读取计数寄存器和设置比较寄存器。
re: Windows CE的电源管理之三 JasonYe 2008-03-15 16:53
--引用--------------------------------------------------
Jackyge: 盼望中,正需要这方面的实际讲解,谢谢楼主分享
希望能详细的了解到底电源管理需要修改哪些内容
--------------------------------------------------------
恩,本章就围绕Windows Mobile的电源管理介绍该怎样修改。
re: Windows CE的电源管理之三 JasonYe 2008-03-15 16:50
--引用--------------------------------------------------
leftie: 等待中。 想了解下ms对power management实现的思路,也就是为啥这么实现power management, 优点在哪?
--------------------------------------------------------
要想了解这方面的内容,最好先了解PC上广泛采用的
ACPI(Advanced Configuration and Power Interface),但它必须得有BIOS支持才行。在嵌入式系统中没有这样统一的标准,但WinCE中的PM也是一样的道理,可灵活配置各种设备的电源状态,并将一系列设备的电源状态对应于系统电源状态机中的某一个状态,而这个状态机的具体实现就是电源管理的策略,可以由OEM厂商自定义。而且MS又提供了针对PDA实现方案的源代码,所以现在市面上的PDA(或Smartphone)的电源管理都差不多。
第三篇就写一下Windows Mobile的电源管理吧。
re: Windows CE的电源管理之二 JasonYe 2008-03-15 16:14
--引用--------------------------------------------------
leftie: 翻译的不错。
对wake source 不能通过DevicePowerNotify进入D3状态那段, 有点绕口。
--------------------------------------------------------
这段已经更新。
欢迎大家指正。
re: OAL之系统时钟 Jackyge 2008-03-11 22:50
请教:
OALTimerGetCount();OALTimerSetCompare(g_timer.compare);
这类是否要自己实现?就是对ost的寄存器的操作对否?
re: Windows CE的电源管理之三 Jackyge 2008-03-11 22:47
盼望中,正需要这方面的实际讲解,谢谢楼主分享
希望能详细的了解到底电源管理需要修改哪些内容
re: Windows CE的电源管理之三 leftie 2008-03-10 13:22
等待中。 想了解下ms对power management实现的思路,也就是为啥这么实现power management, 优点在哪?
re: Windows CE的电源管理之二 leftie 2008-03-10 13:20
翻译的不错。
对wake source 不能通过DevicePowerNotify进入D3状态那段, 有点绕口。
re: Windows CE的电源管理之一 leftie 2008-03-10 13:02
很好,很清晰.
@毛毛亟亟
Microsoft .NET Pet Shop 4.0 的链接地址已经重定向到:
http://msdn2.microsoft.com/en-us/library/aa479071.aspx
这个页面有相应的安装包下载。
下载不了那个petshop4啊,,下载的那个Nbearpetshop包里也没有数据库。。。
下载不了那个petshop4啊,,下载的那个Nbearpetshop包里也没有数据库。。。
re: 系统时间的掉电保存 luludog 2007-07-25 09:36
Very useful~
我怎么EntityDesigns缺少NBear.Common.Design这个dll,你的包是不是不全啊
我执行有错 编译没错 你看看什么原因 ?
找不到方法:“Castle.Core.GraphNode[] Castle.MicroKernel.IKernel.get_GraphNodes()”。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.MissingMethodException: 找不到方法:“Castle.Core.GraphNode[] Castle.MicroKernel.IKernel.get_GraphNodes()”。
源错误:
行 8:
行 9: private string controlStyle;
行 10: private ServiceFactory factory = ServiceFactory.Create();
行 11:
行 12: // control layout property
@JerryZhao
用NBear完成这种增、删、改的功能是很方便的,有兴趣的话可以参考对订单的数据的处理部分。
@jason 真得很不错。
能否今后把shop system admin的功能也做进去呢?
这样就可以成为一个小型的可以完善使用的系统
对广大初学者都有很大帮助的
@mendole[匿名]
请用“Event Viewer”查看“Application”里面“Source”为“.NET Pet Shop 4.0”的最后一项的内容,看看是哪一句SQL语句出错,再做相应的分析。
MSPetShop4Services数据库存在,而且有数据,Web.config中SQLMembershipConnString的连接字符串肯定正确
@mendole[匿名]
请检查SQL Server中是否存在MSPetShop4Services数据库,并且保证Web.config中SQLMembershipConnString的连接字符串正确。
@JasonYe:
我用demo登陆nb petshop出现以下错误页面,不知为何?请帮我看看,非常感谢!
“/website”应用程序中的服务器错误。
--------------------------------------------------------------------------------
此操作对该事务的状态无效。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Transactions.TransactionException: 此操作对该事务的状态无效。
源错误:
行 282: int uniqueID = GetUniqueID(userName, false, true, appName);
行 283:
行 284: gateway.Delete<CustomProfileInfo>(uniqueID);
行 285:
行 286: return true;
源文件: F:\WorkSpace\StartTeam\NBear\PetShopByNB\nbear_petshop.1.0.0\NBear_PetShop\ServiceImpls\ProfileService.cs 行: 284
堆栈跟踪:
[TransactionException: 此操作对该事务的状态无效。]
System.Transactions.TransactionState.EnlistPromotableSinglePhase(InternalTransaction tx, IPromotableSinglePhaseNotification promotableSinglePhaseNotification, Transaction atomicTransaction) +42
System.Transactions.Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification promotableSinglePhaseNotification) +137
System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx) +153
System.Data.SqlClient.SqlInternalConnection.Enlist(Transaction tx) +50
System.Data.SqlClient.SqlInternalConnectionTds.Activate(Transaction transaction) +47
System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction) +28
System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +1244
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +85
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +89
System.Data.SqlClient.SqlConnection.Open() +160
NBear.Data.Database.CreateConnection(Boolean tryOpenning) in d:\Test\NBearV3\src\NBear.Data\Database.cs:433
NBear.Data.Database.ExecuteNonQuery(DbCommand command) in d:\Test\NBearV3\src\NBear.Data\Database.cs:849
NBear.Data.DbHelper.Delete(String table, String where, DbType[] whereTypes, Object[] whereValues, DbTransaction tran) in d:\Test\NBearV3\src\NBear.Data\DbHelper.cs:412
NBear.Data.Gateway.DoCascadeDelete(EntityType obj, DbTransaction tran, EntityConfiguration ec, WhereClip where) in d:\Test\NBearV3\src\NBear.Data\Gateway.cs:391
NBear.Data.Gateway.Delete(EntityType obj, DbTransaction tran) in d:\Test\NBearV3\src\NBear.Data\Gateway.cs:2395
NBear.Data.Gateway.Delete(DbTransaction tran, Object[] pkValues) in d:\Test\NBearV3\src\NBear.Data\Gateway.cs:2337
NBear.Data.Gateway.Delete(Object[] pkValues) in d:\Test\NBearV3\src\NBear.Data\Gateway.cs:2351
PetShop.ServiceImpls.PetShopProfileProvider.DeleteProfile(String userName, String appName) in F:\WorkSpace\StartTeam\NBear\PetShopByNB\nbear_petshop.1.0.0\NBear_PetShop\ServiceImpls\ProfileService.cs:284
PetShop.Profile.PetShopProfileProvider.DeleteProfile(String username) in F:\WorkSpace\StartTeam\NBear\PetShopByNB\nbear_petshop.1.0.0\NBear_PetShop\Profile\PetShopProfileProvider.cs:212
PetShop.Profile.PetShopProfileProvider.DeleteProfiles(String[] usernames) in F:\WorkSpace\StartTeam\NBear\PetShopByNB\nbear_petshop.1.0.0\NBear_PetShop\Profile\PetShopProfileProvider.cs:202
System.Web.Profile.ProfileManager.DeleteProfile(String username) +177
ASP.global_asax.Profile_MigrateAnonymous(Object sender, ProfileMigrateEventArgs e) in f:\WorkSpace\StartTeam\NBear\PetShopByNB\nbear_petshop.1.0.0\NBear_PetShop\website\Global.asax:20
System.Web.Profile.ProfileModule.OnEnter(Object source, EventArgs eventArgs) +200
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +138
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +65
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.210
@mendole
你也可以在web.config中将EnableCaching设置为False,不过这样就会损失不少查询时的性能。
@mendole
可以参考下列指令,在命令行输入:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql -S localhost -E -d MSPetShop4 -ed
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql -S localhost -E -d MSPetShop4 -t Item -et
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql -S localhost -E -d MSPetShop4 -t Product -et
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql -S localhost -E -d MSPetShop4 -t Category -et
-S localhost是指你的SQL Server实例名称
如果你先安装MSPetShop4,它会帮你创建好这些的。