Micro Framework 3.0模拟器改造

简介:

Micro Framework 3.0的SDK去年十月份就已经发布了,本打算在该SDK发布之后就把我以前开发的,可支持GPIO、I2C、SPI测试的模拟器同步升级为3.0版,以便早点支持VS2008(Micro Framework v2.x仅支持VS2005,Micro Framework v3.0仅支持VS2008)。不过前段时间太忙了,现在趁着年假,花了一两天的工夫,终于达成了心愿。

新的模拟器相对于以前的模拟器有了两部分改变,下面详细说一下:

一、由于Micro Framework v3.0 SDK已经含有触摸屏组件,所以新模拟器中去掉了以前的SPI通道的鼠标模块,添加了最新的触摸屏支持。


 
 
  1. this.lcdDisplay.TouchPort = (TouchGpioPort)_emulator.GpioPorts[TouchGpioPort.DefaultTouchPin];  
  2.  
  3. protected override void OnMouseDown(MouseEventArgs e)  
  4.  
  5.     {  
  6.  
  7.         base.OnMouseDown(e);  
  8.  
  9.         flags = TouchSampleValidFlag | TouchSampleDownFlag;  
  10.  
  11.         _touchPort.WriteTouchData(flags, e.X, e.Y);  
  12.  
  13.     }  
  14.  
  15.     protected override void OnMouseUp(MouseEventArgs e)  
  16.  
  17.     {  
  18.  
  19.         base.OnMouseUp(e);  
  20.  
  21.         flags = TouchSampleValidFlag | TouchSamplePreviousDownFlag;  
  22.  
  23.         _touchPort.WriteTouchData(flags, e.X, e.Y);  
  24.  
  25.     }  
  26.  
  27.     protected override void OnMouseMove(MouseEventArgs e)  
  28.  
  29.     {  
  30.  
  31.         base.OnMouseMove(e);  
  32.  
  33.         if ((flags & (TouchSampleValidFlag | TouchSampleDownFlag)) == (TouchSampleValidFlag | TouchSampleDownFlag))  
  34.  
  35.         {  
  36.  
  37.             flags = TouchSampleValidFlag | TouchSamplePreviousDownFlag | TouchSampleDownFlag;  
  38.  
  39.             if ((e.X >= 0) && (e.Y >= 0))  
  40.  
  41.             {  
  42.  
  43.                 _touchPort.WriteTouchData(flags, e.X, e.Y);  
  44.  
  45.             }  
  46.  
  47.         }  
  48.  
  49. }  
  50.  

二、3.0 SDK已经支持文件系统,所以新模拟器添加了这部分功能支持,不过新功能有些讨巧,不像虚拟机能支持真正的磁盘镜像文件,而是引用了windows自身文件操作API,把windows的文件操作封装到模拟器中。


 
 
  1. List<EmulatorRemovableBlockStorageDevice> bsdList = new List<EmulatorRemovableBlockStorageDevice>();  
  2.  
  3.     removableBSDs = new Dictionary<string, EmulatorRemovableBlockStorageDevice>();  
  4.  
  5.    
  6.  
  7.     foreach (BlockStorageDevice bsd in _emulator.BlockStorageDevices)  
  8.  
  9.     {  
  10.  
  11.         if (bsd is EmulatorRemovableBlockStorageDevice)  
  12.  
  13.         {  
  14.  
  15.             bsdList.Add((EmulatorRemovableBlockStorageDevice)bsd);  
  16.  
  17.         }  
  18.  
  19.     }  
  20.  
  21.     if (bsdList.Count > 0)  
  22.  
  23.     {  
  24.  
  25.         insertEjectMenuItem.Visible = true;  
  26.  
  27.         foreach (EmulatorRemovableBlockStorageDevice removableBSD in bsdList)  
  28.  
  29.         {  
  30.  
  31.             ToolStripItem item = new ToolStripMenuItem(GetItemText(removableBSD), null, InsertEjectOnClick);  
  32.  
  33.             item.Name = removableBSD.Namespace;  
  34.  
  35.             insertEjectMenuItem.DropDownItems.Add(item);  
  36.  
  37.             removableBSDs.Add(removableBSD.Namespace, removableBSD);  
  38.  
  39.         }  
  40.  
  41.  }  
  42.  
  43.    
  44.  

  

 

模拟器V3.0

 

 

 

 

 

 

新模拟器改进了注册机制,下载后解压到任一目录,直接运行YFMFEmulator.exe文件即可完成注册。

至于模拟器如何使用,请参见我以前写的文章:

1、[MSDN Webcast]Windows Embedded从入门到精通系列课程(18):用模拟器零成本体验MF开发

2、.Net Micro Framework研究—模拟器改造

3、用模拟器零成本体验MF开发

 

模拟器V3.0下载链接:http://www.sky-walker.com.cn/yefan/YFMFEmulator.rar

 

 

关于Micro Framework 3.0 SDK的几点问题

1、下载链接:http://www.microsoft.com/downloads/details.aspx?FamilyId=9356ED6F-F1F0-43EF-B21A-4644DD089B4A&displaylang=en

2、几个bug

其实这几个bug在安装SDK3.0后的Micro Framework SDK Release Notes.txt中已经有了说明。

