在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何通過Netduino和Xamarin遠程控制RGBLED

454398 ? 來源:工程師吳畏 ? 2019-08-02 16:49 ? 次閱讀

步驟1 - 組裝電路

將共陽極或共陰極RGB LED連接到支持網絡的Netduino板。

公共陰極RGB LED

具有共陰極RGB LED的電路

公共陽極RGB LED

具有公共陽極RGB LED的電路

步驟2 - 將您的Netduino連接到網絡

Windows

在Netduino以引導加載程序模式連接時,下載并打開適用于Windows或MacOS的固件更新程序和配置工具。在使用網絡配置部分之前,請確保在型號選擇器控件中自動選擇您的設備,以確認您的設備已正確連接。

Netduino Deploy Tool的網絡配置

如果您使用的是 Netduino 3 WiFi ,選擇正確的加密,身份驗證,SSID和密碼短語設置,最后點擊更新將這些設置保存到Netduino。

網絡連接后設置保存到設備,記得斷開連接并將Netduino重新連接到計算機以退出引導加載程序模式,并準備好在項目完成后運行項目。

步驟3 - 創建Netduino項目

在Visual Studio 2015 for Windows或最新的Visual Studio for Mac中創建Netduino項目;將項目命名為 RgbLedHost 。

步驟4 - 添加Netduino.Foundation Maple NuGet包

Windows

右鍵單擊 RgbLedHost 項目,然后單擊 管理NuGet包 。在 瀏覽 標簽中,搜索Netduino.Foundation;它應該是第一個搜索結果。單擊 安裝 按鈕。

添加Netduino.Foundation NuGet包

現在搜索 Maple 和 Netduino.Foundation.Network 并將它們添加到您的項目中。

macOS

按住Alt鍵并單擊 解決方案資源管理器 中的 RgbPwmHost 項目,然后單擊 添加=》添加Nuget包 以打開NuGet包窗口。搜索Netduino.Foundation包并單擊 添加包 將其添加到項目中。

現在搜索 Maple 和 Netduino.Foundation.Network 并將它們添加到您的項目中。

步驟5 - 編寫RgbLedHost項目的代碼

添加RequestHandler類

Maple Web API端點是通過創建從 RequestHandlerBase 繼承的自定義類來定義的。 Maple 使用反射根據這些自定義類中的方法名稱創建URL。它支持 get 和 post 動詞,方法名稱必須以其中一個字符串為前綴,以便自動成為端點。

右鍵單擊您的項目,然后單擊添加 new =》 Class ,并將其命名為 RequestHandler 。在這里您將公開五個URL端點:/TurnOn ,/TurnOff ,/StartBlink ,/StartPulse 和/StartRunningColors 的。復制以下所有這些方法的實現:

public class RequestHandler : RequestHandlerBase

{

public event EventHandler TurnOn = delegate { };

public event EventHandler TurnOff = delegate { };

public event EventHandler StartBlink = delegate { };

public event EventHandler StartPulse = delegate { };

public event EventHandler StartRunningColors = delegate { };

public RequestHandler() { }

public void postTurnOn()

{

TurnOn(this, EventArgs.Empty);

StatusResponse();

}

public void postTurnOff()

{

TurnOff(this, EventArgs.Empty);

StatusResponse();

}

public void postStartBlink()

{

StartBlink(this, EventArgs.Empty);

StatusResponse();

}

public void postStartPulse()

{

StartPulse(this, EventArgs.Empty);

StatusResponse();

}

public void postStartRunningColors()

{

this.StartRunningColors(this, EventArgs.Empty);

StatusResponse();

}

private void StatusResponse()

{

Context.Response.ContentType = “application/json”;

Context.Response.StatusCode = 200;

Send();

}

}

調用這些端點時,將調用相應的方法。在每個方法上,發生了兩件事:觸發事件并發送響應以確認客戶端已收到請求。

添加RgbLedController類

最好為每個涉及的外圍設備創建一個 Controller 類,以使項目更具可擴展性,可維護性和清潔性。這些 Controller 類抽象出所有外設的邏輯,因此主程序邏輯將更清晰,更易于理解。使用以下代碼添加 RgbLedController 類:

