叶帆哥哥的第一个wince驱动——FakeGPS 驱动

本文详细介绍了一种在WinCE平台上开发FakeGPS驱动的具体步骤,包括驱动代码编写、DEF文件配置、makefile设置等,实现了通过共享内存发送伪造GPS定位信息。

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

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

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

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

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

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

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

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

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

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

2、DEF文件

文件名: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

3、makefile文件

就下面一句

!INCLUDE $(_MAKEENVROOT)/makefile.def

4、sources文件

内容如下:

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


原文地址 http://blog.youkuaiyun.com/yefanqiu/article/details/2762305#reply

读后感:这个文章是我百度来的,这个FakeGPS驱动 正想搞,对我启发很大!

内容概要:本文围绕六自由度机械臂的人工神经网络(ANN)设计展开,重点研究了正向与逆向运动学求解、正向动力学控制以及基于拉格朗日-欧拉法推导逆向动力学方程,并通过Matlab代码实现相关算法。文章结合理论推导与仿真实践,利用人工神经网络对复杂的非线性关系进行建模与逼近,提升机械臂运动控制的精度与效率。同时涵盖了路径规划中的RRT算法与B样条优化方法,形成从运动学到动力学再到轨迹优化的完整技术链条。; 适合人群:具备一定机器人学、自动控制理论基础,熟悉Matlab编程,从事智能控制、机器人控制、运动学六自由度机械臂ANN人工神经网络设计:正向逆向运动学求解、正向动力学控制、拉格朗日-欧拉法推导逆向动力学方程(Matlab代码实现)建模等相关方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握机械臂正/逆运动学的数学建模与ANN求解方法;②理解拉格朗日-欧拉法在动力学建模中的应用;③实现基于神经网络的动力学补偿与高精度轨迹跟踪控制;④结合RRT与B样条完成平滑路径规划与优化。; 阅读建议:建议读者结合Matlab代码动手实践,先从运动学建模入手,逐步深入动力学分析与神经网络训练,注重理论推导与仿真实验的结合,以充分理解机械臂控制系统的设计流程与优化策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值