.Net Micro Framework下的IO模拟器研究

开发 后端
本文介绍一阵研究后还真有了成效,在五个键的基础上我又添加了两个键,一个是菜单键),一个是返回键,也就是说我原来做得模拟器上的那两个键终于起作用了。

原打算用MF开发一个类似Windows桌面的程序(因为发现MF居然支持渐进色,可以绘很炫的界面),由于目前的模拟器仅支持5个键,所以在做类Windows开始菜单的时候犯了难,4个方向键和一个OK键,没有一个适合做开始菜单键的。记得Digi的模拟器至少支持9个键,既然他能做,理论上我也可以。一阵研究后还真有了成效,在五个键的基础上我又添加了两个键,一个是菜单键(对应PC键盘可以是Windows键或空格键),一个是返回键(对应PC键盘上的ESC键),也就是说我原来做得模拟器上的那两个键终于起作用了。

添加完这两个键后,突然灵机一动,以前我苦苦不能做的IO模拟功能,应该也可以做了,做Windows界面的心没有了,转为一心研究IO模拟器了,功夫不负有心人,几个小时后便大功能告成了。把以前Digi开发的IO测试程序稍加调整一下就可以试了(需要重新设置一下Pin)。运行界面如下:

以前Digi开发的IO测试程序稍加调整一下

 

  1. publicclassDigiTest  
  2. {  
  3. publicstaticvoidMain()  
  4. {  
  5. //Digi  
  6. //Cpu.Pin[]pin=newCpu.Pin[5]{(Cpu.Pin)0,(Cpu.Pin)1,(Cpu.Pin)2,
    (Cpu.Pin)5,(Cpu.Pin)6};  
  7. OutputPort[]output=newOutputPort[8];  
  8. InputPort[]input=newInputPort[8];  
  9.  
  10. //叶帆模拟器GPIO的pin定义  
  11. 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};  
  12. 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};  
  13. for(inti=0;i<8;i++)  
  14. {  
  15. input[i]=newInputPort(pin_I[i],false,Port.ResistorMode.PullDown);  
  16. output[i]=newOutputPort(pin_Q[i],false);  
  17. }  
  18. intintNum=0;  
  19. while(true)  
  20. {  
  21. output[intNum].Write(!output[intNum].Read());  
  22. Debug.Print(input[0].Read().ToString()+""+input[1].Read().
    ToString()+""+input[2].Read().ToString()+""+input[3].Read().
    ToString()+""+input[4].Read().ToString()+""+input[5].Read().
    ToString()+""+input[6].Read().ToString()+""+input[7].Read().ToString());  
  23. Thread.Sleep(1000);  
  24. if(++intNum>7)intNum=0;  
  25. }  
  26. }  


运行后,效果果然不错,改变输入,则调试信息中出现对应的变化(通过这个也深刻理解了new InputPort(pin_I[i], false, Port.ResistorMode.PullDown)中的上拉和下拉的含义),同时程序中改变输出,则对应的输出灯也在同步亮灭。

细心的读者会发现,我的模拟器可以让InputPort和OutputPort的实例同时运行,原因就是他们的Pin值不同,而Digi的I/O共用了0、1、2、5、6(天知道他们为什么要这样?)。

以后在测试相关的IO应用,不必接上硬件了,直接用模拟器就可以了。不知道模拟器是否支持串口模拟(映射PC机物理串口),以后有时间研究一下。不过我想TCP/IP一定会有问题,一是MF目前的TCP/IP都不完善,第二模拟器目前也不可能支持虚拟网卡(类似PPC模拟器或虚拟机)。

目前模拟器支持8路数字量入,8路数字量出,模拟量以后有机会在加入。
[注:目前微软官方的模拟器仅支持LCD和5个按键功能,其它的都不支持]

【编辑推荐】

  1. .Net Micro Framework中的Shapes命名空间
  2. 浅谈.NET Micro Framework性能优化
  3. .Net Micro Framework线程技术详解
  4. .Net Micro Framework下的IO模拟器研究
  5. 在.Net Micro Framework中访问硬件
责任编辑:佚名 来源: 叶帆工作室
相关推荐

2009-04-11 15:12:24

.Net MicroI2C总线模拟器

2009-07-17 13:56:44

.Net Micro

2009-06-29 10:19:42

.NET Micro性能优化

2009-07-09 09:28:19

.Net Micro

2009-07-16 15:02:33

Shapes命名空间Net Micro F

2010-10-08 17:03:59

.NET Micro Visual Stud

2009-11-17 10:29:39

.NET Micro

2009-07-17 14:51:22

.Net Micro

2009-07-17 13:46:52

.Net Micro

2009-05-11 09:24:53

微软.Net Micro 源代码

2009-07-17 14:38:49

Micro Frame

2009-09-14 09:59:19

CCNA模拟器介绍CCNA

2009-12-03 14:53:49

.NET Framew

2009-09-04 16:05:08

2013-07-24 16:08:01

Android模拟器Genymotion

2014-11-17 10:34:15

2010-01-27 13:37:15

2011-07-26 09:32:08

iPhone 模拟器

2009-09-17 09:11:59

CCNA实验模拟器CCNA

2017-11-27 09:31:40

Linux终端模拟器Xiki
点赞
收藏

51CTO技术栈公众号