教你如何用WINDOWSPHONEAPP来连结控制AZURE

  • 编辑时间: 2020-07-12
  • 浏览量: 247
  • 作者:
教你如何用WINDOWSPHONEAPP来连结控制AZURE

于 2016 年 1 月 6 日由 Avirup Basu 提交

简介

此文章将引领您透过 Edison 与 Windows azure 连结, 来执行控制的相关功能。在此範例中将会呈现与 Edison 面板上 LED 灯的开启与关闭状态与 Arduino breakout 面板的连结配对。

让我们来了解实际的运作情形。 Azure 行动服务将做为 Edison 与控制器之间连接的桥樑 。 Edison 会从行动服务端判读其所传递数据数值。而 Windows 手机应用程式将会更新相关数,所以我们必须依照其数值来变更在 Edison 的程式码。

首要条件

假设判读器在 Windows 手机应用程式开发有基本的知识, 而且能利用 azure 行动服务与相关应用程式连结。若是您不知如何建立一个属于您自己的应用程式后台, 可以透过其连结来了解。

配备需求

Intel Edison 搭配 Arduino breakout 面板
LED 灯

软体需求

Visual studio
Arduino IDE

服务需求

1: Azure 行动服务

首先让我们先建立 Azure 行动服务。有许多关于建立 Azure 行动服务的文章。请依照其连结来建立相关的 Azure 行动服务, 其包含 single table, 并将其命名为 controltable。而此 table 当中在栏位的名称为 “status” 而另一个名称为 “name” 。栏位状态的数值可以为 1 或 0 。而 name 的数值可以在 Edison / Arduino 当中设定。

教你如何用WINDOWSPHONEAPP来连结控制AZURE

现在我们将开发能新增/修改 windows 手机应用程式的数值。下面所呈现的图片为 Azure sql table 的撷取画面。请注意其数值属性与“装置”无关。若是在有其必要的情况, 您可将此属性排除。

在下一章节将处理关于 Windows 手机应用程式开发的议题。

Windows 手机应用程式

此应用程式主要是由开启与关闭两种按键所构成。应用程式的撷取画面如下所示:

教你如何用WINDOWSPHONEAPP来连结控制AZURE

您可忽略登出按键,事实上我尝试新增些其他功能。而现在这些按键将会具有什幺功能?这将会更新“status”数值的属性。当我们按下按键时, “status”的数值将会显示为 1,不然它会显示为 0 。

在这会出现一些问题。若是在没有建立任何东西时,会做什幺更新?针对这个情况,我们将布署 2 次应用程式。首先我们将建立起 table 并指定一些原始设定数值。而在下次我们会针对之前所更新的数值来做更新。

现在我们的应用程式已经设定完成。可以测试应用程式并检视 “status” 的数值是否已经更新。当完成更新后, 就可以开始执行, 且完成应用程式的设定。在下一个部份, 我们会着重在 Edison 程式码的编辑。

Edison 程式码
教你如何用WINDOWSPHONEAPP来连结控制AZURE

让我们来了解 Edison。在开始将程式码应用于 Edison 之前, 请依照之前所提到的步骤来设定您的 Edison。当连结 Edison 之后, 请注意您的相对应编号。然后开启 Arduino IDE 并从面板选择 Intel Edison。若是您无法找到 Intel Edison 选项. 您需要从 boards manager 来下载相关的档案。

当您开启 Arduino IDE 后,会看到两个之前所提到的函数。 Void setup 与 void loop 。而 Edison 有内建 Wi-Fi 功能。我们可以透过 Wi-Fi 来与网路连结。而我们须做的动作就是将程式库含盖在 Wi-Fi 当中。请到 Sketch->include library->Wi-Fi 来设定。完成设定后, 让我们将此程式码新增并与 Wi-Fi 连结。

教你如何用WINDOWSPHONEAPP来连结控制AZURE

上面的程式码主要是透过 Wi-Fi 将 Edison 与网路连结。而我们将 PIN 13 设定为输出模式,而目前为关闭状态。我们利用 IDE 序列监控来监控整个程序状态。现在,让我们来了解 loop 函数。透过 http 并藉由 Azure 来检索相关数据。