public class RgbLedController

{

public RgbLedController(RgbPwmLed rgbPwmLed)

{

_rgbPwmLed = rgbPwmLed;

_rgbPwmLed.SetColor(Netduino.Foundation.Color.Red);

}

public void TurnOn()

{

_rgbPwmLed.Stop();

_rgbPwmLed.SetColor(GetRandomColor());

}

public void TurnOff()

{

_rgbPwmLed.Stop();

_rgbPwmLed.SetColor(Netduino.Foundation.Color.FromHsba(0, 0, 0));

}

public void StartBlink()

{

_rgbPwmLed.Stop();

_rgbPwmLed.StartBlink(GetRandomColor());

}

public void StartPulse()

{

_rgbPwmLed.Stop();

_rgbPwmLed.StartPulse(GetRandomColor());

}

public void StartRunningColors()

{

var arrayColors = new ArrayList();

for (int i = 0; i 《 360; i = i + 5)

{

var hue = ((double)i / 360F);

arrayColors.Add(Netduino.Foundation.Color.FromHsba(((double)i / 360F), 1, 1));

}

int[] intervals = new int[arrayColors.Count];

for (int i = 0; i 《 intervals.Length; i++)

{

intervals[i] = 100;

}

_rgbPwmLed.Stop();

_rgbPwmLed.StartRunningColors(arrayColors, intervals);

}

public void NetworkConnected()

{

_rgbPwmLed.Stop();

_rgbPwmLed.SetColor(Netduino.Foundation.Color.Green);

}

protected Netduino.Foundation.Color GetRandomColor()

{

var random = new Random();

return Netduino.Foundation.Color.FromHsba(random.NextDouble(), 1, 1);

}

}

添加App類

對于這個項目,我們希望實現一個通用的 App 軟件模式來控制所有網絡和控制器,使事情更清晰,更健壯。在項目中添加一個新的 App 類,并粘貼以下代碼:

結果

結果

打開LED。

public class App

{

static int _blinkDuration = 100;

protected MapleServer _server;

protected RgbLedController _rgbController;

public App()

{

InitializePeripherals();

InitializeWebServer();

}

protected void InitializePeripherals()

{

var rgbPwmLed = new RgbPwmLed

SecretLabs.NETMF.Hardware.Netduino.PWMChannels.PWM_PIN_D11,

SecretLabs.NETMF.Hardware.Netduino.PWMChannels.PWM_PIN_D10,

SecretLabs.NETMF.Hardware.Netduino.PWMChannels.PWM_PIN_D9,

1.05f,

1.5f,

1.5f,

false

);

_rgbController = new RgbLedController(rgbPwmLed);

}

protected void InitializeWebServer()

{

var handler = new RequestHandler();

handler.TurnOn += (s, e) =》

{

_rgbController.TurnOn();

};

handler.TurnOff += (s, e) =》

{

_rgbController.TurnOff();

};

handler.StartBlink += (s, e) =》

{

_rgbController.StartBlink();

};

handler.StartPulse += (s, e) =》

{

_rgbController.StartPulse();

};

handler.StartRunningColors += (s, e) =》

{

_rgbController.StartRunningColors();

};

_server = new MapleServer();

_server.AddHandler(handler);

}

public void Run()

{

Initializer.InitializeNetwork();

Debug.Print(“InitializeNetwork()”);

while (Initializer.CurrentNetworkInterface == null) { }

_server.Start(“RgbLedHost”,

Initializer.CurrentNetworkInterface.IPAddress);

_rgbController.NetworkConnected();

}

}

這個類中發生的第一件事就是調用 InitializePeripherals 實例化連接到 Netduino 的所有控制器,在此項目中,它是 RgbLedController 對象,并使其以紅色亮起。/p》

設置外設后,它現在調用 InitializeWebServer ,在這里你將使用 RequestHandler 。實例化之后,為前面解釋的四種暴露方法注冊事件處理程序: LightOn , LightOff , StartBlink , StartPulse 和 StartRunningColors :

OnLightOn - 打開LED。

OnLightOff - 關閉LED。

OnBlink - 使RGB LED閃爍。

OnPulse - 產生RGB LED脈沖。

