.Net Micro Framework研究—模拟器直接运行MF程序

简介: 既然VS2005能启动运行,我想我们也可以,唯一不同的是模拟器加载的参数不同而已

上次用MF做了一个Windows桌面,感觉还不错,所以就想做一做如俄罗斯方块、贪吃蛇之类的小游戏,不过每次用模拟器运行MF程序,都需要打开VS2005的源码程序,然后单击启动。VS2005是个庞大的家伙,启动它至少要半分钟,所以很是麻烦。模拟器有没有可能直接运行MF程序啊(或者说不需安装VS2005及MF开发包,在其它windows上仅借助模拟器就可以运行)?就像一些游戏模拟器一样直接加载相应的文件就可以使游戏运行起来。

既然VS2005能启动运行,我想我们也可以,唯一不同的是模拟器加载的参数不同而已。
这是VS2005启动模拟器时候的命令行参数:

CommandLine = "C:/Program Files/Microsoft .NET Micro Framework/v2.0.3036/Tools/Microsoft.SPOT.Emulator.Sample.SampleEmulator.exe" "/waitfordebugger" "/load:C:/Program Files/Microsoft .NET Micro Framework/v2.0.3036/Assemblies/Microsoft.SPOT.TinyCore.pe" "/load:C:/Program Files/Microsoft .NET Micro Framework/v2.0.3036/Assemblies/Microsoft.SPOT.Hardware.pe" "/load:D:/SELF/MF/YFWinMF/YFWinMF/bin/Release/YFWinMF.pe" "/load:C:/Program Files/Microsoft .NET Micro Framework/v2.0.3036/Assemblies/Microsoft.SPOT.Graphics.pe" "/load:DC

根据这个信息,我做了一个批处理文件(MF.bat),内容如下:

Microsoft.SPOT.Emulator.Sample.SampleEmulator.exe "/load:C:/Program Files/Microsoft .NET Micro Framework/v2.0.3036/Assemblies/Microsoft.SPOT.TinyCore.pe" "/load:C:/Program Files/Microsoft .NET Micro Framework/v2.0.3036/Assemblies/Microsoft.SPOT.Hardware.pe" "/load:C:/Program Files/Microsoft .NET Micro Framework/v2.0.3036/Assemblies/Microsoft.SPOT.Graphics.pe" "/load:YFWinMF.exe"

注意,我们去掉了"/waitfordebugger"参数,此外最后一个"/load:DC参数我也直接去掉了。此外YFWinMF.exe程序就是VS2005编译后的MF的可执行文件。
运行该批处理试一下,哈!模拟器可以单独启动并且开始运行了YFWinMF.exe程序了。下一步我们要对模拟器进行移植(需要提醒的是,由于模拟器也是用.Net 2.0开发的,所以windows试验平台至少要安装.Net 2.0)。
经过测试发现,模拟器需要如下文件方可移植成功。
image.png

此外还需要这些核心文件:
image.png

很让人不解的是,模拟器核心库必须要求这些文件在“C:/Program Files/Microsoft .NET Micro Framework/v2.0.3036/Assemblies/”目录,也就是说我上面的批处理文件的路径必须与此一样(也可以不一样,不过C:/Program Files/Microsoft .NET Micro Framework/v2.0.3036/Assemblies/目录下也必须存在这些文件),否则就提示**.pe文件不存在。为了便于移植,我又编写了一个批处理文件(init.bat),可以方便地创建C:/Program Files/Microsoft .NET Micro Framework/v2.0.3036/Assemblies/目录及下面的文件,内容如下:

md "C:/Program Files/Microsoft .NET Micro Framework/v2.0.3036/Assemblies"
copy *.* "C:/Program Files/Microsoft .NET Micro Framework/v2.0.3036/Assemblies"