教你如何用WINDOWSPHONEAPP来连结控制AZURE

这些函数能从 Azure table 来检索其数据。但在深入了解这方法之前, 我们需要新增通用变数将 Edison 与 azure table 连结。请新增通用变数。

教你如何用WINDOWSPHONEAPP来连结控制AZURE

这个应用程式的指令能在 Azure 平台的管理指令按键中找到。我们将使用 void loop 函数来编写程式码。

教你如何用WINDOWSPHONEAPP来连结控制AZURE

我们执行 HTTP 并召唤之前在 table 所指定的名称 GET , 而伺服器的名称与程式代码能正确的检索相关数据。然后指定所需检索的数据模式并将其设定为 JSON 。让我们来透过 wait_response 程式码来编写。

教你如何用WINDOWSPHONEAPP来连结控制AZURE

然后我们来读取所检索到的数据。因为它是以 JSON 模式, 所以我们必须分析 JSON 字串来得到所需数值。以下为其字串範例:

{"id":"2492D996-C471-48F0-B3C9-F33E3B37477F","status":"0″,"name":"arduino"}

最具效益的程式库是 ArduinoJson 。且有强大执行分析的能力。但是 JSON 字串附含在'[‘ 与 ‘]' 当中。而必须将这些符号在程式库当中移除才能执行其功能。所以首先您必须将程式码包含在您的程式码当中,并新增以下通用变数。

教你如何用WINDOWSPHONEAPP来连结控制AZURE

然后编写 read_response method 程式码。

教你如何用WINDOWSPHONEAPP来连结控制AZURE

上面的程式码是用来读取 response 而 parse method 是用来解码字串。 parse method 的功能执行如下所示, 我们将以 Parse method 来变更 PIN13 的状态。

教你如何用WINDOWSPHONEAPP来连结控制AZURE

在上面的程式码中, f 为储存数值的属性状态。然后我们检视 f 数值并设定 PIN 在 HIGH 或 LOW 的状态。

关于 ArduinoJson 程式库相关详细的文件能参照此连结。然而, 在程式库中仍有一些需要克服的问题。后续会再来讨论。现在我们将编写 remaining method 程式码。

教你如何用WINDOWSPHONEAPP来连结控制AZURE

您将会看到当在编译程式码时, 常会遇到的错误问题。而这些错误是必须被移除的。在移除之前, 必须先了解相关问题。档案 WString.h 当中遗失了一些程式码。能在这里发现其差异性。而您必须在这边更新档案。

C:\Users\Username\AppData\Roaming\Arduino15\packages\Intel\hardware\i686\1.6.2+1.0\cores\arduino\WString.h

更新过后,就能解决相关错误的问题。在完成程式码编译后,将其烧入到您的 Edison 。当程式码烧入到 Edison 时, 将 LED 较长脚的部分与 PIN13 连接, 而较短脚的部分接地。而 233 欧姆电阻与 LED 较长脚部分连结。 Windows Phone 透过 Windows Azure 来控制 Edison 已就绪。当 Edison 执行如以下所示时,撷取 serial window 的萤幕画面。

起始阶段为 Edison 与 Wi-Fi 网路连结。

教你如何用WINDOWSPHONEAPP来连结控制AZURE

接下来是 Edison 与 Azure 行动服务连结。在连结之后,能取得经由 JSON 程式库解码 JSON 的数据与结果。解码的结果主要是对应 PIN13 在 Edison 的状态。

教你如何用WINDOWSPHONEAPP来连结控制AZURE
结论

我们已经在本文学习到如何透过 Azure 行动服务来控制您的 Edison 。其中以 Mobile 服务作为桥梁。本文并没有关于 Windows phone 相关的开发,但可以透过连结来提供您所需了解的讯息。而完整的 Edison 程式码以文字档案上传。也可以在这边来连结观看 Youtube 影片。

欢迎加入「Inside」Line 官方帐号,关注最新创业、科技、网路、工作讯息
教你如何用WINDOWSPHONEAPP来连结控制AZURE