OnSweepColors - 使RGB通過所有Hue光譜,就像使用RGB LED和Netduino的Show Rainbow Colors一樣。

在所有這些事件處理程序之后,創建一個新的 Maple 實例,并將 RequestHandler 對象分配給其Handler屬性。

在運行方法中,啟動項目時需要做的第一件事是使用 Initializer.InitializeNetwork(); 。 Netduino主板需要在每次啟動時初始化網絡,因此在啟動 Maple 服務器之前,您需要確保Netduino已成功連接到網絡,并且已收到有效的IP地址。

當Netduino加入網絡時,您現在可以通過 server.Start()《安全地啟動M a 服務器/b》傳遞服務器名稱和分配給它的IpAddress,并將RGB LED顏色設置為綠色,表示程序已成功啟動,并準備好接收客戶端請求。

在Program類中實現Main方法

最后,創建一個新的App類對象并調用Run方法。您的代碼應如下所示:

運行RgbLedHost項目

這就是你需要做的一切 RgbLedHost 項目。當您運行項目時,您將看到RGB LED在完成外設初始化后變為紅色,并且一旦連接到網絡,它就會等待接收IP地址。一旦它加入網絡,RGB LED將變為綠色。

RgbLedHost項目正在運行并指示Maple何時成功啟動

步驟6 - 設置Xamarin.Forms RgbLedRemote項目

此項目的下一部分是讓您的手機上運行Xamarin.Forms應用程序。該項目可以在Netduino_Samples/Connected_RgbLed倉庫中找到。在Netduino上運行的代碼位于 RgbLedHost 應用程序文件夾中。 Xamarin.Forms在 RgbLedRemote 文件夾中對其進行采樣。繼續將 RgmLedRemote 項目下載到您的計算機/mac,并在最新版本的Visual Studio上打開它,公共代碼項目應如下所示:

Xamarin.Forms RgbLedRemote app sample

這個項目的用處是 MapleClient 類,它有一個簡單的執行 HttpClient 向 Maple 服務器發送/接收服務器請求,以及 UdpClient 接收來自一個或多個的廣播消息運行更多Maple服務器,應用程序會在Picker上列出它們,以便您可以選擇要連接到哪個Netduino并發送請求。

public class MapleClient

{

static readonly int LISTEN_PORT = 17756;

static readonly int LISTEN_TIMEOUT = 5000; //ms

public async Task UdpTimeoutTask()

{

await Task.Delay(LISTEN_TIMEOUT);

return new UdpReceiveResult();

}

public async Task》 FindMapleServers()

{

var hostList = new List();

var listener = new UdpClient(LISTEN_PORT);

var ipEndPoint = new IPEndPoint(IPAddress.Any, LISTEN_PORT);

var timeoutTask = UdpTimeoutTask();

try

{

while (timeoutTask.IsCompleted == false)

{

Console.WriteLine(“Waiting for broadcast”);

var tasks = new Task[]

{

timeoutTask, listener.ReceiveAsync()

};

int index = 0;

await Task.Run(() =》 index = Task.WaitAny(tasks));

var results = tasks[index].Result;

if (results.RemoteEndPoint == null)

break;

string host = Encoding.UTF8.GetString(results.Buffer, 0,

results.Buffer.Length);

string hostIp = host.Split(‘=’)[1];

Console.WriteLine(“Received broadcast from {0} : {1} ”,

hostIp, host);

var serverItem = new ServerItem()

{

Name = host.Split(‘=’)[0]+“ (”+host.Split(‘=’)[1]+“) ”,

IpAddress = host.Split(‘=’)[1]

};

if (!hostList.Any(server =》 server.IpAddress == hostIp))

{

hostList.Add(serverItem);

}

}

}

catch (Exception e)

{

Console.WriteLine(e.Message);

}

finally

{

listener.Close();

}

return hostList;

}

protected async Task SendCommandAsync(string command, string hostAddress)

{

var client = new HttpClient();

client.BaseAddress = new Uri(“http://” + hostAddress + “/”);

client.Timeout = TimeSpan.FromSeconds(5);

try

{

var response = await client.PostAsync(command, null);

return response.IsSuccessStatusCode;

}

catch (Exception ex)

{

System.Diagnostics.Debug.Print(ex.Message);

return false;

}

}

}

SendCommandAsync function將返回一個布爾值,以指示請求是否已正確處理(true)或請求中是否有錯誤或發生異常(false)。

每次發送請求時,應用程序將顯示一個加載屏幕,一旦響應消息返回成功,加載屏幕就會消失按鈕重新啟用,突出顯示的按鈕反映RGB LED上當前正在發生的操作。

RgbLedRemote項目

步驟7 - 運行項目樣本

首先運行 RgbLedHost 項目,等待RGB LED變為綠色,表示服務器正在運行并廣播UDP其名稱和IP地址的消息。

現在將 RgbLedRemote 項目運行到您的移動設備,稍等片刻,直到應用程序顯示Picker控件,您可以選擇您要連接的服務器。如果連接成功,則設置對話框屏幕應消失,RGB LED應更改為其他顏色。

使用Maple由移動應用程序控制的RGB LED

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    242

