针对Micro Framework 3.0模拟器进行改造方法(浅谈)
2012-12-12 16:49
281 查看
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通道的鼠标模块,添加了最新的触摸屏支持。
this.lcdDisplay.TouchPort = (TouchGpioPort)_emulator.GpioPorts[TouchGpioPort.DefaultTouchPin];
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
flags = TouchSampleValidFlag | TouchSampleDownFlag;
_touchPort.WriteTouchData(flags, e.X, e.Y);
}
protected override void OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp(e);
flags = TouchSampleValidFlag | TouchSamplePreviousDownFlag;
_touchPort.WriteTouchData(flags, e.X, e.Y);
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if ((flags & (TouchSampleValidFlag | TouchSampleDownFlag)) == (TouchSampleValidFlag | TouchSampleDownFlag))
{
flags = TouchSampleValidFlag | TouchSamplePreviousDownFlag | TouchSampleDownFlag;
if ((e.X >= 0) && (e.Y >= 0))
{
_touchPort.WriteTouchData(flags, e.X, e.Y);
}
}
}
二、3.0 SDK已经支持文件系统,所以新模拟器添加了这部分功能支持,不过新功能有些讨巧,不像虚拟机能支持真正的磁盘镜像文件,而是引用了windows自身文件操作API,把windows的文件操作封装到模拟器中。
List bsdList = new List();
removableBSDs = new Dictionary();
foreach (BlockStorageDevice bsd in _emulator.BlockStorageDevices)
{
if (bsd is EmulatorRemovableBlockStorageDevice)
{
bsdList.Add((EmulatorRemovableBlockStorageDevice)bsd);
}
}
if (bsdList.Count > 0)
{
insertEjectMenuItem.Visible = true;
foreach (EmulatorRemovableBlockStorageDevice removableBSD in bsdList)
{
ToolStripItem item = new ToolStripMenuItem(GetItemText(removableBSD), null, InsertEjectOnClick);
item.Name = removableBSD.Namespace;
insertEjectMenuItem.DropDownItems.Add(item);
removableBSDs.Add(removableBSD.Namespace, removableBSD);
}
}
模拟器V3.0
新模拟器改进了注册机制,下载后解压到任一目录,直接运行YFMFEmulator.exe文件即可完成注册。
本文出自 “程序快乐天使” 博客,谢绝转载!
新的模拟器相对于以前的模拟器有了两部分改变,下面详细说一下:
一、由于Micro Framework v3.0 SDK已经含有触摸屏组件,所以新模拟器中去掉了以前的SPI通道的鼠标模块,添加了最新的触摸屏支持。
this.lcdDisplay.TouchPort = (TouchGpioPort)_emulator.GpioPorts[TouchGpioPort.DefaultTouchPin];
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
flags = TouchSampleValidFlag | TouchSampleDownFlag;
_touchPort.WriteTouchData(flags, e.X, e.Y);
}
protected override void OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp(e);
flags = TouchSampleValidFlag | TouchSamplePreviousDownFlag;
_touchPort.WriteTouchData(flags, e.X, e.Y);
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if ((flags & (TouchSampleValidFlag | TouchSampleDownFlag)) == (TouchSampleValidFlag | TouchSampleDownFlag))
{
flags = TouchSampleValidFlag | TouchSamplePreviousDownFlag | TouchSampleDownFlag;
if ((e.X >= 0) && (e.Y >= 0))
{
_touchPort.WriteTouchData(flags, e.X, e.Y);
}
}
}
二、3.0 SDK已经支持文件系统,所以新模拟器添加了这部分功能支持,不过新功能有些讨巧,不像虚拟机能支持真正的磁盘镜像文件,而是引用了windows自身文件操作API,把windows的文件操作封装到模拟器中。
List bsdList = new List();
removableBSDs = new Dictionary();
foreach (BlockStorageDevice bsd in _emulator.BlockStorageDevices)
{
if (bsd is EmulatorRemovableBlockStorageDevice)
{
bsdList.Add((EmulatorRemovableBlockStorageDevice)bsd);
}
}
if (bsdList.Count > 0)
{
insertEjectMenuItem.Visible = true;
foreach (EmulatorRemovableBlockStorageDevice removableBSD in bsdList)
{
ToolStripItem item = new ToolStripMenuItem(GetItemText(removableBSD), null, InsertEjectOnClick);
item.Name = removableBSD.Namespace;
insertEjectMenuItem.DropDownItems.Add(item);
removableBSDs.Add(removableBSD.Namespace, removableBSD);
}
}
模拟器V3.0
新模拟器改进了注册机制,下载后解压到任一目录,直接运行YFMFEmulator.exe文件即可完成注册。
本文出自 “程序快乐天使” 博客,谢绝转载!
相关文章推荐
- Micro Framework 3.0模拟器改造
- 使用Carbide进行调试时免除重新启动模拟器的一种方法(转)
- Java 针对文件与文件夹进行压缩的方法
- [ActionScript 3.0] 对数组中的元素进行排序Array.sort()的方法
- 一个hello程序的android内核模块编译方法及在模拟器中进行测试结论
- zTree插件和layer弹出层结合进行添加,删除,修改操作时,针对出现调用父父页面方法出现问题,解决方法
- 浅谈使用spring security中的BCryptPasswordEncoder方法对密码进行加密与密码匹配
- [FWD]借鉴丰田方法对大型软件组织进行敏捷改造(上)
- 浅谈android通过修改framework-res.apk进行美化的方法
- 浅谈利用numpy对矩阵进行归一化处理的方法
- Xcode -- Xcode5.1使用低版本模拟器进行开发调试的方法
- 扩展Jquery的resize方法(原生的resize只针对window,因项目需要扩展了此方法,目前只在DIV上使用过,后续如果修改代码会对此代码进行更新)
- iOS 使用AFNetworking 3.0库进行网络请求时,取消单个队列和全部队列的方法(取消网络请求)
- 通过Python编写模拟器对方案进行测试和分析的方法_Prj001
- Micro Framework 3.0模拟器改造
- 借鉴丰田方法对大型软件组织进行敏捷改造(上)
- 针对dynamic类型进行单元测试的方法(例如ASP.NET MVC中的JsonResult)
- Ubuntu 下针对不同扩展名的安装包进行安装的方法
- 利用Matrix对图片进行变换以及实现动画方法浅谈
- 借鉴丰田方法对大型软件组织进行敏捷改造 (上)