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

简介:

目前针对.Net Micro Framework无论是开发GPIO、SPI、I2C,还是串口通信都离不开硬件,前段时间我扩展了官方的MF模拟器,可以不用硬件,零成本的体验上述技术开发。

要体验MF开发,必须具备如下条件:

Ø  PC机上已安装VS2005;

Ø  从http://msdn.microsoft.com/zh-cn/embedded/bb267253(en-us).aspx 下载并安装MF 2.5 SDK;

Ø  从http://www.sky-walker.com.cn/MFEmulator_SDK.rar下载模拟器及PPT文档;

Ø  根据说明,在本机上注册该模拟器;

 

一、模拟器的使用

       1、模拟器下载

http://www.sky-walker.com.cn/MFEmulator_SDK.rar下载模拟器。

2、模拟器注册

压缩包“YFMF模拟器”目录中有一个YFEmulatorReg.exe文件,运行该文件,并选择打开模拟器文件,完成注册。

 

 

 


3、模拟器配置

新建一个MF工程,打开该工程的属性页,在Micro Framework选项中,设定我们扩展的模拟器。

 


 

 

4、启动后的模拟器

 

 

 

 


二、应用开发示例

   1、GPIO测试

模拟器中相关GPIO的PIN值如下:

I0~I7    :Pin=10~17

Q9~Q7  :Pin=20~27

完整的测试代码如下:

 

 
  1. using System;  
  2.  
  3. using Microsoft.SPOT;  
  4.  
  5. using Microsoft.SPOT.Hardware;  
  6.  
  7. using System.Threading;   
  8.  
  9.    
  10.  
  11. namespace GPIOTest  
  12.  
  13. {  
  14.  
  15.     public class Program  
  16.  
  17.     {  
  18.  
  19.         static  OutputPort[] output = new OutputPort[8];  
  20.  
  21.         static InputPort[] input = new InputPort[8];  
  22.  
  23.    
  24.  
  25.         public static void Main()  
  26.  
  27.         {  
  28.  
  29.             //叶帆模拟器GPIO的pin定义  
  30.  
  31.             Cpu.Pin[] pin_I = new Cpu.Pin[8] { (Cpu.Pin)10, (Cpu.Pin)11, (Cpu.Pin)12, (Cpu.Pin)13, (Cpu.Pin)14, (Cpu.Pin)15, (Cpu.Pin)16, (Cpu.Pin)17 };  
  32.  
  33.             Cpu.Pin[] pin_Q = new Cpu.Pin[8] { (Cpu.Pin)20, (Cpu.Pin)21, (Cpu.Pin)22, (Cpu.Pin)23, (Cpu.Pin)24, (Cpu.Pin)25, (Cpu.Pin)26, (Cpu.Pin)27 };  
  34.  
  35.    
  36.  
  37.             //GPIO  
  38.  
  39.             for (int i = 0; i < 8; i++)  
  40.  
  41.             {  
  42.  
  43.                 input[i] = new InputPort(pin_I[i], false, Port.ResistorMode.PullDown);  
  44.  
  45.                 output[i] = new OutputPort(pin_Q[i], false);  
  46.  
  47.             }  
  48.  
  49.    
  50.  
  51.             int Index = 0;  
  52.  
  53.             while (true)  
  54.  
  55.             {  
  56.  
  57.                 GPIOTest(ref Index);  
  58.  
  59.                 Thread.Sleep(200);  
  60.  
  61.             }  
  62.  
  63.         }  
  64.  
  65.    
  66.  
  67.         //GPIO测试  
  68.  
  69.         public static void GPIOTest(ref int Index)  
  70.  
  71.         {  
  72.  
  73.             output[Index].Write(!output[Index].Read());  
  74.  
  75.             if (++Index > 7) Index = 0;  
  76.  
  77.    
  78.  
  79.             string strPace = "   ";  
  80.  
  81.             Debug.Print("Input : I0  I1  I2  I3  I4  I5  I6  I7");  
  82.  
  83.             Debug.Print("        "+(input[0].Read() ? "1" : "0") + strPace + (input[1].Read() ? "1" : "0") + strPace + (input[2].Read() ? "1" : "0") + strPace + (input[3].Read() ? "1" : "0") + strPace + (input[4].Read() ? "1" : "0") + strPace + (input[5].Read() ? "1" : "0") + strPace + (input[6].Read() ? "1" : "0") + strPace + (input[7].Read() ? "1" : "0"));  
  84.  
  85.    
  86.  
  87.             Debug.Print("Output: Q0  Q1  Q2  Q3  Q4  Q5  Q6  Q7");  
  88.  
  89.             Debug.Print("        " + (output[0].Read() ? "1" : "0") + strPace + (output[1].Read() ? "1" : "0") + strPace + (output[2].Read() ? "1" : "0") + strPace + (output[3].Read() ? "1" : "0") + strPace + (output[4].Read() ? "1" : "0") + strPace + (output[5].Read() ? "1" : "0") + strPace + (output[6].Read() ? "1" : "0") + strPace + (output[7].Read() ? "1" : "0"));  
  90.  
  91.         }  
  92.  
  93.     }  
  94.  
  95. }  
  96.  

 


 