    文章

    23356

    瀏覽量

    663196
  • Netduino
    +關注

    關注

    0

    文章

    19

    瀏覽量

    3449
收藏 人收藏

    評論

    相關推薦

    使用樹莓派實現遠程控制的技巧

    樹莓派是一款功能強大的微型計算機,其體積小巧、價格低廉,非常適合用于各種DIY項目。其中,遠程控制是樹莓派應用中非常受歡迎的一個領域。通過遠程控制,我們可以隨時隨地訪問和管理樹莓派,實現數據監控
    的頭像 發表于 11-11 11:37 ?643次閱讀

    遠程控制溫控器的應用

    隨著科技的發展,智能家居逐漸成為現代生活的一部分。遠程控制溫控器作為智能家居系統中的一個重要組成部分,為用戶提供了前所未有的便利和舒適度。 遠程控制溫控器的工作原理 遠程控制溫控器通過
    的頭像 發表于 11-06 13:47 ?467次閱讀

    用網頁端遠程控制電腦各工具對比

    遠程辦公、設備維護和技術支持場景中,遠程控制工具的選擇至關重要。本篇將介紹幾款常見的遠程控制工具進行對比,包括P2link、花生殼、蒲公英、nat123和natapp,幫助用戶了解各工具的不同特點,從而更好地選擇適合自己的
    的頭像 發表于 11-05 11:22 ?412次閱讀

    風管遠程控制系統應用方案

    能耗。 一、基本原理 風管遠程控制系統,通過遠程通信技術對建筑物內的風管系統,進行實時監控與智能控制的物聯網解決方案。將傳統的風管系統與自動化控制、網絡通信、物聯網等技術深度融合,對風
    的頭像 發表于 10-22 16:31 ?310次閱讀

    通過邊緣計算網關實現PLC遠程控制過程

    在現代工業自動化領域,遠程控制與監控已成為提升生產效率、降低維護成本的重要手段。邊緣計算網關作為工業物聯網中的關鍵設備,憑借其強大的數據處理能力和網絡通訊能力,為實現PLC(可編程邏輯控制器)的遠程控制
    的頭像 發表于 10-17 16:28 ?378次閱讀
    <b class='flag-5'>通過</b>邊緣計算網關實現PLC<b class='flag-5'>遠程控制</b>過程

    普通空開怎樣遠程控制斷電

    遠程控制斷電技術的應用場景非常廣泛,包括但不限于: 智能家居系統 :用戶可以通過手機應用或語音助手遠程控制家中的電器,實現節能和便捷。 工業自動化 :在生產線上,遠程控制斷電可以快速
    的頭像 發表于 10-17 14:02 ?926次閱讀

    智能電表是如何與遠程控制系統連接的?

    智能電表與遠程控制系統之間的連接,是現代智能家居技術中不可或缺的一部分。通過這種連接,不僅可以實現對電力使用的精準監控,還能讓家庭或企業的能源管理變得更加高效。接下來,就讓我們一起來看看智能電表
    的頭像 發表于 10-16 16:29 ?453次閱讀
    智能電表是如何與<b class='flag-5'>遠程控制</b>系統連接的?

    城市照明遠程控制系統