主要有如下两个问题:

(1)       非英文版VS2008安装SDK3.0后,在新建项目中无micro Framework选项

解决办法:

If you are running a non-English version of Visual Studio, you will need to

   move the Micro Framework project and item template files to a new location.

 

   Assuming the default installation directory, you would need to copy all files

   from

   \Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\

   CSharp\Micro Framework\1033 to

   \Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\

   CSharp\Micro Framework

 

   and all MicroFramework* files from 

   \Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\

   1033 to

   \Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\

 

     注意:进行以上操作以后,一定要运行如下指令:X:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe /setup

 

(2)       V2.x的应用程序升级为V3.0时失败

解决办法:

If you have existing projects written for previous versions of the Micro

Framework, follow these steps to update them to version 3.

 

1) Open the .csproj file for each of your projects and update the value of the

   TargetFrameworkVersion from

   <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> to

   <TargetFrameworkVersion>v3.0</TargetFrameworkVersion>

2) Open the project (or solution) in Visual Studio 2008 and complete the

   Conversion Wizard.

3) Review the "New behavior" section below and update code as needed.








本文转自yefanqiu51CTO博客,原文链接:http://blog.51cto.com/yfsoft/321260,如需转载请自行联系原作者

相关实践学习
块存储快速入门
块存储是阿里云为云服务器ECS提供的块设备产品。通过体验挂载数据盘、分区格式化数据盘(Linux)、创建云盘快照、重新初始化数据盘、使用快照回滚云盘和卸载数据盘等功能,带您快速入门块存储。
相关文章
|
4月前
|
SQL Java 关系型数据库
MacBook Pro开发环境搭建
MacBook Pro开发环境搭建
41 2
|
Oracle Java 关系型数据库
珠联壁合地设天造|M1 Mac os(Apple Silicon)基于vscode(arm64)配置搭建Java开发环境(集成web框架Springboot)
也许有人从未听说过Python,但是不会有人没听说过Java,它作为一个拥有悠久历史的老牌编程语言,常年雄踞TIOBE编程语言榜首,其顶尖的霸主地位不可撼动,而M1 mac业已发布了一段时间,作为跨时代的顶级芯片系统,这两大巨头能否珠联璧合,让开发者们猛虎添翼、更上层楼?本次我们尝试在M1 mac系统中搭建Java开发环境,并且集成目前Web开发领域红的发紫的Springboot框架,另外,谁说玩儿Java就必须得用Eclipse或者IntelliJ IDEA?我们就骄傲地使用Vscode。
珠联壁合地设天造|M1 Mac os(Apple Silicon)基于vscode(arm64)配置搭建Java开发环境(集成web框架Springboot)
|
Web App开发 JavaScript 前端开发
RISC-V生态开发套件解析(八):Waft模拟器和dep_tools网页版使用教程
随着RISC-V生态的蓬勃发展,相关开源开发套件也开始逐渐丰富。为了帮助开发者快速了解、玩转新推出的RISC-V开发套件,OCC推出RISC-V生态开发套件解析系列内容,详细讲解生态开发套件的功能特点与上手教程。
595 0
|
开发工具 iOS开发
iOS中制作可复用的框架Framework(一)
iOS中制作可复用的框架Framework
153 0
iOS中制作可复用的框架Framework(一)
|
iOS开发
iOS中制作可复用的框架Framework(二)
iOS中制作可复用的框架Framework
147 0
iOS中制作可复用的框架Framework(二)
|
iOS开发
iOS中制作可复用的框架Framework
在iOS开发中,我们时常会使用一些我们封装好的管理类,框架类,方法类等,我们在实现这些文件时,可能还会依赖一些第三方库或者系统库。如果每次我们复用这些代码时,都要将关联的这些东西进行导入,甚至还要进行arc和mrc的编译设置,会浪费我们很大的精力。除此之外,如果项目需要多人合作,你可能也并不希望你的源代码暴漏在所有人的面前,这个时候,我们就可以使用静态库或者动态库的方式来对我们的代码进行包装,便于复用。
174 0
|
IDE 前端开发 Devops
戒掉PC,免pc开发,cloud ide and debug设想
本文关键字:分布式IDE,cloudide,远程编码,远程调试,jupyter with visual debugger support
1007 0
戒掉PC,免pc开发,cloud ide and debug设想
.Net Micro Framework研究—模拟器改造
由于Digi提供的开发板没有LCD显示屏,所以有关绘图方面的操作,只好在模拟器上进行了。
571 0
Micro Framework Interop功能实现
目前.Net Micro Framework仅支持C#语言开发应用程序,由于是托管代码,垃圾回收随时都可能发生,其实时性很难得到保证,所以有windows开发经验的用户就会有这种想法:.Net Micro Framework能否支持非托管代码,也就是所谓的P/Invoke平台调用功能
871 0
.Net Micro Framework研究—带I2C总线的模拟器
I2C以前没有怎么接触过,所以做它的模拟功能,只能靠着感觉走,有不妥之处,还望方家指正。做出了spi相关的模拟功能,做I2C相对也就不难了,只不过用户操作I2C总线读写数据的时候要稍微麻烦一点。
660 0