MF用户程序有三个文件组成,YFWinMF.exe YFWinMF.exe.manifest YFWinMF.pe。
好了,我们准备工作就绪,把相关文件拷贝到其它机器(windows 2000以上,安装了.Net 2.0),先执行我的Init.bat批处理文件,建立Assemblies文件,然后再执行MF.bat批处理文件。
OK,成功!
模拟器的功能还可以进一步扩展,如修改LCD的分辨率(颜色数目前仅支持16位,设置其它值会有问题),这样我们的模拟器就像PPC一样,也可以横竖屏切换了(这个功能我后续会做),下图就是修改LCD分辨率后运行的效果图:
 image.png

此外在绘图时,还有一点需要注意,MF的窗体类没有Refresh函数(用UpdateLayout命令不好使),这样在配合按键时会显得很迟钝(原先我还以为是模拟器的性能问题呢),经过试验,我自定义了一个Refresh函数,代码如下:

      //窗体刷新
      private void Refresh()
      {
         this.Left = this.Left;
          //this.UpdateLayout();  
}

修改后,那响应真叫一个棒。OK,以后的工作有的做了,各种基于MF的小游戏和小应用就应该源源不断的出来了。 

相关文章
|
1月前
|
XML 存储 安全
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
62 0
|
2月前
|
Ubuntu 持续交付 API
如何使用 dotnet pack 打包 .NET 跨平台程序集?
`dotnet pack` 是 .NET Core 的 NuGet 包打包工具,用于将代码打包成 NuGet 包。通过命令 `dotnet pack` 可生成 `.nupkg` 文件。使用 `--include-symbols` 和 `--include-source` 选项可分别创建包含调试符号和源文件的包。默认情况下,`dotnet pack` 会先构建项目,可通过 `--no-build` 跳过构建。此外,还可以使用 `--output` 指定输出目录、`-c` 设置配置等。示例展示了创建类库项目并打包的过程。更多详情及命令选项,请参考官方文档。
197 11
|
2月前
|
存储 运维
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
|
2月前
|
自然语言处理 C# 图形学
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
|
4月前
|
Linux C# iOS开发
如何用 WinDbg 调试Linux上的 .NET程序
【7月更文挑战第13天】 1. `dotnet-dump`: Collects process dumps with `dotnet-dump collect -p <process_id>`. 2. `lldb`: Debugs Mono runtime apps on macOS/Linux. 3. **Visual Studio Code**: Remotely debugs .NET via the C# extension. 4. **JetBrains Rider**: Supports remote debugging of .NET on Linux.
|
3月前
分享一份 .NET Core 简单的自带日志系统配置,平时做一些测试或个人代码研究,用它就可以了
分享一份 .NET Core 简单的自带日志系统配置,平时做一些测试或个人代码研究,用它就可以了
|
3月前
|
开发框架 NoSQL .NET
使用 Asp.net core webapi 集成配置系统,提高程序的灵活和可维护性
使用 Asp.net core webapi 集成配置系统,提高程序的灵活和可维护性
|
3月前
|
Web App开发 数据采集 开发框架
在.NET程序中整合微软的Playwright,使用 Playwright 的最佳实践和技巧
在.NET程序中整合微软的Playwright,使用 Playwright 的最佳实践和技巧
|
5月前
|
机器学习/深度学习 JSON 测试技术
CNN依旧能战:nnU-Net团队新研究揭示医学图像分割的验证误区,设定先进的验证标准与基线模型
在3D医学图像分割领域,尽管出现了多种新架构和方法,但大多未能超越2018年nnU-Net基准。研究发现,许多新方法的优越性未经严格验证,揭示了验证方法的不严谨性。作者通过系统基准测试评估了CNN、Transformer和Mamba等方法,强调了配置和硬件资源的重要性,并更新了nnU-Net基线以适应不同条件。论文呼吁加强科学验证,以确保真实性能提升。通过nnU-Net的变体和新方法的比较,显示经典CNN方法在某些情况下仍优于理论上的先进方法。研究提供了新的标准化基线模型,以促进更严谨的性能评估。
157 0
|
5月前
|
存储 安全 C#
技术心得记录:强命名的延迟与关联在.net程序集保护中的作用及其逆向方法
技术心得记录:强命名的延迟与关联在.net程序集保护中的作用及其逆向方法

热门文章

最新文章

下一篇
无影云桌面