qinlei_sz
驱动小牛
驱动小牛
  • 注册日期2007-03-24
  • 最后登录2012-12-18
  • 粉丝0
  • 关注0
  • 积分1090分
  • 威望510点
  • 贡献值0点
  • 好评度145点
  • 原创分0分
  • 专家分0分
阅读:1634回复:6

在其他驱动中调用触摸屏禁止函数不成功!高手指点一下。

楼主#
更多 发布于:2008-01-15 16:17
VOID (*pTouchPanelDisable)(void);
...
.
.
VOID DDDDD(VOID)
{
.
.

HINSTANCE   hinstance = NULL;
hinstance =LoadLibrary(_T("touch.dll"));
    if(hinstance!=NULL)
    {
    pTouchPanelDisable = (VOID(*)(void))GetProcAddress(hinstance, _T    ("TouchPanelDisable"));
    if (pTouchPanelDisable != NULL)
        {
        RETAILMSG(1,(TEXT("TouchPanelDisable\r\n")));
        (*pTouchPanelDisable)();
        }
    }
FreeLibrary(hinstance);
.
.
}
已经打印了RETAILMSG(1,(TEXT("TouchPanelDisable\r\n")))中输出,但就是没有真正跑到触摸屏驱动的TouchPanelDisable中运行。为什么?
wd1394
驱动牛犊
驱动牛犊
  • 注册日期2001-09-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望48点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-01-15 16:31
可以调用InterruptMask(Sysint, TRUE)屏蔽掉TouchSysInt和TouchChangeSysInt;需要恢复TouchPanel的功能时再调用InterruptMask(Sysint, FALSE)取消中断屏蔽就可以了。
thinkerwin
驱动牛犊
驱动牛犊
  • 注册日期2004-12-17
  • 最后登录2009-02-21
  • 粉丝0
  • 关注0
  • 积分389分
  • 威望43点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-01-16 10:48
引用第1楼wd1394于2008-01-15 16:31发表的  :
可以调用InterruptMask(Sysint, TRUE)屏蔽掉TouchSysInt和TouchChangeSysInt;需要恢复TouchPanel的功能时再调用InterruptMask(Sysint, FALSE)取消中断屏蔽就可以了。


这样是可以,但是会出现麻烦的, 需要在Touchplane处理中规避这边屏蔽,那边重新使能的现象
我是一只欲飞小小鸟
qinlei_sz
驱动小牛
驱动小牛
  • 注册日期2007-03-24
  • 最后登录2012-12-18
  • 粉丝0
  • 关注0
  • 积分1090分
  • 威望510点
  • 贡献值0点
  • 好评度145点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-01-16 10:50
谢谢wd1394,那有什么好办法在其他驱动中获得触摸屏驱动被分配的SYSINT呢?
thinkerwin
驱动牛犊
驱动牛犊
  • 注册日期2004-12-17
  • 最后登录2009-02-21
  • 粉丝0
  • 关注0
  • 积分389分
  • 威望43点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-01-16 11:08
引用楼主qinlei_sz于2008-01-15 16:17发表的 在其他驱动中调用触摸屏禁止函数不成功!高手指点一下。 :
VOID (*pTouchPanelDisable)(void);
...
.
.
VOID DDDDD(VOID)
.......


呵呵, Touchplane 这部分的驱动并不是一个完整的驱动, DLL引出的接口是给GWE调用的;
针对驱动有两种方法: 1、重新引出一个接口 2、使用使用实名EVENT (CreatEvent,SetEvent,EVENT_NAME 不能NULL, 接受的、发送必须同名,名字必须唯一)
这两中都要你在Touchplane驱动中做一些屏蔽Touchplane功能的处理:
  1、不屏蔽中断, 只是在Sample中做无效处理(不采样,直接无效处理)
  2、屏蔽中断,完全禁止Touchplane的功能: 这种会节约系统CPU处理资源;具体硬件,具体修改
我是一只欲飞小小鸟
wd1394
驱动牛犊
驱动牛犊
  • 注册日期2001-09-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望48点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-01-16 13:44
引用第3楼qinlei_sz于2008-01-16 10:50发表的  :
谢谢wd1394,那有什么好办法在其他驱动中获得触摸屏驱动被分配的SYSINT呢?

可以用DrvGlob来传递。
wd1394
驱动牛犊
驱动牛犊
  • 注册日期2001-09-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望48点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-01-16 13:49
引用第2楼thinkerwin于2008-01-16 10:48发表的  :


这样是可以,但是会出现麻烦的, 需要在Touchplane处理中规避这边屏蔽,那边重新使能的现象

TouchPanel驱动中不需要任何额外的处理,关键是要规划好什么时候要屏蔽TouchPanel,什么时候要恢复TouchPanel。而当前TouchPanel是否被屏蔽的状态可以用DrvGlob来保存。
游客

返回顶部