原打算用MF开发一个类似Windows桌面的程序(因为发现MF居然支持渐进色可以绘很炫的界面)由于目前的模拟器仅支持个键所以在做类Windows开始菜单的时候犯了难个方向键和一个OK键没有一个适合做开始菜单键的记得Digi的模拟器至少支持个键既然他能做理论上我也可以一阵研究后还真有了成效在五个键的基础上我又添加了两个键一个是菜单键(对应PC键盘可以是Windows键或空格键)一个是返回键(对应PC键盘上的ESC键)也就是说我原来做得模拟器上的那两个键终于起作用了
添加完这两个键后突然灵机一动以前我苦苦不能做的IO模拟功能应该也可以做了做Windows界面的心没有了转为一心研究IO模拟器了功夫不负有心人几个小时后便大功能告成了把以前Digi开发的IO测试程序稍加调整一下就可以试了(需要重新设置一下Pin)运行界面如下
)thiswidth=;>
publicclassDigiTest {
publicstaticvoidMain() {
//Digi //CpuPin[]pin=newCpuPin[]{(CpuPin)(CpuPin)(CpuPin)
(CpuPin)(CpuPin)};
OutputPort[]output=newOutputPort[];
InputPort[]input=newInputPort[];
//叶帆模拟器GPIO的pin定义 CpuPin[]pin_I=newCpuPin[]{(CpuPin)(CpuPin)(CpuPin)(CpuPin)(CpuPin)(CpuPin)(CpuPin)(CpuPin)};
CpuPin[]pin_Q=newCpuPin[]{(CpuPin)(CpuPin)(CpuPin)(CpuPin)(CpuPin)(CpuPin)(CpuPin)(CpuPin)};
for(inti=;i<;i++) { input[i]=newInputPort(pin_I[i]falsePortResistorModePullDown)
output[i]=newOutputPort(pin_Q[i]false)
} intintNum=; while(true) { output[intNum]Write(!output[intNum]Read())
DebugPrint(input[]Read()ToString()++input[]Read()ToString()++input[]Read()ToString()++input[]Read()ToString()++input[]Read()ToString()++input[]Read()ToString()++input[]Read()ToString()++input[]Read()ToString())
ThreadSleep()
if(++intNum>)intNum=;
} } }
运行后效果果然不错改变输入则调试信息中出现对应的变化(通过这个也深刻理解了new InputPort(pin_I[i] false PortResistorModePullDown)中的上拉和下拉的含义)同时程序中改变输出则对应的输出灯也在同步亮灭
细心的读者会发现我的模拟器可以让InputPort和OutputPort的实例同时运行原因就是他们的Pin值不同而Digi的I/O共用了(天知道他们为什么要这样?)
以后在测试相关的IO应用不必接上硬件了直接用模拟器就可以了不知道模拟器是否支持串口模拟(映射PC机物理串口)以后有时间研究一下不过我想TCP/IP一定会有问题一是MF目前的TCP/IP都不完善第二模拟器目前也不可能支持虚拟网卡(类似PPC模拟器或虚拟机)
目前模拟器支持路数字量入路数字量出模拟量以后有机会在加入
[注目前微软官方的模拟器仅支持LCD和个按键功能其它的都不支持]