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

article/2025/10/9 6:18:32

早在两年前就开始做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  /”

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.csdn.net/yefanqiu/article/details/2762305#reply

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


http://chatgpt.dhexx.cn/article/v16UvwYw.shtml

相关文章

【阿里云IoT+YF3300】11.物联网多设备快速通信级联

我们见到的很多物联网设备&#xff0c;大都是“一跳”上网&#xff0c;所谓的“一跳”就是设备直接上网&#xff0c;内嵌物联网模块或者通过DTU直接上网。其实稍微复杂的物联网现场&#xff0c;往往网关下面连接若干物联网设备&#xff08;如下图&#xff09;&#xff0c;并且这…

脚本语言运用(VBScript)叶帆

脚本语言运用(VBScript) VBScript 使用 ActiveX(R)脚本与宿主应用程序对话。使用 ActiveX Script&#xff0c;浏览器和其他宿主应用程序不再需要每个脚本部件的特殊集成代码。ActiveX脚本使宿主可以编译 Script、获取和调用入口点及管理开发者可用的命名空间。通过 ActiveX Scr…

叶帆密码箱简介

************************************************************ 叶帆软件系列 **** 叶帆密码箱 **** …

史上最全wireshark使用教程,8万字整理总结,建议先收藏再耐心研读

目录 第 1 章 介绍... 1 1.1. 什么是Wireshark. 1 1.1.1. 主要应用... 1

【认识】wireshark使用教程

本文章&#xff0c;是简单粗暴学习Wireshark的抓包功能后&#xff0c;记录的一些笔记。 1 Wireshark简介及抓包原理及过程 1.1 简介 Wireshark是1个网络封包分析软件。网络封包分析软件的功能是截取网络封包&#xff0c;并尽可能显示出最为详细的网络封包资料。Wireshark使用…

超详细的 Wireshark 使用教程

一、wireshark是什么&#xff1f; wireshark是非常流行的网络封包分析软件&#xff0c;简称小鲨鱼&#xff0c;功能十分强大。可以截取各种网络封包&#xff0c;显示网络封包的详细信息。 wireshark是开源软件&#xff0c;可以放心使用。可以运行在Windows和Mac OS上。对应的…

【最详细】Wireshark使用教程

【最详细】Wireshark使用教程 原理步骤1.安装2.wireshark使用3.先看几个数据包&#xff0c;熟悉一下wireshark4.wireshark过滤规则4.1 地址过滤4.2 端口过滤4.4 其他常用过滤5.流查看6.数据包保存 说明总结 原理 wireshark是一款网络嗅探工具。可以监视网络的状态、数据流动情…

Wireshark 使用教程

一、wireshark的安装: 在官网下载后运行安装程序,一直下一步即可,安装完成。 二、wireshark开始抓包: 1、打开wireshark 3.0.1,主页面如下: 2、双击需要抓包的网卡: 3、双击打开后就已经开始了抓包工作: 4、执行需要抓包的操作,如:ping www.baidu.com: 5、抓包完…

wireshark抓包工具详细说明及操作使用

wireshark是非常流行的网络封包分析软件&#xff0c;功能十分强大。可以截取各种网络封包&#xff0c;显示网络封包的详细信息。使用wireshark的人必须了解网络协议&#xff0c;否则就看不懂wireshark了。 为了安全考虑&#xff0c;wireshark只能查看封包&#xff0c;而不能修改…

wireshark使用教程

文章来源&#xff1a;https://blog.csdn.net/qq_30682027/article/details/83021901 文章目录 1. 安装 2. 使用技巧 2.1. 捕获过滤器表达式 2.2. 开始捕获 2.3. 捕获结果 2.3.1. 着色规则 2.3.2. 数据包的大致结构 2.3.3. 示例 2.3.3.1. 三次握手 2.3.3.2. 四次挥手 2.3.3.3. …

Wireshark软件使用教程

Wireshark软件使用教程 Wireshark是非常流行的网络封包分析软件&#xff0c;可以截取各种网络数据包&#xff0c;并显示数据包详细信息。常用于开发测试过程各种问题定位。本文主要内容包括&#xff1a; 1、Wireshark软件下载和安装以及Wireshark主界面介绍。 2、WireShark简单…

Wireshark详细使用教程

简介 Wireshark是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包&#xff0c;并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口&#xff0c;直接与网卡进行数据报文交换。WireShark可以比喻做硬件工程的万用表、示波器&#xff0c;同样我们…

Wireshark零基础使用教程(超详细)

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「专栏简介」&#xff1a;此文章已录入专栏《网络安全快速入门》 Wireshark零基础使用教程 一、Wireshark是什么二、Wireshark抓包原理三、W…

@NotNull

这里平时写实体类后Controller层接收了都是用if(XXX!null){}来判断是否为空这样显然代码冗余性 这里如果在实体类的这个属性上面NotNull既可以完成这个判断 记录一下 我们来定义这个Person,这里username不能为null就这么注释 这里 浏览器输入 控制台打印

Non-local的一些理解

其实non-local就是先计算该点&#xff08;点为向量&#xff0c;维度是通道数&#xff09;与其他点&#xff08;也是向量&#xff0c;维度是通道数&#xff09;的相似度&#xff0c;对这个相似度进行归一化&#xff0c;得到各个点的权重&#xff0c;这个权重再对应乘以对应点的特…

NOT IN 和 IS NULL

1、题目&#xff1a; 获取所有非manager的员工的 emp_no 2、答案 2.1、方法1&#xff1a;NOT IN 子查询 select emp_no from employees where emp_no not in (select emp_no from dept_manager); 2.2、方法2&#xff1a;LEFT JOIN 左连接 IS NULL SELECT e.emp_no FROM em…

Non-local 理解

Non-local和谷歌的all is attention 如出一辙。 也可能是反着&#xff0c;all is attention和non-local如出一辙。 看的重点是THWxTHW这个矩阵&#xff0c;直接暴力所有可能性。 因此公式1公式3公式6就是Figure2。换句话说Figure2表示f()函数采取Embedded Gaussian且添加了res…

Nomad 简介

摘要&#xff1a; Nomad 简介 Nomad是一个管理机器集群并在集群上运行应用程序的工具。 Nomad的特点&#xff1a; 支持docker,Nomad的job可以使用docker驱动将应用部署到集群中。 Nomad安装在linux中仅需单一的二进制文件&#xff0c;不需要其他服务协调&#xff0c;Nomad将资源…

[:,None]和[None,:]

记录一下新知识点.首先corr_ij是一个一维数组 corr_ij打印了一下他是个一列的数组 # 一列43行 pd.DataFrame(corr_ij)这里转置并不影响,都是一列,主要看[:,None],效果.发现并没有区别 # None增加维度 corr_ij.T[:,None] pd.DataFrame(corr_ij.T[:,None])接下来看[None,:]产生…