测试结果:

 

 

 


  2、SPI测试

模拟器中相关SPI的PIN值如下:

PIN=30

完整的测试代码如下:

 

 
  1. using System;  
  2.  
  3. using Microsoft.SPOT;  
  4.  
  5. using Microsoft.SPOT.Hardware;  
  6.  
  7. using System.Threading;  
  8.  
  9.    
  10.  
  11. namespace SPITest  
  12.  
  13. {  
  14.  
  15.     public class Program  
  16.  
  17.     {  
  18.  
  19.         static SPI _spi;  
  20.  
  21.         static int QAW = 0;  
  22.  
  23.         public static void Main()  
  24.  
  25.         {  
  26.  
  27.             //SPI的pin定义  
  28.  
  29.             _spi = new SPI(new SPI.Configuration((Cpu.Pin)30, true, 0, 0, falsefalse, 4000, SPI.SPI_module.SPI1));  
  30.  
  31.    
  32.  
  33.             while (true)  
  34.  
  35.             {  
  36.  
  37.                 SPITest();  
  38.  
  39.                 Thread.Sleep(200);  
  40.  
  41.             }  
  42.  
  43.         }  
  44.  
  45.    
  46.  
  47.         //读写SPI数据  
  48.  
  49.         private static Int16 SPIReadWrite(Int16 value)  
  50.  
  51.         {  
  52.  
  53.             byte[] bout = new byte[2];  
  54.  
  55.             byte[] bin = new byte[2];  
  56.  
  57.             bout[0] = (byte)(value >> 8);  
  58.  
  59.             bout[1] = (byte)(value & 0xff);  
  60.  
  61.             _spi.WriteRead(bout, bin);  
  62.  
  63.             Int16 aw0 = (Int16)((bin[0] << 8) + bin[1]);  
  64.  
  65.             return aw0;  
  66.  
  67.         }  
  68.  
  69.    
  70.  
  71.         //SPI测试  
  72.  
  73.         public static void SPITest()  
  74.  
  75.         {  
  76.  
  77.             if (QAW++ > 100) QAW = 0;  
  78.  
  79.             Debug.Print("SPI: DI=" + SPIReadWrite((Int16)QAW).ToString() + "   DO=" + QAW.ToString());  
  80.  
  81.         }  
  82.  
  83.     }  
  84.  
  85. }  
  86.  

     测试结果:

    

 

  3、I2C测试

模拟器中相关I2C的地址如下:

地址=100

 

