5771|23

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

WinCE5.0下的关机按钮问题 [复制链接]

小弟想做一个WinCE5.0下的长按实现关机的按钮,硬件上是连了中断的,就是不知道软件上怎么处理。如果只是一个简单的流接口驱动,那需要一个应用程序去调用它才行。我是想在系统运行的任何时刻,长按关机按钮就实现关机的啊!这种是否流接口驱动?怎么做呢?

最新回复

楼住这种方式实现关机肯定没问题, 但长按如何实现倒是个问题。  详情 回复 发表于 2009-7-3 16:23
点赞 关注

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
引用 20 楼 wangxin_801115 的回复:
请找坛子里的另外一篇文章就是介绍这个问题的


正解!

是prefix的问题,有效的prefix只有3个字母,我整了4个字母
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
关机与电源管理部分相关,也就是电源的驱动
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

4
 
实现关机?
长按不是问题
流驱动也不是问题
问题是你怎么关机?
控制继电器关机吗?还是深度休眠?
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 2 楼 wangxin_801115 的回复:
实现关机?
长按不是问题
流驱动也不是问题
问题是你怎么关机?
控制继电器关机吗?还是深度休眠?


硬件上已经连好了,直接通过IO口控制电源芯片断电。即 驱动层检测到关机按钮发出的中断,然后就给某个IO口置低,自然就关闭电源了
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 
问题是在驱动层怎么做?之前看到UC公司的开发板有个功能,就是按下开发板上某个按钮,就可以在wince的windows界面下移动选中的图标。按下另一个按钮,就相当于鼠标左键了。  我想要实现的就是类似于这个功能啊。

即在wince运行时任何时候按下关机按钮就可以由一个驱动来相应,然后给io口置低。小弟之前做的流接口驱动好像必须有个应用程序来响应。所以我就不太清楚这种直接在系统层面就能响应的驱动是什么驱动?怎么做?
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 5 楼 swaiwwb 的回复:
问题是在驱动层怎么做?之前看到UC公司的开发板有个功能,就是按下开发板上某个按钮,就可以在wince的windows界面下移动选中的图标。按下另一个按钮,就相当于鼠标左键了。  我想要实现的就是类似于这个功能啊。

即在wince运行时任何时候按下关机按钮就可以由一个驱动来相应,然后给io口置低。小弟之前做的流接口驱动好像必须有个应用程序来响应。所以我就不太清楚这种直接在系统层面就能响应的驱动是什么驱动?怎么做?


您这个逻辑相当混乱!
驱动有个线程一直在跑着
当你中断来了当然可以响应了

你做到IOCONTROL中那肯定需要应用来响应

你要是想做导航按键的话直接向系统发VK消息就行了
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

8
 
你得确定你的GPIO正确设置
中断肯定能响应
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

9
 
好,试试看,多谢王鑫大哥
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

10
 
做个记号
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

11
 
这个只要控制一个脚 好像很容易的嘛   呵呵 写个检测gpio的中断,然后检测上升沿下降沿随便,然后就中断响应,把某个gpio置底电源就关了。说白了也就是一个开关。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

12
 
那简单了
就写个流驱动控制这两个GPIO就行了
要不你就加在你的按键驱动中也行

“如果只是一个简单的流接口驱动,那需要一个应用程序去调用它才行”为什么???

 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 4 楼 wangxin_801115 的回复:
那简单了
就写个流驱动控制这两个GPIO就行了
要不你就加在你的按键驱动中也行

“如果只是一个简单的流接口驱动,那需要一个应用程序去调用它才行”为什么???


例如我做一个中断响应的驱动,我得做个应用程序去调用这个驱动,即readfile()函数,writefile()函数之类的,如果没有应用程序,我在哪里去响应这个中断?又如何给GPIO置低呢?
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用 3 楼 swaiwwb 的回复:
硬件上已经连好了,直接通过IO口控制电源芯片断电。即 驱动层检测到关机按钮发出的中断,然后就给某个IO口置低,自然就关闭电源了

LZ 自己的理解很清楚嘛!就是这个方式,写个按键流驱动就OK了,长按短按不就是时间上的一个判断吗,通过对中断口上低电平(或高电平,看你是上升沿还是下降沿中断了)保持的时间的判断,时间到:执行SetSystemPowerState(NULL, POWER_STATE_SUSPEND, POWER_FORCE);
或者是keybd_event(VK_OFF, 0, 0, 0);keybd_event(VK_OFF, 0, KEYEVENTF_KEYUP, 0);
不知道是不是这么回事啊,呵呵
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

15
 
在写流接口驱动的时候发现线程不断的被加载和卸载,即使使用一个与硬件无关的最简单的流接口驱动,情况也是如此。
OOL WINAPI DllEntry(HANDLE hInstDll, DWORD dwReason, LPVOID lpvReserved)
{
    switch ( dwReason )
{
case DLL_PROCESS_ATTACH:
RETAILMSG(1, (TEXT("SPL: DLL_PROCESS_ATTACH.\r\n"))); /* 提示动态库加载 */
//DisableThreadLibraryCalls((HMODULE) hInstDll);
break;

case DLL_PROCESS_DETACH:
RETAILMSG(1, (TEXT("SPL: DLL_PROCESS_DETACH.\r\n"))); /* 提示动态库卸载 */
break;
case DLL_THREAD_ATTACH:
RETAILMSG(1,(TEXT("DLL_THREAD_ATTACH\n")));
        break;
    case DLL_THREAD_DETACH:
RETAILMSG(1,(TEXT("DLL_THREAD_DETACH\n")));
        break;
    }
   
    return (TRUE);
}

线程被加载后,就会一直如此
DLL_THREAD_ATTACH
DLL_THREAD_DETACH
DLL_THREAD_ATTACH
DLL_THREAD_DETACH
DLL_THREAD_ATTACH
DLL_THREAD_DETACH
DLL_THREAD_ATTACH
DLL_THREAD_DETACH

DLL_THREAD_ATTACH
DLL_THREAD_DETACH

写的驱动无法正常读写,是否是该处异常造成的,是什么原因造成的呢,该如何解决?

 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

16
 
多谢王鑫大哥,您的意思是只要在流接口驱动里做一个线程一直跑,只要有中断就响应就行了?然后,在系统层面只要是注册表,config等加载了这个流接口驱动,wince一启动,那个线程就会一直运行?
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

17
 
请找坛子里的另外一篇文章就是介绍这个问题的
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

18
 
引用 18 楼 swaiwwb 的回复:
在写流接口驱动的时候发现线程不断的被加载和卸载,即使使用一个与硬件无关的最简单的流接口驱动,情况也是如此。
OOL WINAPI DllEntry(HANDLE hInstDll, DWORD dwReason, LPVOID lpvReserved)
{
    switch ( dwReason )
{
case DLL_PROCESS_ATTACH:
RETAILMSG(1, (TEXT("SPL: DLL_PROCESS_ATTACH.\r\n"))); /* 提示动态库加载 */
//DisableThreadLibraryCalls((HMODULE) hInstDll);
break;

case DLL_PROCE…

个人认为:其实这只是线程状态的提示消息,不代表你的驱动没有正常工作,应该是没有问题的,又不是DLL_PROCESS_ATTACH和DLL_PROCESS_DETACH 反复出现。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

19
 
看三星powerButton驱动
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

20
 
引用 9 楼 swaiwwb 的回复:
多谢王鑫大哥,您的意思是只要在流接口驱动里做一个线程一直跑,只要有中断就响应就行了?然后,在系统层面只要是注册表,config等加载了这个流接口驱动,wince一启动,那个线程就会一直运行?


正解
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表