91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

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

454398 ? 來源:工程師吳畏 ? 2019-08-02 16:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

步驟1 - 組裝電路

將共陽極或共陰極RGB LED連接到支持網(wǎng)絡(luò)的Netduino板。

公共陰極RGB LED

具有共陰極RGB LED的電路

公共陽極RGB LED

具有公共陽極RGB LED的電路

步驟2 - 將您的Netduino連接到網(wǎng)絡(luò)

Windows

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

Netduino Deploy Tool的網(wǎng)絡(luò)配置

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

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

步驟3 - 創(chuàng)建Netduino項目

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

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

Windows

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

添加Netduino.Foundation NuGet包

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

macOS

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

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

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

添加RequestHandler類

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

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

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();

}

}

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

添加RgbLedController類

最好為每個涉及的外圍設(shè)備創(chuàng)建一個 Controller 類,以使項目更具可擴展性,可維護性和清潔性。這些 Controller 類抽象出所有外設(shè)的邏輯,因此主程序邏輯將更清晰,更易于理解。使用以下代碼添加 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類

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

結(jié)果

結(jié)果

打開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();

}

}

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

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

OnLightOn - 打開LED。

OnLightOff - 關(guān)閉LED。

OnBlink - 使RGB LED閃爍。

OnPulse - 產(chǎn)生RGB LED脈沖。

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

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

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

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

在Program類中實現(xiàn)Main方法

最后,創(chuàng)建一個新的App類對象并調(diào)用Run方法。您的代碼應(yīng)如下所示:

運行RgbLedHost項目

這就是你需要做的一切 RgbLedHost 項目。當您運行項目時,您將看到RGB LED在完成外設(shè)初始化后變?yōu)榧t色,并且一旦連接到網(wǎng)絡(luò),它就會等待接收IP地址。一旦它加入網(wǎng)絡(luò),RGB LED將變?yōu)榫G色。

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

步驟6 - 設(shè)置Xamarin.Forms RgbLedRemote項目

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

Xamarin.Forms RgbLedRemote app sample

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

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)或請求中是否有錯誤或發(fā)生異常(false)。

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

RgbLedRemote項目

步驟7 - 運行項目樣本

首先運行 RgbLedHost 項目,等待RGB LED變?yōu)榫G色,表示服務(wù)器正在運行并廣播UDP其名稱和IP地址的消息。

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

