Raspi /如何通过Web界面切换GPIO引脚Win 10 IOT C#

时间:2016-02-13 09:11:12

标签: c# raspberry-pi windows-10-iot-core

我想通过Web界面控制我的覆盆子pi的GPIO引脚。通常的解决方案是使用apache运行Linux并通过Web界面启动一些python脚本。

但我想用运行Windows 10 iot的c#编写的解决方案来做到这一点。 我发现了一个小网络服务器(http://www.codeproject.com/Articles/1505/Create-your-own-Web-Server-using-C),但我不知道如何使用GPIO引脚的当前状态填充网站或如何处理按钮点击以切换GPIO引脚

有谁知道它可以解决什么样的问题?

PS:我想通过中继板控制一些LED灯条和其他灯。

1 个答案:

答案 0 :(得分:3)

Windows 10 IoT Core和Raspberry Pi的工作方式是,您可以在中间连接两个部分。像一座桥。 Azure(微软的云平台)非常适合这种情况。

在Azure中,您有一项名为“存储队列”的服务,它本质上是一个FIFO(先进先出)。因此,您从连接到Azure的网站上放置了一些内容,然后您的Raspberry Pi从队列中读取。如果队列中有东西; Raspberry Pi可以做一些事情(比如通过设置电压通过GPIO端口闪烁LED)。这基本上可以触发任何电力,而不仅仅是LED。

简单网页

首先从Visual Studio通过 File =>创建一个简单的ASP.NET MVC应用程序。新项目=>网络

然后进入Home文件夹中的 index.cshtml (当您启动网页时,它是前端和主要着陆页)。

使用按钮制作一个简单的表格:

<form method="POST" action="/Home/ToggleLight">
    <button>Toggle</button>
</form>

然后右键单击解决方案中的“引用”,选择“管理NuGet包”。

enter image description here

搜索“Azure存储”并按“WindowsAzure.Storage”上的安装。

enter image description here

登录Azure(portal.azure.com)并点击本指南,了解如何设置存储帐户并通过Storage Explorer创建队列。 https://github.com/msdevno/LED-to-Azure-Starter-Pack

进入“Controllers”文件夹中的 HomeController.cs 并创建一个CloudQueue函数,如下所示:

private static CloudQueue InitializeQueue()
{
    var connectionstring = "YOUR OWN CONNECTION STRING GOES HERE==";
    var cloudStorageAccount = CloudStorageAccount.Parse(connectionstring);
    var queueClient = cloudStorageAccount.CreateCloudQueueClient();

    var queue = queueClient.GetQueueReference("rpi2queue"); //Name of queue

    try
    {
        queue.CreateIfNotExistsAsync();
    }
    catch (Exception ex)
    {
        Console.WriteLine("it didn't work! Here is the error: " + ex.Message);
    }
    return queue;
}

另外,不要忘记在HomeController.cs文件中添加以下using语句。

using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Queue;

在HomeController.cs文件中创建如下的ToggleLight方法:

[HttpPost]
public ActionResult ToggleLight()
{
    var queue = InitializeQueue();
    var message = new CloudQueueMessage("On,1000");
    queue.AddMessage(message);

    return RedirectToAction("Index");
}

您的网站现已完成,可以通过按钮点击在Azure上的队列中添加消息。

为Raspberry创建UWP应用程序

您现在需要做的是为Raspberry Pi 2 IoT核心设备创建UWP应用。 &#34; QueueReader_RPI2 &#34; -folder包含一个功能齐全的UWP应用程序,其中包含有关如何通过从刚刚创建的Azure队列中读取来触发GPIO端口的代码。 / p>

https://github.com/msdevno/LED-to-Azure-Starter-Pack/tree/master/Source/LED2Azure

这就是你创建一个连接到Azure的网站的方式,它触发Raspberry Pi使LED亮起。

编辑:您还可以看一下GitHub-repo的视频(挪威语,但是如果你挣扎的话,你会抓住这个漂移,只需按照代码进行操作):https://channel9.msdn.com/Series/MSDEVNO/LED-to-Azure-Starter-Pack 如果您想了解Raspberry Pi 2的连接方式,您可以查看另一个视频,该视频介绍了您需要的部分及其连接方式(也是挪威语):https://channel9.msdn.com/Series/MSDEVNO/IoT-og-Raspberry-Pi-2-Kickstart-Guide

请记住通过将有用的帖子标记为答案来关闭您的主题,然后如果您有新问题则启动新主题。请不要在同一个帖子中提出几个问题。