欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

求wince暂停进程调度的步骤

更新时间: 2014-01-05 03:11:02 责任编辑: Author_N1

 

求WinCE暂停进程调度的方法
最近在用18B20做系统的温度检测,使用的是一线的通信协议,采用IO口模拟的方式进行。系统通过定时采集的方式获取当前平台温度。
现在碰到一个问题,就是启动温度转换后有时读出来的温度采样数据,会有一两个位翻转(主要是将0读成1),导致结果发生错误,比如读取的数据应该是0x1fc,结果读出来实际的数据为0x81fc(因为不再启动转换而多读几次可以读到正确的数据)。开始以为是转换没完成导致数据错误,延长了等待时间(转换等待850ms)仍然不行,后来看网上说如果读取数据的时候,是在释放总线超过一定时间后读取的数据都是1,怀疑是不是由于系统调度,进程切换了,模拟IO通信被阻塞导致读取的时序发生了错误。
由于通信时间不会很长,最多就1ms,所以考虑是否可以暂时禁止一下系统的进程调度,独占整个资源,等到通信完成后再恢复,但是不知道如何操作,不知道有没有人这样做过。
只是这样的话确实会存在一定风险,哪位大侠还有更好的建议?先谢谢了!
系统的操作系统平台是WinCE 6.0 R1.
--参考方法--
两种方法:
  1.把操作放到OAL中去进行,使用kernelIOCTL操作
  2.设置高的线程优先级,调整线程量
           dwThreadID = GetCurrentThread();
    dwThreadPri = CeGetThreadPriority(dwThreadID);
    dwThreadQuantum = CeGetThreadQuantum(dwThreadID);
   CeSetThreadPriority(dwThreadID, 0);
   CeSetThreadQuantum(dwThreadID, 0);
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:11:02
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/19308/
本文WWW.DOC100.NET DOC100.NET版权所有。