完整的测试代码如下:

 
  1. using System;  
  2.  
  3. using Microsoft.SPOT;  
  4.  
  5. using Microsoft.SPOT.Hardware;  
  6.  
  7. using System.Threading;  
  8.  
  9.    
  10.  
  11. namespace I2CTest  
  12.  
  13. {  
  14.  
  15.     public class Program  
  16.  
  17.     {  
  18.  
  19.         //I2C定义                           模拟器I2C地址为100 时钟速度不要设置太小否则会有问题  
  20.  
  21.         static I2CDevice I2CBus = new I2CDevice(new I2CDevice.Configuration(100, 200));  
  22.  
  23.         static int IntI2CNum = 0;  
  24.  
  25.    
  26.  
  27.         public static void Main()  
  28.  
  29.         {  
  30.  
  31.             while (true)  
  32.  
  33.             {  
  34.  
  35.                 I2CTest();  
  36.  
  37.                 Thread.Sleep(200);  
  38.  
  39.             }  
  40.  
  41.         }  
  42.  
  43.    
  44.  
  45.         //I2C测试  
  46.  
  47.         public static void I2CTest()  
  48.  
  49.         {  
  50.  
  51.             if (++IntI2CNum > 10) IntI2CNum = 0;  
  52.  
  53.             //I2C读写  
  54.  
  55.             byte[] bytRData = new byte[8];  
  56.  
  57.             byte[] bytWData = new byte[3];  
  58.  
  59.             bytWData[0] = (byte)IntI2CNum;  
  60.  
  61.             bytWData[1] = (byte)(IntI2CNum * 2);  
  62.  
  63.             bytWData[2] = (byte)(IntI2CNum * 3);  
  64.  
  65.             I2CDevice.I2CTransaction[] i2c = new I2CDevice.I2CTransaction[2];  
  66.  
  67.             i2c[0] = I2CBus.CreateReadTransaction(bytRData);  
  68.  
  69.             i2c[1] = I2CBus.CreateWriteTransaction(bytWData);  
  70.  
  71.             I2CBus.Execute(i2c, 100);   //执行  
  72.  
  73.    
  74.  
  75.             string strPace = "  ";  
  76.  
  77.             string strInfo = "I2C(Byte0-7):" + bytRData[0].ToString() + strPace + bytRData[1].ToString() + strPace + bytRData[2].ToString() + strPace + bytRData[3].ToString() + strPace + bytRData[4].ToString() + strPace + bytRData[5].ToString() + strPace + bytRData[6].ToString() + strPace + bytRData[7].ToString();  
  78.  
  79.             Debug.Print(strInfo);  
  80.  
  81.         }  
  82.  
  83.    
  84.  
  85.     }  
  86.  
  87. }  
  88.  

  测试结果:

 

 

4、其它测试

串口、鼠标等等测试,暂略,有兴趣的朋友可以自行测试。

 

三、嵌入式开发资源

•    Windows Embedded中文官方网站

     http://www.microsoft.com/china/windows/embedded

•    .NET Micro Framework

     http://msdn2.microsoft.com/zh-cn/embedded/bb267253.aspx

•    Microsoft Robotics Studio

    http://msdn2.microsoft.com/zh-cn/robotics/default.aspx

•    微软嵌入式开发者论坛

     http://forums.microsoft.com/china/default.aspx?ForumGroupID=493&SiteID=15

•    微软中国嵌入式开发者博客

     http://blogs.msdn.com/yunxu/

•    Mike Hall的博客

     http://msdn2.microsoft.com/zh-cn/embedded/ Aa731228.aspx

•    Windows Embedded 专题

      http://we.cnblogs.com/

•    叶帆工作室(51CTO)http://blog.51cto.com/yfsoft/321280

http://yfsoft.blog.51cto.com

•    叶帆工作室(博客园)

      http://www.cnblogs.com/yefanqiu

 








本文转自yefanqiu51CTO博客,原文链接:,如需转载请自行联系原作者

