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

Raspi / How to Toggle GPIO Pins over a Web Interface Win 10 IOT C#

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

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

有谁知道它可以用什么方式求解?

PS: 我想通过继电器板控制一些 LED 灯带和其他灯。

Windows 10 IoT Core 和 Raspberry Pi 的工作方式是中间有一些东西连接两个部分。像一座桥。 Azure(微软的云平台)非常适合这个。

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

简单网页

首先从 Visual Studio 通过 File => New Project => Web.

创建一个简单的 ASP.NET MVC 应用程序

然后进入 Home-folder 内的 index.cshtml(这是启动网页时的 front-end 和主要着陆页).

制作一个带有按钮的简单表单:

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

然后 right-click 在您的解决方案中的“参考”上选择“管理 NuGet 包”。

搜索“Azure Storage”并在“WindowsAzure.Storage”上按安装。

登录 Azure (portal.azure.com) 并按照本指南了解如何设置存储帐户并通过存储资源管理器创建队列。 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 中添加以下 using 语句。cs-file。

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

在 HomeController 中创建如下所示的 ToggleLight 方法。cs-file:

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

    return RedirectToAction("Index");
}

您的网站现已完成,可以在 button-click 上的 Azure 队列中添加消息。

为 Raspberry 创建 UWP 应用程序

您现在需要做的是 为 Raspberry Pi 2 IoT 核心设备创建 UWP 应用程序。 “QueueReader_RPI2”文件夹包含一个功能齐全的 UWP-app,其中包含有关如何通过从 Azure 中的队列读取来触发 GPIO-ports 的代码你刚刚创建。

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

请记得通过将有用的帖子标记为答案来关闭您的话题,如果您有新问题,请开始新的话题。请不要在同一个话题中提出多个问题。