    ,引領著智慧城市的新風尚。 城市照明遠程控制系統,基于物聯網、大數據、云計算等現代信息技術,對城市路燈、景觀照明等照明設施進行遠程監控、調度和管理的智慧照明解決方案。通過智能照明控制
    的頭像 發表于 09-10 16:43 ?345次閱讀

    android 遠程控制如何實現

    在現代工作和生活中,遠程控制安卓設備或使用安卓設備遠程控制其他設備已成為常見需求。安卓遠程控制允許IT管理員遠程訪問安卓設備。實施遠程控制
    的頭像 發表于 08-21 18:05 ?998次閱讀
    android <b class='flag-5'>遠程控制</b>如何實現

    智能路燈遠程控制系統

    構建綠色、低碳、高效的現代都市提供有力支撐。 基本原理 智能路燈遠程控制系統基于物聯網(IoT)技術,通過集成傳感器、無線通信模塊、智能控制器及管理云平臺等關鍵組件,實現對路燈狀態的遠程
    的頭像 發表于 08-15 16:21 ?890次閱讀

    PLC遠程控制系統的應用案例都有哪些呢?

    PLC遠程控制系統在許多領域都有廣泛的應用。以下是一些PLC遠程控制系統的應用案例
    的頭像 發表于 05-31 11:24 ?1343次閱讀

    信捷plc遠程控制怎么實現?如何遠程修改程序?

    怎么實現?如何遠程修改程序? 利用物通博聯PLC遠程模塊將信捷PLC接入網絡,實現與遠程控制中心的無線連接,無需布線,工程師可以隨時隨地遠程控制信捷PLC和
    的頭像 發表于 02-22 16:02 ?1534次閱讀
    信捷plc<b class='flag-5'>遠程控制</b>怎么實現?如何<b class='flag-5'>遠程</b>修改程序?

    閘門改造遠程控制系統

    智能改造閘門主要是針對老式非智能閘門進行智能化改造,使其具備測控一體化閘門的功能要求,即實現可現場對閘門進行控制,也可遠程控制閘門啟閉,另外也可接入渠道水位、流量、視頻等采集信息,通過閘控系統
    的頭像 發表于 02-22 11:06 ?902次閱讀
    閘門改造<b class='flag-5'>遠程控制</b>系統

    如何通過物通博聯4G無線PLC網關實現遠程訪問PLC和遠程控制

    物理距離和布線成本等因素,無法滿足遠程監控和控制的需求。 那么如何實現遠程訪問PLC和遠程控制呢? 物通博聯的4G無線PLC網關是一種先進的工業物聯網設備,可以實現
    的頭像 發表于 02-21 15:05 ?1063次閱讀
    如何<b class='flag-5'>通過</b>物通博聯4G無線PLC網關實現<b class='flag-5'>遠程</b>訪問PLC和<b class='flag-5'>遠程控制</b>
    主站蜘蛛池模板: 亚洲国产一区二区三区在线观看 | 人人97 | 欧美黑人性受xxxx精品 | 一本大道一卡二卡四卡 | 人人干人人干人人干 | 美女扒开尿口给男人看大全 | 色黄在线观看 | 日本在线色视频 | 理论在线看 | 人人骚| 亚洲精品亚洲人成人网 | 香港三级理论在线影院 | 天天操丝袜| www.4虎| 在线亚洲一区二区 | 三级日韩 | miya亚洲私人影院在线 | 在线观看h视频 | 精品卡1卡2卡三卡免费网站视频 | 日韩毛片高清免费 | 拍真实国产伦偷精品 | 97人人揉人人捏人人添 | 日本免费的一级绿象 | 激情婷婷网 | 夜夜爽66| 亚欧成人中文字幕一区 | 五月天欧美 | 人人草人人插 | 成年美女黄网站色大免费视频 | 一级网站片| 老熟女一级毛片 | 天天拍天天操 | 久久99精品久久久久久园产越南 | 综合激情六月 | 四虎永久免费观看 | 天堂中文最新版www 天堂资源8中文最新版在线 | 一色屋成人免费精品网站 | 久久久精品久久久久久久久久久 | 国产呦在线观看视频 | 最新黄色大片 | brazzersvideosexhd欧美高清 |