使用Maple由移動應(yīng)用程序控制的RGB LED

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • led
    led
    +關(guān)注

    關(guān)注

    243

    文章

    24596

    瀏覽量

    690908
  • Netduino
    +關(guān)注

    關(guān)注

    0

    文章

    19

    瀏覽量

    3551
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    什么是PLC網(wǎng)關(guān)?如何遠程控制PLC?

    遠程通信和安全防護等。通過PLC網(wǎng)關(guān),不同品牌、不同協(xié)議的PLC設(shè)備可以實現(xiàn)互聯(lián)互通,同時將現(xiàn)場設(shè)備的數(shù)據(jù)上傳至云端或遠程監(jiān)控中心,為遠程控制和智能化管理奠定基礎(chǔ)。
    的頭像 發(fā)表于 02-28 16:13 ?77次閱讀
    什么是PLC網(wǎng)關(guān)?如何<b class='flag-5'>遠程控制</b>PLC?

    2026工業(yè)遠程控制設(shè)備:宏集IXON打造PLC遠程監(jiān)控與智能管理新標桿

    宏集 IXON 工業(yè) IoT 解決方案深耕機械制造領(lǐng)域,以 “強大卻不復(fù)雜” 的產(chǎn)品體系,為全球 2500 + 機械制造商打造了從 PLC 遠程監(jiān)控到智能遠程管理的全鏈路解決方案,成為工業(yè)遠程控制領(lǐng)域的優(yōu)選品牌。
    的頭像 發(fā)表于 02-14 16:47 ?8838次閱讀
    2026工業(yè)<b class='flag-5'>遠程控制</b>設(shè)備:宏集IXON打造PLC<b class='flag-5'>遠程</b>監(jiān)控與智能管理新標桿

    PLC遠程控制不求人,手把手教你詳細設(shè)置方法

    在現(xiàn)代工業(yè)自動化中,PLC遠程控制功能越來越重要,尤其是在設(shè)備分布廣泛或環(huán)境復(fù)雜的場景中。通過無線通信技術(shù),可以實現(xiàn)PLC的遠程控制,顯著提高生產(chǎn)效率和運維便捷性。本文將詳細介紹基于無線的PLC
    的頭像 發(fā)表于 12-24 11:36 ?276次閱讀
    PLC<b class='flag-5'>遠程控制</b>不求人,手把手教你詳細設(shè)置方法

    吉時利數(shù)字源表2401遠程控制技術(shù)指南

    在現(xiàn)代實驗室自動化與遠程監(jiān)測系統(tǒng)中,數(shù)字源表作為精密電子測量設(shè)備的關(guān)鍵組件,其遠程控制能力已成為提升實驗效率與安全性的核心要素。本文以吉時利2401型號為例,系統(tǒng)闡述其遠程控制的技術(shù)架構(gòu)、實施步驟
    的頭像 發(fā)表于 12-17 16:04 ?300次閱讀
    吉時利數(shù)字源表2401<b class='flag-5'>遠程控制</b>技術(shù)指南

    什么是WiFi遠程控制模塊?技術(shù)特點和應(yīng)用場景有哪些?

    隨著科技的發(fā)展,智能家居逐漸走進了我們的生活,越來越多的人開始體驗到通過互聯(lián)網(wǎng)控制家電的便利。而WiFi遠程控制模塊作為智能家居的核心組成部分,其獨特的功能和優(yōu)勢使得家庭和工作場所的設(shè)備管理變得更加
    的頭像 發(fā)表于 11-29 14:10 ?480次閱讀
    什么是WiFi<b class='flag-5'>遠程控制</b>模塊?技術(shù)特點和應(yīng)用場景有哪些?

    電能質(zhì)量在線監(jiān)測裝置的備用鏈路切換機制是否支持遠程控制?

    現(xiàn)代電能質(zhì)量在線監(jiān)測裝置的備用鏈路切換機制 普遍支持遠程控制 ,主流廠商通過協(xié)議指令、軟件平臺和硬件冗余設(shè)計,實現(xiàn)了從鏈路狀態(tài)查詢、策略配置到強制切換的全流程遠程操作。以下是技術(shù)實現(xiàn)細節(jié)與典型應(yīng)用場
    的頭像 發(fā)表于 11-06 16:48 ?1406次閱讀

    工業(yè)遠程控制總掉鏈子?安科瑞 ARTU:32 路DI + 以太網(wǎng)通訊,效率直接翻番!

    一、直擊痛點:為什么工業(yè)遠程控制總卡殼? “車間設(shè)備布線像‘蜘蛛網(wǎng)’,PLC 對接老掉線,偏遠光伏電站得天天派人巡檢……” 不少工業(yè)人都在為遠程控制的兼容性、穩(wěn)定性發(fā)愁。而安科瑞 ARTU 模塊化
    的頭像 發(fā)表于 10-13 13:41 ?374次閱讀
    工業(yè)<b class='flag-5'>遠程控制</b>總掉鏈子?安科瑞 ARTU:32 路DI + 以太網(wǎng)通訊,效率直接翻番!

    信號發(fā)生器遠程控制LabVIEW自動化方法技巧

    信號發(fā)生器在現(xiàn)代電子工程與測試測量中扮演著重要角色,而通過LabVIEW實現(xiàn)其遠程控制,則進一步提高了測試的靈活性和效率。以下是幾種關(guān)鍵的自動化方法技巧,以幫助工程師們更好地實現(xiàn)這一目標。 ? 首先
    的頭像 發(fā)表于 09-23 18:05 ?697次閱讀
    信號發(fā)生器<b class='flag-5'>遠程控制</b>LabVIEW自動化方法技巧

    助力工業(yè)物聯(lián)網(wǎng)升級,智能遠程控制系統(tǒng)功不可沒

    系統(tǒng)的支撐。它不僅打破了工業(yè)生產(chǎn)的地域限制,更通過數(shù)據(jù)驅(qū)動的自動化控制,推動工業(yè)物聯(lián)網(wǎng)從“設(shè)備互聯(lián)”向“智能協(xié)同”升級。 一、系統(tǒng)架構(gòu):工業(yè)物聯(lián)網(wǎng)的“遠程操控神經(jīng)網(wǎng)” 智能遠程控制系統(tǒng)
    的頭像 發(fā)表于 08-06 16:23 ?1029次閱讀

    是德示波器MSOX3054T遠程控制自動化測試

    在現(xiàn)代電子測試領(lǐng)域,自動化測試技術(shù)已成為提升效率、降低人力成本的關(guān)鍵。是德示波器MSOX3054T作為一款高性能儀器,其遠程控制自動化測試功能為工程師們打開了全新的效率之門。本文將深入探討如何通過遠程控制
    的頭像 發(fā)表于 07-08 17:09 ?647次閱讀
    是德示波器MSOX3054T<b class='flag-5'>遠程控制</b>自動化測試

    是德頻譜分析儀的遠程控制與自動化測試方案詳解

    遠程控制與自動化測試成為了現(xiàn)代測試系統(tǒng)中不可或缺的一部分。以下是關(guān)于是德頻譜分析儀遠程控制與自動化測試方案的詳細解析。 ? 一、遠程控制基礎(chǔ) 遠程控制
    的頭像 發(fā)表于 06-19 15:16 ?854次閱讀
    是德頻譜分析儀的<b class='flag-5'>遠程控制</b>與自動化測試方案詳解

    如何使用無線遠程控制模塊來實現(xiàn)rs-485無線控制?

    了無線通信技術(shù)的設(shè)備,它能夠通過無線鏈路實現(xiàn)對遠程設(shè)備的控制和數(shù)據(jù)傳輸。這些模塊通常具有體積小、功耗低、傳輸距離遠、穩(wěn)定性高等特點,非常適合在復(fù)雜環(huán)境中進行數(shù)據(jù)傳輸和控制。 二、無線
    的頭像 發(fā)表于 04-24 17:08 ?1039次閱讀
    如何使用無線<b class='flag-5'>遠程控制</b>模塊來實現(xiàn)rs-485無線<b class='flag-5'>控制</b>?

    50A磁保持遠程控制模塊是什么設(shè)備

    50A磁保持遠程控制模塊是一種集成了高電流控制遠程通信功能的智能電氣設(shè)備,主要用于工業(yè)自動化、智能家居、能源管理等領(lǐng)域。其核心特點在于通過磁保持繼電器技術(shù)實現(xiàn)穩(wěn)定的大電流通斷
    的頭像 發(fā)表于 04-22 16:12 ?701次閱讀

    普源示波器遠程控制SCPI指令的應(yīng)用

    普源示波器作為現(xiàn)代電子測量領(lǐng)域的重要工具,廣泛應(yīng)用于科研、教育和工業(yè)測試中。隨著測試需求的日益復(fù)雜和自動化水平的提高,遠程控制成為提升測試效率和靈活性的關(guān)鍵手段。SCPI(Standard
    的頭像 發(fā)表于 04-22 15:55 ?1266次閱讀
    普源示波器<b class='flag-5'>遠程控制</b>SCPI指令的應(yīng)用

    智慧路燈如何實現(xiàn)遠程控制?

    引言 在智慧城市建設(shè)的進程中,叁仟智慧路燈作為重要的基礎(chǔ)設(shè)施,其遠程控制功能發(fā)揮著關(guān)鍵作用。遠程控制使得叁仟智慧路燈能夠擺脫地域限制,實現(xiàn)高效、精準的管理,極大地提升了城市照明系統(tǒng)的運行效率與智能化
    的頭像 發(fā)表于 03-18 12:27 ?1012次閱讀
    智慧路燈如何實現(xiàn)<b class='flag-5'>遠程控制</b>?