winCE平台下.net编程怎样访问硬件的寄存器地址?

hjwahjl   2008-11-13 17:58 楼主
windowsCE 5.0中使用.net做开发,怎么才能访问底层硬件的寄存器的地址呢?比如并口的读写寄存器等等,上网搜了一圈,没找到什么资料啊,这里高手云集,呵呵,知道的兄弟告诉一声 感激不尽啊

回复评论 (16)

似乎.net compact framework还做不到直接访问硬件,所以我想你也许需要混合编程。
点赞  2008-11-13 18:18
引用: 引用 1 楼 yashi 的回复:
似乎.net compact framework还做不到直接访问硬件,所以我想你也许需要混合编程。


在windows xp/98/2000中可以通过winio.dll 这个链接库来做到,所以我想wince平台下面有没有类似的呢?
点赞  2008-11-13 18:22


顶!

我也顺便打个广告,本人也有支持ESRI ARCGIS的.shp文件的地图的Windows mobile 5.0/6.0手机GIS地图软件----GPS移动GIS(GPSMobileGIS),PC端的服务软件----移动GIS服务平台(GPSMobileGISServer),可成套出售,可以完成以下功能:
1,通过GPRS上网连接后台服务端程序来实时传输在户外工作采集的数据到后台数据库!

2,可以实时发回PDA的GPS信息,在后台地图上直接定位PDA用户的位置,也可以下发PDA的经纬度信息让PDA用户定位和跟踪其它PDA用户,了解自己与其它PDA的位置关系,起到定位和跟踪的作用!

3,可以发回PDA当前所在地名如在天河城附近等,实现在外面工作就知道在何时何地上班打卡的效果,同时可以在后台为相应的PDA用户设置固定时长返回一次当前位置的GPS信息确保对相应PDA用户的定位,跟踪与监控!

4,移动GIS服务平台可以对PDA用户进行登记,注销等管理,在移动GIS服务平台登记的PDA用户才可登陆此服务器,依据IMSI和IMEI号来进行登陆验证,安全可靠,

5,可以对在外面工作的PDA用户进行任务指派和任务管理如
   PDA号码:13800138000
   任务名称:测试线路
   任务说明:主要是在天河北路一带的电力设施进行检测!

6,(此功能为信息采集的核心功能)用户可自行设置需要采集信息的对象及其属性,指派给指定的PDA用户,如测试电路的属性模板:
    //0-编辑属性(可多个) ; 1-下拉属性(可多个) ; 2-选择属性(可多个) ; 3-大文本编辑框(可以没有此属性,但有此属性时只能有一个) ; 4-列表属性(可以没有此属性,但有此属性时只能有一个)(属性0+属性1+属性2/2+属性2%2)<=28
    name,名称,0,;beproject,所属项目,0,;type,类型,1,0:小-1:中-2:大;complete,完成,2,;remark,备注,3,;listbox,设备表,4,

7,可以实时上传文件到后台服务器,实时下载后台服务器的文件和实时更新PDA上客户端的系统!

8,可以实时采集和传输图像信息!

跟据您的需要,还可以增加其它功能!

可以应用在以下系统:
     1、PDA移动办公如户外,异地打卡,上班;
     2、GIS林业资源监控系统;
     3、GIS电力巡检系统等;
     4、GIS通信资源如移动,联通,电信的管线资源巡检系统等!

QQ:546046182
EMail:wang921018@tom.com

点赞  2008-11-14 10:27


顶!

我也顺便打个广告,本人也有支持ESRI ARCGIS的.shp文件的地图的Windows mobile 5.0/6.0手机GIS地图软件----GPS移动GIS(GPSMobileGIS),PC端的服务软件----移动GIS服务平台(GPSMobileGISServer),可成套出售,可以完成以下功能:
1,通过GPRS上网连接后台服务端程序来实时传输在户外工作采集的数据到后台数据库!

2,可以实时发回PDA的GPS信息,在后台地图上直接定位PDA用户的位置,也可以下发PDA的经纬度信息让PDA用户定位和跟踪其它PDA用户,了解自己与其它PDA的位置关系,起到定位和跟踪的作用!

3,可以发回PDA当前所在地名如在天河城附近等,实现在外面工作就知道在何时何地上班打卡的效果,同时可以在后台为相应的PDA用户设置固定时长返回一次当前位置的GPS信息确保对相应PDA用户的定位,跟踪与监控!

4,移动GIS服务平台可以对PDA用户进行登记,注销等管理,在移动GIS服务平台登记的PDA用户才可登陆此服务器,依据IMSI和IMEI号来进行登陆验证,安全可靠,

