如何将Fez Panda II放入睡眠状态'模式通过按钮控制?

时间:2014-07-31 11:22:02

标签: c# visual-studio-2010 serial-port .net-micro-framework

我有一个Fez Panda 2,一个简单的开关连接到引脚Di20。我把它声明为

static InputPort MySwitch = new InputPort((Cpu_Pin)FEZ_Pin.Digital.Di20, false, Port.ResistorMode.PullUp);

我的程序中有几个线程,其中一个运行了一个我想要使用的while(true)块:

while(true)
{
     if(MySwitch.Read()== false)
     {
        //put FEZ to sleep
        LED.State = LED.LedState.Off; //I have an LED class to set LED on or off
     }
     else
     {
        //wake up FEZ
        LED.State = LED.LedState.Off;
     }
}

有关如何实现这一点的任何想法,以便Fez将“休眠”直到此按钮被更改?

我听说过允许中断端口,但我不确定在这种情况下这是否有用/可行。我连接了几个COM端口,并希望这些连接“关闭”,因此“停止”所有传输。这是因为这些串口很难“只使用一个中断端口”,我需要“禁用”那里的通信(串口使用COM1,COM3和COM4,常规数据流动)。

有关如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:0)

下面的低功耗状态示例: https://www.ghielectronics.com/docs/141/low-power

using Microsoft.SPOT.Hardware;
using System;

public class Program
{
    public static void Main()
    {
        var interrupt = new InterruptPort(Cpu.Pin.GPIO_Pin0, true, Port.ResistorMode.PullUp, Port.InterruptMode.InterruptEdgeHigh);
        interrupt.OnInterrupt += interrupt_OnInterrupt;

        PowerState.Sleep(SleepLevel.DeepSleep, HardwareEvent.OEMReserved1);

        ///Continue on with your program here
    }

    private static void interrupt_OnInterrupt(uint data1, uint data2, DateTime time)
    {
        //Interrupted
    }
}