问题描述:怎样在定制系统时,把Calibrui Module克隆出来。再根据软件需求,来更改触摸屏校准时的UI及控制操作等。
先说方法吧。WinCE的文档中的“How to Replace the Calibrui Module”有说明怎么做的步骤。先在PB中把Calibrui Module克隆,便会生成CalibrUi[gwe2 clone]这个Project。我们要做的修改都在这个Project中。修改完后,点Build OS中的Sysgen。好了,搞定了。
方法很简单吧。但是好事多摩嘛,在做的过程中会碰到好多问题。我把我遇到的问题及解决方法写下来了。可供参考。
首先,从迷茫中寻求解决方案。刚碰到触摸屏校准问题,一头雾水。不知道怎么做。
我本来想应该是驱动做好了Calibrate这个功能,再引出一个接口,应用层来控制UI并调驱动给的接口来启动Calibrate。我忽略了OS的存在。构架的思想还是不好。正确的应该是OS中来封装一个Calibrate模块,引出Calibrui Module,做为UI接口,让开发人员可以在此做动作,更改UI及控制。这样真的挺好。对于移植性,和模块化等都起作用。
迷茫无助之际,上网搜解决办法。网上基本上都只提到直接用TouchCalibrate这个函数便行。可是这个函数只能启动OS中的Calibrate,而此时便想,既然这个函数可以调起Calibrate,那应该Calibrate的UI控制也是这个函数控制的吧。这个想法是对了。于是乎,想找出TouchCalibrate()的代码来看,改下它所控制的UI。真可悲,找不到TouchCalibrate()的代码。不知道是我没找到,还是微软没开放此代码。如果是的话,那就难怪大家会说微软不厚道。为怎么会这么想呢?因为郁闷呀,费了好大心思,结果微软告诉你,哈哈,你想要的答案我不跟你说。困惑之中,亮光惊现。“书中自有颜如玉”,女神还是从文档中走出来了。找到了“How to Replace the Calibrui Module”。得到的经验:碰到问题还是老实的,认真地看文档,从文档中找着的方案应该是最可能解决你的问题的。网上搜来的方案只能参考,一定得弄懂它解决的是什么问题。可惜的是,网上大多文章只是说自已的方法,而不说此方法能搞定什么问题。
其次,有了“How to Replace the Calibrui Module”,便要验证其可行性。把UI的提示信息改成了中文便来做测试。此时便是Build OS->Sysgen时碰到的问题了。这是最费时间的了。Sysgen一次要十几分钟呀。人在等待时,时间便变老了,走得慢了。Sysgen Debug通不过,此问题还没解决,不知道为什么。所以不能单步调试了,只能Sysgen Release来试。Sysgen Release通过了,但是校准时,还是出不来中文。郁闷,女神不灵呀。组长解决了此问题,让女神成真神。他查到Sysgen时的错误信息里面有找不到CalibrUi_clone.rc。于是,手动将CalibrUi_clone.res copy一份到%WINCE500%\PBWorkspaces\%OS _DesignName%\CalibrUi\obj\ARMV4I\retail的0409和0804文件夹中。(我定制的OS语言选了中,英文。0804,0409分别代表中,英文)。好了,Sysgen通过了,校准中文提示也出来了。经验就可省时间,就是财富。组长调程序,查错的能力值得我学。我第一次用PB,碰到错误就傻眼了,不知道怎么调。再提醒一点,如果改了CalibrUi_clone.rc,要再次手动将上面两文件夹中的CalibrUi_clone.rc替换。还有改了CalibrUi[gwe2 clone]后。要将%WINCE500%\PBWorkspaces\%OS _DesignName%\RelDir\smdk2443_ARMV4I_Release文件夹清空,到少要将gwes.exe删除。要不再次Sysgen时,gwes.exe不会更新。也就是说你看不到你想要的结果。可能你要说我得把clean before building勾上。告诉你,我确实勾上了。这应该是微软的bug吧。可是组长说我们用的PB没有打过补丁。不知道此问题现在是否还有广泛性。
最后,看到了光明大道之后。便是沿着此方法根据需求改UI了。我主要改了CalibrUi.cpp和CalibrUi_clone.rc。CalibrUi.cpp主要函数的功能我介绍下。要改它,肯定要先清楚它是做什么的。
TouchCalibrateUI_Initialize做初始化。保存两个全局变量。
TouchCalibrateUI_DrawMainScreen打印校准操作说明信息。
TouchCalibrateUI_HandleUserInputMessage捕捉屏幕事件并做相应操作。
TouchCalibrateUI_DrawConfirmationScreen打印新校准测定之后,提示是否保存。
TouchCalibrateUI_WaitForConfirmation等待用户决定并打印相关信息。
这面五个函数是按被调用启动的先顺序列出来的。
TouchCalibrateUI_DrawMainScreen和TouchCalibrateUI_DrawConfirmationScreen都调用了TouchCalibrateDrawScreenText。TouchCalibrateDrawScreenText是用来把字符串打到屏幕上。我主要在这个函数中做了相应的更改。如改屏幕背景色,改打印出来的字的颜色等。
从此困扰已久的屏幕校准问题终于解决了。