5,可以对在外面工作的PDA用户进行任务指派和任务管理如
   PDA号码:13800138000
   任务名称:测试线路
   任务说明:主要是在天河北路一带的电力设施进行检测!

6,(此功能为信息采集的核心功能)用户可自行设置需要采集信息的对象及其属性,指派给指定的PDA用户,如测试电路的属性模板:
    //0-编辑属性(可多个) ; 1-下拉属性(可多个) ; 2-选择属性(可多个) ; 3-大文本编辑框(可以没有此属性,但有此属性时只能有一个) ; 4-列表属性(可以没有此属性,但有此属性时只能有一个)(属性0+属性1+属性2/2+属性2%2)<=28
    name,名称,0,;beproject,所属项目,0,;type,类型,1,0:小-1:中-2:大;complete,完成,2,;remark,备注,3,;listbox,设备表,4,

7,可以实时上传文件到后台服务器,实时下载后台服务器的文件和实时更新PDA上客户端的系统!

8,可以实时采集和传输图像信息!

跟据您的需要,还可以增加其它功能!

可以应用在以下系统:
     1、PDA移动办公如户外,异地打卡,上班;
     2、GIS林业资源监控系统;
     3、GIS电力巡检系统等;
     4、GIS通信资源如移动,联通,电信的管线资源巡检系统等!

QQ:546046182
EMail:wang921718@tom.com

点赞  2008-11-14 10:44
没有人知道吗?大家帮忙啊啊
点赞  2008-11-14 16:08
为什么要访问寄存器,你用.net不就是为了与硬件无关吗

如果是在要访问硬件,也需要自己做一个访问硬件的接口库,然后在.net调用
点赞  2008-11-14 16:35
引用: 引用 6 楼 ilovedrv 的回复:
为什么要访问寄存器,你用.net不就是为了与硬件无关吗

如果是在要访问硬件,也需要自己做一个访问硬件的接口库,然后在.net调用


支持一个
点赞  2008-11-14 16:44
对.net 不熟, 据说有P/invoke机制可以调用到wince的API吗? 如果真可以的话这个问题就可以变为如何在wince应用中访问IO了,应该还是可以做的.
点赞  2008-11-14 16:56
引用: 引用 1 楼 yashi 的回复:
似乎.net compact framework还做不到直接访问硬件,所以我想你也许需要混合编程。

MVP版主都发话了,你还不信?

在5.0下貌似可以
6.0就不行了吧。——我也是在论坛看到,没有尝试过。
点赞  2008-11-14 17:04
5.0下面可以做一个Lib来调用,6.0下面只能实现在驱动层,然后AP通过IOCTL来调用。
点赞  2008-11-14 17:56
引用: 引用 8 楼 eagle1597 的回复:
对.net 不熟, 据说有P/invoke机制可以调用到wince的API吗? 如果真可以的话这个问题就可以变为如何在wince应用中访问IO了,应该还是可以做的.

该楼正解。
先用native code写一个dll实现对驱动的IO访问实现;在用managed code写APP去P/invoke之前的dll。
或者直接在managed code里P/invoke用到的API。
点赞  2008-11-17 11:01
在 c# 中通过调用 API 函数即可实现。貌似是 VitrulMalloc VitrulCopy VitrulFree 这几个函数,具体用法 Google It
点赞  2008-11-17 13:43
Wince支持底层的硬件端口访问的,你可以从其help文档中找到一些端口、寄存器等的操作函数。

或者用混合编程方法,嵌入汇编代码实现端口读写。
点赞  2008-11-17 13:47
引用: 引用 12 楼 xajhuang 的回复:
在 c# 中通过调用 API 函数即可实现。貌似是 VitrulMalloc VitrulCopy VitrulFree 这几个函数,具体用法 Google It

P/INVODk一下,比如VirtualFree这样用:
[DllImport("core.dll", SetLastError=true)]
static extern bool VirtualFree(IntPtr lpAddress, uint dwSize,
   uint dwFreeType);
点赞  2008-11-17 15:10
引用: 引用 12 楼 xajhuang 的回复:
在 c# 中通过调用 API 函数即可实现。貌似是 VitrulMalloc VitrulCopy VitrulFree 这几个函数,具体用法 Google It

这个思路没问题,就是拼写错了:)
P/INVODk一下,比如VirtualFree这样用:
[DllImport("core.dll", SetLastError=true)]
static extern bool VirtualFree(IntPtr lpAddress, uint dwSize,
   uint dwFreeType);
点赞  2008-11-17 15:11
evc中调用ceddk中的函数,可以用WRITE_PORT_UCHAR()访问IO端口,
应用MmMapIOSpace()映射到内存的寄存器。
点赞  2008-11-17 20:02
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复