【IT168 专稿】Windows Embedded是微软针对嵌入式领域推出的操作系统,包括:Windows Embedded CE、XP Embedded和.NET Micro Framework。其中Windows Embedded CE主要应用于手持设备、机顶盒、GPS和PMP等嵌入式设备中。基于Windows Embedded CE专门针对智能手机的操作系统平台。XP Embedded主要用于ATM、POS、电子信息亭等设备。以下疑难均由微软专家为我们解答,希望对大家有所帮助。
Wince篇
1.Wince的RS232接口
问题:最近做一个ARM9数据采集的项目,采用S3C2410内核,通过带数显的千分尺测量数据,然后通过RS232接口模块发送到ARM板的串口1,串口程序用EVC4.0编写,数显千分尺不间断主动发送数据,ARM上手动启动采集,用多线程读数据,但是一直读不到数据,想问一下,对这种情况是否要为千分尺写专门的驱动程序,千分尺输出遵循的是标准的RS232协议?用VC6.0写的串口程序在 PC与千分尺之间采集数据已经走通了,我也知道Wince不支持重叠I/O,所以采用了多线程,程序应该没有问题,我想是不是驱动出了问题?我采用的是厂家提供的BSP定制的Wince系统。
答案:1.RS232只是基本的物理线路,发送的是串口的基本数据格式(启始BIT+数据BIT+停止BIT),你的千分尺应该有自己的协议格式吧?但只要是基于RS232的通讯方式,就不用单独为其写CE的驱动程序,只用按千分尺的通讯协议写解析驱动即可以
2.你的VC60程序通讯正常,只能说明你的PC机的串口是正常的,从你的问题描述中,并没有看到你说明你证明了你的ARM设备的串口是正常的所以建议如下:
(1)测试一下你的ARM设备的串口是正常的吗?
(2)如果(1)不正常显然是你的CE系统或硬件问题,反之就是你的EVC程序问题,解决了第一步我们再进步考虑第2步
2.Wince的动态映射的简单方法
问题:Wince下用I/O口作为输入,外接一个按键,我只接收按键的命令。我用的EVC写的应用程序,请问要自己写驱动吗?怎么写?
答案:按提问者的描述,你有2种方法完成应用程序功能,我在此提出最简单的动态映射方法:
(1)使用MmmapIoSpace映射你的I/O端口为一个进程空间
(2)使用之类的函数读取数据
WRITE_PORT_UCHAR()
WRITE_PORT_UCHAR()
READ_PORT_UCHAR( )
(3)不要忘记使用完后要动态的UnMmmapIoSpace释放端口
3. Wince系统的软件输入面板(SIP)的使用
问题:我通过实现IInputMethod接口, 实现了一个软件输入面板(SIP). 通过这个SIP输入字符的时候, 系统会弹出一个默认的候选窗口. 但这个候选窗口比较难看, 请问我可不可以用什么方法去定制这个侯选窗口? 在网上查阅一些资料, 突然对SIP和输入法的概念不明确了. 请问SIP和输入法之间的关系是什么呢?
答案:软件输入面板(Software Input Panel,简称SIP)是每个装备了Wince系统的移动平台的一个基本功能。它提供给用户在PDA上进行数据输入的一种手段。
我们可以通过以下两种方式来修改面板的外观:
(1)通过直接修改Wince中的IM代码。由于Wince的80%的代码都是公开的,而IM的代码则是完全公开的。我们可以直接通过修改IM的代码来修改窗口界面。
(2)通过自定义开发来完成。我们可以参照Wince中带的IM接口函数和定义格式来开发自己的IM控制界面,然后卸载原有的IM组件,通过DLLRegister来注册我们自己编写的IM组件,替换原有的就可以了。