http://www.cnblogs.com/yefanqiu/archive/2008/07/16/1243978.html
目前针对.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文件,运行该文件,并选择打开模拟器文件,完成注册。
<?XML:NAMESPACE PREFIX = O />
3、模拟器配置
新建一个MF工程,打开该工程的属性页,在Micro Framework选项中,设定我们扩展的模拟器。
4、启动后的模拟器
二、应用开发示例
1、GPIO测试
模拟器中相关GPIO的PIN值如下:
I0~I7 :Pin=10~17
Q9~Q7:Pin=20~27
完整的测试代码如下:
usingSystem;
usingMicrosoft.SPOT;
usingMicrosoft.SPOT.Hardware;
usingSystem.Threading;
namespaceGPIOTest
{
publicclassProgram
{
staticOutputPort[]output=newOutputPort[8];
staticInputPort[]input=newInputPort[8];
publicstaticvoidMain()
{
//叶帆模拟器GPIO的pin定义
Cpu.Pin[]pin_I=newCpu.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};
Cpu.Pin[]pin_Q=newCpu.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};
//GPIO
for(inti=0;i<8;i++)
{
input[i]=newInputPort(pin_I[i],false,Port.ResistorMode.PullDown);
output[i]=newOutputPort(pin_Q[i],false);
}
intIndex=0;
while(true)
{
GPIOTest(refIndex);
Thread.Sleep(200);
}
}
//GPIO测试
publicstaticvoidGPIOTest(refintIndex)
{
output[Index].Write(!output[Index].Read());
if(++Index>7)Index=0;
stringstrPace="";
Debug.Print("Input:I0I1I2I3I4I5I6I7");
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"));
Debug.Print("Output:Q0Q1Q2Q3Q4Q5Q6Q7");
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"));
}
}
}
测试结果:
2、SPI测试
模拟器中相关SPI的PIN值如下:
PIN=30
完整的测试代码如下:
usingSystem;
usingMicrosoft.SPOT;
usingMicrosoft.SPOT.Hardware;
usingSystem.Threading;
namespaceSPITest
{
publicclassProgram
{
staticSPI_spi;
staticintQAW=0;
publicstaticvoidMain()
{
//SPI的pin定义
_spi=newSPI(newSPI.Configuration((Cpu.Pin)30,true,0,0,false,false,4000,SPI.SPI_module.SPI1));
while(true)
{
SPITest();
Thread.Sleep(200);
}
}
//读写SPI数据
privatestaticInt16SPIReadWrite(Int16value)
{
byte[]bout=newbyte[2];
byte[]bin=newbyte[2];
bout[0]=(byte)(value>>8);
bout[1]=(byte)(value&0xff);
_spi.WriteRead(bout,bin);
Int16aw0=(Int16)((bin[0]<<8)+bin[1]);
returnaw0;
}
//SPI测试
publicstaticvoidSPITest()
{
if(QAW++>100)QAW=0;
Debug.Print("SPI:DI="+SPIReadWrite((Int16)QAW).ToString()+"DO="+QAW.ToString());
}
}
}
测试结果:
3、I2C测试
模拟器中相关I2C的地址如下:
地址=100
完整的测试代码如下:
usingSystem;
usingMicrosoft.SPOT;
usingMicrosoft.SPOT.Hardware;
usingSystem.Threading;
namespaceI2CTest
{
publicclassProgram
{
//I2C定义模拟器I2C地址为100时钟速度不要设置太小否则会有问题
staticI2CDeviceI2CBus=newI2CDevice(newI2CDevice.Configuration(100,200));
staticintIntI2CNum=0;
publicstaticvoidMain()
{
while(true)
{
I2CTest();
Thread.Sleep(200);
}
}
//I2C测试
publicstaticvoidI2CTest()
{
if(++IntI2CNum>10)IntI2CNum=0;
//I2C读写
byte[]bytRData=newbyte[8];
byte[]bytWData=newbyte[3];
bytWData[0]=(byte)IntI2CNum;
bytWData[1]=(byte)(IntI2CNum*2);
bytWData[2]=(byte)(IntI2CNum*3);
I2CDevice.I2CTransaction[]i2c=newI2CDevice.I2CTransaction[2];
i2c[0]=I2CBus.CreateReadTransaction(bytRData);
i2c[1]=I2CBus.CreateWriteTransaction(bytWData);
I2CBus.Execute(i2c,100);//执行
stringstrPace="";
stringstrInfo="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();
Debug.Print(strInfo);
}
}
}
测试结果:
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/
• 叶帆工作室(CSDN)
http://blog.csdn.net/yefanqiu/
• 叶帆工作室(博客园)
http://www.cnblogs.com/yefanqiu
分享到:
相关推荐
目前针对.NET Micro Framework无论是开发GPIO、SPI、I2C,还是串口通信都离丌开硬件,前段时间我扩展了宏方的MF模拟器,可以丌用硬件,零成本的体验上述技术开发。
源程序是 http://bansky.net/blog/2008/03/jpeg-camera-and-micro-framework/<br>原作者是在 Tahoe development board 实现的,这个不需要使用硬件,直接就可以通过模拟器抓取图像
Nokia SDK 开发模拟器 Nokia SDK 开发模拟器 Nokia SDK 开发模拟器
genymotion模拟器,Android开发,安卓玩游戏,多平台,启动快
HBuilder X 中使用模拟器进行App开发说明,HBuilder X 中使用模拟器进行App开发说明.docx
用C#开发的FC模拟器用C#开发的FC模拟器用C#开发的FC模拟器
夜神模拟器,开发人员测试版。 夜神安卓模拟器是目前唯一一款采用类手机界面视觉设计的PC端桌面软件,采用世界领先的内核技术(基于Android4.4.2版本内核针在电脑上运行深度开发),具有同类模拟器中最快的运行速度...
Android开发模拟器加速 Android开发模拟器加速 Android开发模拟器加速 Android开发模拟器加速 Android开发模拟器加速
用于安卓的开发哈哈哈哈哈哈哈哈hhahhhhhhhhh
怎样写模拟器 简介 阶段 读入 运行 获得 ROM 的操作码 执行操作码 执行中断 读写内存 做循环任务 视频模拟 声音模拟 优化 课程收获 我的模拟器 参考文献
NDS模拟器NDS模拟器NDS模拟器NDS模拟器NDS模拟器NDS模拟器NDS模拟器NDS模拟器NDS模拟器NDS模拟器
!教你从零开始使用小凡模拟器!教你从零开始使用小凡模拟器
本节课的主要内容有: 1.如何在Eclipse中创建一个模拟器 2.修改配置模拟器 3.如何在模拟器中安装Android软件
非常好用的手机模拟器,我在公司的时候,我们公司就用这种模拟器,操作很简洁,方便使用。
android移动开发本科期末大作业营销号模拟器源码。安卓移动开发课程的一个期末作业,做的是一个营销号模拟器。Activity其实还是比较抽象的,不过用了多了以后就慢慢能理解了。简单来说activity“活动”,是在Android...
JAVA模拟器JAVA模拟器JAVA模拟器JAVA模拟器JAVA模拟器JAVA模拟器JAVA模拟器JAVA模拟器JAVA模拟器JAVA模拟器JAVA模拟器JAVA模拟器JAVA模拟器JAVA模拟器
ocp模拟器ocp模拟器ocp模拟器ocp模拟器
栈模拟器,GUI开发的模拟器