我想通过网络界面控制我的树莓派的 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 灯带和其他灯。
请您参考如下方法:
Windows 10 IoT Core 和 Raspberry Pi 的工作方式是中间有一些东西连接两个部分。就像一座桥。 Azure(微软的云平台)非常适合这一点。
在 Azure 中,您有一项称为“存储队列”的服务,它本质上是一个 FIFO(先进先出)。因此,您从连接到 Azure 的网站将内容放入队列,然后您的 Raspberry Pi 从队列中读取。如果队列中有东西; Raspberry Pi 可以做一些事情(比如通过设置电压通过 GPIO 端口闪烁 LED)。这基本上可以触发任何带电的东西,而不仅仅是 LED。
简单网页
首先通过 File => New Project => Web 从 Visual Studio 创建一个简单的 ASP.NET MVC 应用程序。
然后进入 Home 文件夹中的 index.cshtml(这是启动网页时的前端和主登录页面)。
制作一个带有按钮的简单表单:
<form method="POST" action="/Home/ToggleLight">
<button>Toggle</button>
</form>
然后右键单击解决方案中的“引用”并选择“管理 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.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 Core 设备创建 UWP 应用。 “QueueReader_RPI2”文件夹包含一个功能齐全的 UWP 应用程序,其中包含有关如何通过从您刚刚创建的 Azure 中读取队列来触发 GPIO 端口的代码。
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
请记住通过将有用的帖子标记为答案来关闭您的主题,然后如果您有新问题则开始新的主题。请不要在同一个话题中提出多个问题。