相关文章
|
2月前
|
IDE 小程序 JavaScript
6月开发者日回顾|IDE多功能更新,质量洞察、全息检测工具全新升级
6月开发者日回顾|IDE多功能更新,质量洞察、全息检测工具全新升级
24 0
|
4月前
|
Dart 监控 开发者
跨平台应用的选择:Flutter下电脑局域网控制软件开发
近年来,跨平台应用的需求不断增加,开发人员纷纷寻找适用于多种操作系统的解决方案。本文将探讨在Flutter框架下开发电脑局域网控制软件的过程,并提供一些实用的代码示例。
211 1
|
9月前
|
Android开发 iOS开发 Windows
无影产品动态|iOS & Android客户端6.0.0版本发布,提升触控灵敏度,操作体验更丝滑
无影ios & Android客户端6.0.0版本发布!移动端触控体验更舒适,用户操作更便捷,一起来看看!
676 0
无影产品动态|iOS & Android客户端6.0.0版本发布,提升触控灵敏度,操作体验更丝滑
|
存储 IDE Java
Android程序设计 大作业:基于安卓的校园生活服务系统的设计与实现
Android程序设计 大作业:基于安卓的校园生活服务系统的设计与实现
649 1
Android程序设计 大作业:基于安卓的校园生活服务系统的设计与实现
|
缓存 Serverless 对象存储
iOS开发体验优化方案
随着Flutter等跨端框架的出现,业务开发同学经常需要在Android/IOS上跨端进行业务开发,问题定位等。新的不熟悉的环境的搭建总会遇到各种各样的问题,导致搭建失败,特别是IOS开发环境,是最复杂的,不仅环境搭建繁琐,而且切分支后的打包速度很慢,所以我们设计实现了两个工具,用于优化闲鱼IOS开发体验。
3151 0
iOS开发体验优化方案
|
安全 Java 关系型数据库
产品百科 |零门槛搭建一个 1 对 1 语音聊天 Demo (iOS 版)
您可以阅读本文,快速了解 1 对 1 语音聊天的基本概念和实现方法。
产品百科 |零门槛搭建一个 1 对 1 语音聊天 Demo (iOS 版)
|
缓存 Serverless 对象存储
iOS系统开发提升体验优化方案
随着Flutter等跨端框架的出现,业务开发同学经常需要在Android/IOS上跨端进行业务开发,问题定位等。新的不熟悉的环境的搭建总会遇到各种各样的问题,导致搭建失败,特别是IOS开发环境,是最复杂的,不仅环境搭建繁琐,而且切分支后的打包速度很慢,所以我们设计实现了两个工具,用于优化闲鱼IOS开发体验。
|
弹性计算 IDE 前端开发
软萌小姐姐居家直播,讲解 IDE 插件以及VS Code新版本发布,开发部署提速8倍
软萌小姐姐居家直播——前端新突破,IDE 插件发布 Visual Studio Code 新版本,一键打包部署,开发提速 8 倍
1384 0
软萌小姐姐居家直播,讲解 IDE 插件以及VS Code新版本发布,开发部署提速8倍
|
Kubernetes 小程序 IDE
这款 IDE 插件再次升级,让「小程序云」的开发部署提速 8 倍
今年3月份,在阿里云北京峰会上,阿里巴巴正式发布了“阿里巴巴小程序繁星计划”,截至当前,已经有成千上万的开发者加入这个计划。我们要善于运用工具来最大化地发挥自己的能力,所以,为了更进一步提升小程序开发者的工作效率和开发体验,阿里云提供了免费的小程序开发插件——「Cloud Toolkit」。
1208 0
这款 IDE 插件再次升级,让「小程序云」的开发部署提速 8 倍
|
应用服务中间件 开发者 Dubbo
开发部署提速8倍!这款IDE插件了解一下?
对于开发者而言,提高工作效率大概有 2 种主要方式,第一种方式就是加快自己的工作速度,争取在同一段时间内多码一些代码、多干一些活来实现多产;而聪明的开发者会选择第二种方式,就是通过插件,让一些重复性的、繁琐性的工作被自动化,从而节省出时间来做一些实质性的业务,达到轻松又高效的工作步调。
2763 1