转载于:https://www.cnblogs.com/xilentz/archive/2010/05/31/1747942.html

克隆Calibrui Module相关推荐

  1. NetBeans 打开/保存具有指定编码的文件插件

    NetBeans 编码插件 此插件打开/保存具有指定编码的文件. 要求 NetBeans8.2+ 以编码方式打开/保存 文件 > 以编码方式打开/保存... 在状态行显示编码 当前文件编码将显示 ...

  2. COCO API的克隆 - http://cocodataset.org/

    原文自述文件: COCO是一个大型图像数据集,设计用于对象检测,分割,人物关键点检测,填充物分割和字幕生成.该软件包提供了Matlab,Python和Lua API,可帮助加载,解析和可视化COCO中 ...

  3. 简单module_深入理解JavaScript之全面解析Module模式

    简介 Module模式是JavaScript编程中一个非常通用的模式,一般情况下,大家都知道基本用法,本文尝试着给大家更多该模式的高级使用方式.首先我们来看看Module模式的基本特征: 模块化,可重 ...

  4. 深入理解JavaScript系列(3):全面解析Module模式

    简介 Module模式是JavaScript编程中一个非常通用的模式,一般情况下,大家都知道基本用法,本文尝试着给大家更多该模式的高级使用方式. 首先我们来看看Module模式的基本特征: 模块化,可 ...

  5. eclipse导入github项目提示没有发现项目_eclipse clone克隆github远程库工程到本地

    项目作者把项目push到github远程库,其他用户可以把项目克隆到本地: eclipse里的操作具体如下: File -> Import... 找到Git 选择 Project from Gi ...

  6. IDEA修改module的名字

    首先右键module名,选择[Refactor]-[Rename...] 然后选择[Rename module] 只修改这些对于当前开发是没有问题了 但是刚开始把module添加成maven项目的时候 ...

  7. linux克隆后重新封装,克隆后立即在OSX上修改Linux内核源代码

    当我在OS X上克隆 Linux源代码时,它们会立即被更改,并且git reset –hard不会将内容恢复.这是一个完整的会议: $git clone git://github.com/torval ...

  8. 部署flas到服务器:No module named flask

    首先,你要先把nginx和uwsgi安装好(个人觉得这搭起来比较舒服),可以通过pip 或者源安装,好了接下来我就讲讲我的踩坑经历与解决办法. 我先采用的pip  install flask的方法,原 ...

  9. 浅析 golang module

    浅析 golang module 老虎来了 ​浅析 golang module - 知乎什么是 module?module 解决了什么问题?module 代表一个版本管理单元,它包括一个或者多个 pa ...

最新文章

  1. 生成全1矩阵_全矩阵捕获技术:一种最大限度提升便携式相控阵超声检测设备功能的新技术...
  2. C++ Opengl绘制3D源码
  3. Spring Boot结合thymeleaf
  4. 移动web:转盘抽奖(幸运大转盘)
  5. 03-06 APP-UI自动化测试-等待方式
  6. 使用Emit的时候类型XXX尚未完成
  7. Java网络编程学习汇总
  8. 花呗问答匹配(part3 各种模型运行)
  9. 基于Flask+Echarts+爬虫的疫情监控系统
  10. 25 个习惯使你更开心
  11. 以不变应万变的客服代表,让服务体验持续提升
  12. 网络运维与安全岗位月薪2.5w,您还不知道的前景!
  13. Android合理的使用闪屏
  14. ospf 指定dr_OSPF DR BDR 配置方法2
  15. ITECH 微电网测试解决方案
  16. django:信号机制
  17. dst发育筛查有意义吗_Dst发育筛查是什么?
  18. python跨年表白神器--你值得拥有!
  19. 思杰 Citrix 微软 Vmware 应用虚拟化 服务器虚拟化 桌面虚拟化 对比
  20. 手把手教你从零跑一个Skynet

热门文章

  1. 只用CPU开发自动驾驶轮船,他们居然做到了
  2. 他是清华姚班高材生,选择从谷歌辞职回山西教书,张昆玮说「不想像成功学那样生活」...
  3. 13、SpringBoot-CRUD员工修改操作/删除
  4. 成都铁路警方联合多部门开展反恐防暴演练
  5. 现代软件工程 第七章 【MSF】练习与讨论
  6. weeklyblogging_20100805PM
  7. 最详细的SQL注入相关的命令整理
  8. python模块化设计耦合度_什么是程序设计中的高内聚、低耦合?
  9. Python 笔试集(4):True + True == ?
  10. KEIL MDK LIB库文件的制作