叶帆工作室

嵌入式开发爱好者(十年开发经验,精通C/C++/VC/VB/C#...)

用户操作
[即时聊天] [发私信] [加为好友]
叶帆ID:yefanqiu
536320次访问,排名80好友0人,关注者224
微软MVP / CSDN 2008十大MVB/MSDN中文技术论坛版主
yefanqiu的文章
原创 218 篇
翻译 0 篇
转载 3 篇
评论 1099 篇
叶帆的公告
本博客原创文章,作者保留一切权利,需经作者同意后方可转载,转载时 请注明[叶帆工作室]及文章链接。yefan@vip.sina.com
【简介】叶帆[微软MVP]
【文章】叶帆文章列表
【软件】叶帆共享软件列表
最近评论
BinYu:我用的是vista home basic sp1,但vs2005强行装不上去,请帮忙分析一下,qq:811344767,先谢谢了
wjh6877:算法想好了吗?

没有就是空话
一生好人:其实我也想来正版,但生活逼人,没办法啊
fox23:something like java card;-)
wwqqha:不错不错
文章分类
收藏
    相册
    叶帆照片
    【叶帆软件】
    [01]VB源码之友(V2.1.548)
    [02]API浏览器.net(V5.0)
    [03]叶帆成语词典(V2.0.8)
    [04]叶帆密码库(V1.2.8)
    【叶帆资源】
    DAO 2.0引擎
    叶帆快速通道
    MSDN-MVP
    Windows Embedded 专题
    中文MSDN
    叶帆圈子--工业自动化
    叶帆工作室(博客园)
    叶帆工控--工业自动化
    叶帆群组--工业应用开发
    微软中文技术论坛
    微软硬件创新中心(HIC)
    瑞康社区论坛
    叶帆友情链接
    张欣
    枕善居
    莫依
    葛涵涛
    郑建
    陈辉
    马宁
    马骐
    魏涛序
    黎波
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 我的第一个WINCE驱动收藏

    新一篇: 2008 Windows 硬件工程大会(WinHEC) | 旧一篇: 值得期待的.Net Micro Framework 3.0

    早在两年前就开始做WINCE应用程序了,但是由于分工的原因,一直以来都没有机会深入了解WINCE 驱动层面的开发(包含PB相关的系统定制)。要不是前段时间马宁安排了FakeGPS开发工作,真不知道什么时候才能了解WINCE驱动开发。

    FakeGPS从字面理解就是伪装的GPS,也就是说,打开的一个串口实际上并没有连接GPS设备,但是相关应用程序却能从这个串口中获取GPS定位信息(当然这个信息是伪造的了)。

    我最初的思路是做两个串口驱动程序,一个串口是就是GPS应用程序使用的串口,另个一个串口与这个串口建立一个软通道,通过一个专门的应用程序向这个串口发送GPS相关定位信息,同时GPS串口就能接收到这些数据。后来在马宁的提示下,还是觉得通过共享内存交互数据更好,所以最终的方案选择的是共享内存的方法。

    根据我个人的体验,编写具体的驱动程序只要有C语言功底,应该是不难的。但是要把写好的驱动程序放在什么地方,需要设置什么参数等等,就不是短时间就能掌握和了解的了。这一方面幸好看了唐勉的blog,这部分内容就化难为易了,相关文章请参见:http://blog.csdn.net/nanjianhui/archive/2008/07/18/2674753.aspx

    下面就把我开发这个驱动的步骤详细说一下:

    1、驱动代码编写(FakeGPS .c

    由于我把驱动集成在模拟器中,所以源码存放的路径,我选择的是.\WINCE600\PLATFORM 目录下,具体路径,如下图:

    驱动的代码(标准流式驱动)这里暂略,在介绍FakeGPS具体实现的时候在详细说明。

    驱动相关代码编写完毕后,在该项目的选项上单击右键,选择Build选项即可编译该程序为dll文件(如下图)。

    注:在\WINaaaabbbbCE600\PLATFORM\DEVICEEMULATOR\SRC\DRIVERS目录下创建FakeGPS时,注意要修改该目录下的Dirs文件,在结尾添加一句“FakeGPS  \

    2DEF文件

    文件名:FakeGPS.def (和FakeGPS .c同一个目录)

    LIBRARY FAKEGPS

    EXPORTS COM_Init

             COM_Deinit

             COM_Open

             COM_Close

             COM_Read

             COM_Write

             COM_Seek

             COM_IOControl

             COM_PowerDown

             COM_PowerUp

    3makefile文件

    就下面一句

    !INCLUDE $(_MAKEENVROOT)\makefile.def

    4sources文件

    内容如下:

    TARGETNAME=FAKEGPS

    TARGETTYPE=DYNLINK

    RELEASETYPE=PLATFORM

     

    TARGETLIBS=$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib           

    DEFFILE=FakeGPS.def

    PREPROCESSDEFFILE=1

    DLLENTRY=DllEntry

    INCLUDES=..\..\inc

    SOURCES=FakeGPS.c

    5、修改platform.reg文件(注册表选项)

    platform.reg文件在\WINCE600\PLATFORM\DEVICEEMULATOR\FILES目录下

    打开该文件,添加如下内容:

    [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\FakeGPS]

       "Prefix"="COM"

       "Dll"="FakeGPS.dll"

       "Index"=dword:8

       "Order"=dword:0

       "FriendlyName"="YeFan FakeGPS"

    6、修改platform.bib文件(把DLL文件集成到NK中)

    platform.bib文件在\WINCE600\PLATFORM\DEVICEEMULATOR\FILES目录下

    打开该文件,添加如下内容:

    FAKEGPS.dll  $(_FLATRELEASEDIR)\FAKEGPS.dll                         NK SHK

    7、修改deviceemulator.pbcxml文件

    deviceemulator.pbcxml文件在\WINCE600\PLATFORM\DEVICEEMULATOR\CATALOG目录下

    <BSP></BSP>中添加如下一句:

     <BspItemId>Item:YF:FakeGPS:DeviceEmulator</BspItemId>

    < CatalogFile ></CatalogFile>中添加如下内容:

      <Item Id="Item:YF:FakeGPS:DeviceEmulator">

        <Title>FakeGPS</Title>

        <Description>FakeGPS Driver</Description>

        <Type>BspSpecific</Type>

        <Location>#MS:Deviceemulator:DeviceDrivers:Location</Location>

        <SourceCode>      <Title>$(_WINCEROOT)\PLATFORM\DEVICEEMULATOR\SRC\DRIVERS\FakeGPS</Title>      <Path>$(_WINCEROOT)\PLATFORM\DEVICEEMULATOR\SRC\DRIVERS\FakeGPS</Path>

        </SourceCode>

      </Item>

    注:千万不要用VS2005集成环境编辑pbcxml文件,我就是用该环境把pbcxml文件搞坏了,最后新建工程时,连模拟器选项都没有了。

     

    最后的结果一览:

     

    aaaabbbb

     

     

    aaaabbbb   

     

       驱动代码及相关测试程序的代码,待详细讲解FakeGPS的时候在一一说明。

    发表于 @ 2008年08月03日 21:29:00|评论(loading...)|收藏

    新一篇: 2008 Windows 硬件工程大会(WinHEC) | 旧一篇: 值得期待的.Net Micro Framework 3.0

    评论

    #aawolf 发表于2008-08-04 14:15:03  IP: 207.46.92.*
    恭喜,恭喜,你终于搞出来了,强烈支持一下。
    #blackart 发表于2008-08-04 17:16:53  IP: 221.238.227.*
    不错,值得借鉴!
    #fox23 发表于2008-08-04 19:13:38  IP: 221.223.123.*
    8错, 老马居然来强占你的时间 哈哈~
    #hacker47 发表于2008-08-05 00:19:15  IP: 60.172.213.*
    目前驱动就是这样了,程序不难写(因为是C),但是环境和发布问题很多,尤其是自己一个人搞得情况。
    #blueskit 发表于2008-08-05 12:28:23  IP: 116.228.229.*
    lz,从Wince5开始,OS已经提供了你实现的这个类似 FakeGPS 的操作方式了。目的就是允许多个应用共享GPS模块硬件。
    2008-08-06 13:03:06作者回复
    你有相关代码吗?谢谢!
    #changesway 发表于2008-09-01 21:04:35  IP: 60.12.143.*
    很有收获!谢谢
    #zhanglingyun 发表于2008-09-24 12:23:52  IP: 222.185.251.*
    叶老师好,我现在开发一个WIFI应用程序遇到了困难,就是通过WIFI连接到一个AP点,我用了opennetcf控件,但是在ConnectManager.Connect出现NOpathtodestion.的异常,实在不知道什么原因?知道的话可以告诉我啊?
    如过不知道,那能不能提供一个WIFI连接工具,可以让我自己设置连接AP点,然后连接的工具?
    谢谢!
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 叶帆