×

会根据Web API调用的响应使LED闪烁的开源项目

消耗积分:0 | 格式:zip | 大小:0.25 MB | 2022-12-23

张飞雄

分享资料个

描述

在此项目中,您将使用适用于 Raspberry Pi 2 组件上的 Windows 10 IoT Core 的 Adafruit 入门包来创建一个项目,该项目会根据 Web API 调用的响应使 LED 闪烁。

硬件设置

按照页面底部的 Fritzing 图将 Raspberry Pi2 连接到面包板和其他组件。

注意:LED 引脚已从之前的Blinky 示例从 GPIO 5 更改为 GPIO 18。 

代码

主页.cs

您可以从https://github.com/ms-iot/adafruitsample下载代码启动项目,我们将引导您完成添加与 Web 服务对话并在地图上获取您的 pin 所需的代码。什么地图?

打开“Lesson_201\StartSolution\Lesson_201.sln 并打开 MainPage.xaml.cs 文件。

我们已经填写了一些方法作为您在此解决方案中的起点。如果你想跳到前面,你可以在以下位置找到所有代码已完成的解决方案:“Lesson_201\FullSolution\Lesson_201.sln”

在 MainPage 类的顶部添加以下行。这些定义了您将用于控制 LED 的 Pi2 上的哪个引脚以及对您将很快添加的 InternetLed 类的引用。

 密封部分  : 
    {
        
          GPIOToUse =  ;

        
        InternetLed  ernetLed;

        主页()

现在在 OnNavigatedTo 方法中添加代码,它将:

  1. 创建一个新的 InternetLed 对象
  2. 进行 Web API 调用以将我们的图钉放在制造商地图上
  3. 初始化对象
  4. 调用 webapi 获取我们的延迟值。
  5. 使用返回的延迟循环 100 次,每次通过都会使 LED 闪烁。

如果您不想在地图上添加图钉,请删除MakePinWebAPICall();  


protected override async void 
{
    调试。 ;

     ;

    
    {
        
        internetLed =   ;

        
        internetLed。
         blinkDelay = await internetLed.  ;

         (  i =  ; i <  ; i++)
        {
            互联网主导。 ;
            等待任务。;
        }

    }
    抓住(例外 e)
    {
        调试。 ;
    }
}

InternetLed.cs

现在您将添加一个新的类文件,其中大部分工作将实际执行。

从主菜单中选择项目->添加类...

添加新项对话框将打开并默认为 Visual C# 类。

输入InternetLed.cs作为文件名,然后单击添加

将为您创建并打开类文件。

更新使用的

您需要替换文件顶部的 using 部分,以便代码可以引用 GPIO 设备、Web 界面和系统诊断。

   .Net.Http;
 Windows.Devices.Gpio;

命名空间 Lesson_201
{

班级成员

在类括号内添加以下行,稍后代码将引用这些行。

  
    {
        
         GpioController gpio;
        GpioPin LedControlGPIOPin;
          LedControlPin;

        
           DefaultBlinkDelay =  ;

        
          eLedState { Off, On };
        eLedState _LedState;

类构造器

现在,添加将存储用于控制 LED 的引脚值的类构造函数代码。

公共 
    {
        调试。 ;

        
        LedControlPin = ledControlPin;
    }

初始化成员

添加初始化代码,它负责设置与 Pi2 通用输入输出 (GPIO) 控制器的通信。

公共无效
{
    调试。 ;

     
    gpio = GpioController。 ;

    LedControlGPIOPin = gpio.  ;
    LedControlGPIO引脚。 ;

    
    GpioPinValue startingValue = LedControlGPIOPin. ;
    _LedState = (startingValue  GpioPinValue.Low) ? eLedState.On : eLedState.Off;
}

LedState 属性

这将与 led 状态(开与关)的交互包装到一个中央位置。

//LED交互的属性。
eLedState LedState
{
    {_LedState; }
    
    {
         .WriteLine("InternetLed::LedState::set " +  .ToString());
        (LedControlGPIOPin !=  )
        {
            GpioPinValue newValue = (  == eLedState.On  GpioPinValue.High : GpioPinValue.Low);
            LedControlGPIO引脚。(新值);
            _LedState =;
        }
    }
}

眨眼法

添加处理更改 LED 状态的方法。

// 将 LED 的状态从 )       
         
        {
             == eLedState.On )
            {
                LedState = eLedState。;
            }
            
            {
                LedState = eLedState。;
            }
        }

GetBlinkDelayFromWeb 方法

这是该类的主要工作完成的地方。

首先设置 HttpClient 调用,然后执行它。然后将返回的字符串输出到调试通道中,这样就可以看到了。

接下来,我们确定延迟的值是多少并返回它。  

 
        
          WebAPIURL =  ;
        
         {
            Debug.WriteLine(  );

             responseString =  ;

            
            {
                (  client =   ())
                {
                    
                    responseString = await client.GetStringAsync(WebAPIURL);

                    
                    Debug.WriteLine(  .Format(  , responseString));
                }
            }
            (例外 e)
            {
                Debug.WriteLine(e.Message);
            }

              (!  .TryParse(responseString, out  ))
            {
                = DefaultBlinkDelay;
            }

            
              ;
        }
    }
}

试试看

输入所有代码后,您可以构建解决方案并在 Pi2 上运行代码。如果需要,您可以查看有关如何在 PI 上连接和运行代码的说明,重新访问第 1 课 - Blinky

打开 Visual Studio 的输出选项卡。如果需要在主菜单上使用Debug -> Window -> Output

现在您可以观察 Debug.WriteLine 命令的输出。  

查找以“Response string:”开头的消息,随后将在“[]”方括号中包含来自 Web API 的响应。

MainPage::OnNavigatedTo
InternetLed::新InternetLed
InternetLed::InitalizeLed
InternetLed::MakeWebApiCall
响应:[  ]
InternetLed::LedState 关闭

闪烁的 LED

此时,您的 LED 应该根据从 Web API 返回的时间字符串的值大约每秒闪烁一次。

在这里查看下一课


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !