99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

如何使用Netduino和Xamarin遠(yuǎn)程控制伺服

454398 ? 來(lái)源:工程師吳畏 ? 2019-08-02 11:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

步驟1 - 組裝電路

此項(xiàng)目的電路如下所示:

將伺服與Netduino連接以進(jìn)行測(cè)試

結(jié)果

使用外部電源供電時(shí),必須將外部GND連接到Netduino上的GND軌道(如下圖和面包板圖所示)或PWM控制信號(hào)不起作用:

將伺服與Netduino和外部電源連接

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

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

固件更新程序和配置工具

如果您使用的是 Netduino 3 WiFi ,請(qǐng)選擇正確的加密,身份驗(yàn)證,SSID和密碼短語(yǔ)設(shè)置,最后點(diǎn)擊更新將這些設(shè)置保存到Netduino。將網(wǎng)絡(luò)設(shè)置保存到設(shè)備后,請(qǐng)記住斷開(kāi)連接并將Netduino重新連接到計(jì)算機(jī)以退出引導(dǎo)加載程序模式,并在項(xiàng)目完成后立即運(yùn)行項(xiàng)目。

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

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

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

Windows

右鍵單擊 ServoHost 項(xiàng)目,然后單擊管理NuGet包。在“瀏覽”選項(xiàng)卡中,搜索 Netduino.Foundation ;它應(yīng)該是第一個(gè)搜索結(jié)果。單擊“安裝”按鈕。

將Netduino.Foundation NuGet包添加到ServoHost

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

MacOS

在解決方案資源管理器中按住Alt鍵并單擊您的ServoHost項(xiàng)目,然后單擊添加=》添加Nuget包到打開(kāi)NuGet包窗口。搜索Netduino.Foundation包并單擊Add Package將其添加到項(xiàng)目中。

將Netduino.Foundation NuGet包添加到ServoHost

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

步驟5 - 編寫(xiě)ServoHost項(xiàng)目的代碼

添加RequestHandlerclass

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

右鍵單擊您的項(xiàng)目,然后單擊添加新=》類,并將其命名為 RequestHandler 。在這里您將公開(kāi)五個(gè)URL端點(diǎn):/StartSweep ,/StopSweep 和/RotateTo 。復(fù)制以下所有這些方法的實(shí)現(xiàn):

public class RequestHandler : RequestHandlerBase

{

public event EventHandler RotateTo = delegate { };

public event EventHandler StopSweep = delegate { };

public event EventHandler StartSweep = delegate { };

public RequestHandler() { }

public void postRotateTo()

{

try

{

int targetAngle = 0;

var param = “targetAngle”;

try

{

var temp = this.Body?[param] ?? this.Form?[param] ?? this.QueryString?[param];

targetAngle = int.Parse(temp.ToString());

}

catch (Exception ex)

{

Debug.Print(ex.Message);

}

RotateTo(this, new ServoEventArgs(targetAngle));

StatusResponse();

}

catch (Exception ex)

{

Debug.Print(ex.Message);

}

}

public void postStopSweep()

{

StopSweep(this, EventArgs.Empty);

StatusResponse();

}

public void postStartSweep()

{

StartSweep(this, EventArgs.Empty);

StatusResponse();

}

private void StatusResponse()

{

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

Context.Response.StatusCode = 200;

Send();

}

}

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

添加ServoController類

最好為每個(gè)涉及的外圍設(shè)備創(chuàng)建一個(gè)Controller類,以使項(xiàng)目更具可擴(kuò)展性,可維護(hù)性和清潔性。這些Controller類抽象了所有外設(shè)的邏輯,因此主程序邏輯將更清晰,更易于理解。使用以下代碼添加ServoController類:

public class ServoController

{

protected int _rotationAngle;

protected bool _isRotating;

protected Servo _servo;

public ServoController(Servo servo)

{

_servo = servo;

StartSweep();

}

public void RotateTo(int degrees)

{

StopSweep();

_servo.RotateTo(degrees);

}

public void StopSweep()

{

_isRotating = false;

}

public void StartSweep()

{

StopSweep();

_isRotating = true;

Thread _animationThread = new Thread(() =》

{

while (_isRotating)

{

while (_rotationAngle 《 180)

{

if (!_isRotating)

break;

_rotationAngle++;

_servo.RotateTo(_rotationAngle);

Thread.Sleep(15);

}

while (_rotationAngle 》 0)

{

if (!_isRotating)

break;

_rotationAngle--;

_servo.RotateTo(_rotationAngle);

Thread.Sleep(15);

}

}

});

_animationThread.Start();

}

public void NetworkConnected()

{

StopSweep();

_servo.RotateTo(0);

}

}

添加App類

對(duì)于這個(gè)項(xiàng)目,我們想實(shí)現(xiàn)一個(gè)共同的用于控制所有網(wǎng)絡(luò)和控制器的應(yīng)用軟件模式使事物變得更加清晰和強(qiáng)大。將新的App類添加到項(xiàng)目中,并復(fù)制以下代碼:

-

-

結(jié)果

結(jié)果

結(jié)果

結(jié)果

using Netduino.Foundation.Network;

using Maple;

using Netduino.Foundation.Servos;

using N = SecretLabs.NETMF.Hardware.Netduino;

using Microsoft.SPOT;

namespace ServoHost

{

public class App

{

protected MapleServer _server;

protected ServoController _servoController;

public App()

{

InitializePeripherals();

InitializeWebServer();

}

protected void InitializePeripherals()

{

var _servo = new Servo(N.PWMChannels.PWM_PIN_D11, NamedServoConfigs.Ideal180Servo);

_servoController = new ServoController(_servo);

}

protected void InitializeWebServer()

{

var handler = new RequestHandler();

handler.RotateTo += (s, e) =》 { _servoController.RotateTo(((ServoEventArgs)e).Angle); }; ;

handler.StopSweep += (s, e) =》 { _servoController.StopSweep(); };

handler.StartSweep += (s, e) =》 { _servoController.StartSweep(); };

_server = new MapleServer();

_server.AddHandler(handler);

}

public void Run()

{

Initializer.InitializeNetwork();

Initializer.NetworkConnected += InitializerNetworkConnected;

}

private void InitializerNetworkConnected(object sender, EventArgs e)

{

Debug.Print(“InitializeNetwork()”);

_server.Start(“ServoHost”, Initializer.CurrentNetworkInterface.IPAddress);

_servoController.NetworkConnected();

}

}

}

這個(gè)類中發(fā)生的第一件事就是調(diào)用 InitializePeripherals 實(shí)例化連接到 Netduino 的所有控制器,在此項(xiàng)目中,它是 ServoController 對(duì)象并使其在整個(gè)范圍內(nèi)來(lái)回旋轉(zhuǎn)。

設(shè)置外圍設(shè)備后,它現(xiàn)在調(diào)用 InitializeWebServer ,在這里您將使用 RequestHandler 。在實(shí)例化之后,為前面解釋的四種公開(kāi)方法注冊(cè)事件處理程序: StartSweep , StopSweep 和 RotateTo :

RotateTo - 將伺服旋轉(zhuǎn)到特定角度。

StopSweep - 停止伺服。

StartSweep - 使伺服器來(lái)回旋轉(zhuǎn)全范圍。

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

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

當(dāng)Netduino加入網(wǎng)絡(luò)時(shí),您現(xiàn)在可以通過(guò) server.Start() Maple 服務(wù)器》傳遞服務(wù)器的名稱和分配給它的IpAddress,并設(shè)置停止伺服從循環(huán)以指示程序已成功啟動(dòng),并準(zhǔn)備好接收客戶端請(qǐng)求。

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

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

運(yùn)行ServoHost項(xiàng)目

這就是你需要做的一切 ServoHost 項(xiàng)目。當(dāng)您運(yùn)行項(xiàng)目時(shí),您將看到伺服完成初始化外圍設(shè)備后旋轉(zhuǎn)全范圍,并且一旦連接到網(wǎng)絡(luò),它現(xiàn)在等待接收IP地址。一旦它加入網(wǎng)絡(luò),伺服將停止旋轉(zhuǎn)并轉(zhuǎn)到角度零。

伺服項(xiàng)目正在運(yùn)行并指示Maple何時(shí)成功啟動(dòng)

步驟6 - 設(shè)置Xamarin.Forms ServoRemote項(xiàng)目

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

Xamarin.Forms ServoRemote app sample

結(jié)果

這個(gè)項(xiàng)目的用處是我們?nèi)绾问褂肕apleClient NuGet包連接到maple,它有一個(gè)簡(jiǎn)單的 HttpClient 實(shí)現(xiàn),用于發(fā)送/接收服務(wù)器請(qǐng)求/來(lái)自 Maple 服務(wù)器, UdpClient 接收來(lái)自運(yùn)行的一個(gè)或多個(gè)Maple服務(wù)器的UDP廣播消息,應(yīng)用程序會(huì)將其列在Picker上,以便您可以選擇您希望連接到哪個(gè)Netduino并發(fā)送請(qǐng)求。

最后,您發(fā)送API請(qǐng)求到maple的類位于ServoClient類中。請(qǐng)注意,它從MapleClient擴(kuò)展,它有三個(gè)請(qǐng)求控制你的Netduino上的伺服。

public class ServoClient : MapleClient

{

public async Task RotateToAsync(ServerItem server, int degrees)

{

return (await SendCommandAsync(“RotateTo?targetAngle=”+degrees, server.IpAddress));

}

public async Task StartSweepAsync(ServerItem server)

{

return (await SendCommandAsync(“StartSweep”, server.IpAddress));

}

public async Task StopSweepAsync(ServerItem server)

{

return (await SendCommandAsync(“StopSweep”, server.IpAddress));

}

}

SendCommandAsync 函數(shù)將返回一個(gè)布爾值指示請(qǐng)求是否正確處理(true)或請(qǐng)求中是否有錯(cuò)誤或發(fā)生異常(false)。

每次發(fā)送請(qǐng)求時(shí),應(yīng)用程序都會(huì)顯示一個(gè)加載屏幕,一旦響應(yīng)消息返回成功,加載屏幕就會(huì)消失并重新啟用按鈕,突出顯示的按鈕反映伺服器上當(dāng)前正在發(fā)生的操作。

ServoRemote項(xiàng)目

步驟7 - 運(yùn)行項(xiàng)目樣本

首先運(yùn)行 ServoHost 項(xiàng)目,等待伺服停止循環(huán)指示服務(wù)器現(xiàn)在正在運(yùn)行并廣播UD P消息的名稱和IP地址。

現(xiàn)在將 ServoRemote 項(xiàng)目運(yùn)行到您的移動(dòng)設(shè)備上,稍等片刻,直到應(yīng)用程序顯示Picker控件,你在那里可以選擇您要連接的服務(wù)器。如果連接成功,設(shè)置對(duì)話框屏幕應(yīng)該消失,伺服應(yīng)該再次開(kāi)始循環(huán)。

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

    關(guān)注

    16

    文章

    669

    瀏覽量

    41848
  • Netduino
    +關(guān)注

    關(guān)注

    0

    文章

    19

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    如何使用無(wú)線遠(yuǎn)程控制模塊來(lái)實(shí)現(xiàn)rs-485無(wú)線控制?

    無(wú)線遠(yuǎn)程控制模塊,是一種在工業(yè)自動(dòng)化、遠(yuǎn)程監(jiān)控等領(lǐng)域廣泛應(yīng)用的技術(shù)。以下將主要介紹無(wú)線遠(yuǎn)程控制模塊及其在實(shí)現(xiàn)485無(wú)線控制中的應(yīng)用。 一、無(wú)線遠(yuǎn)程控
    的頭像 發(fā)表于 04-24 17:08 ?405次閱讀
    如何使用無(wú)線<b class='flag-5'>遠(yuǎn)程控制</b>模塊來(lái)實(shí)現(xiàn)rs-485無(wú)線<b class='flag-5'>控制</b>?

    智慧路燈如何實(shí)現(xiàn)遠(yuǎn)程控制

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

    plc遠(yuǎn)程控制模塊是什么

    PLC遠(yuǎn)程控制模塊是什么?PLC(ProgrammableLogicController,可編程邏輯控制器)遠(yuǎn)程控制模塊是用于實(shí)現(xiàn)遠(yuǎn)程監(jiān)控和控制
    的頭像 發(fā)表于 02-12 17:20 ?705次閱讀

    PLC遠(yuǎn)程控制模塊應(yīng)用

    PLC(Programmable Logic Controller,可編程邏輯控制器)遠(yuǎn)程控制模塊,作為工業(yè)自動(dòng)化領(lǐng)域的一項(xiàng)重要技術(shù),正日益展現(xiàn)出其強(qiáng)大的應(yīng)用潛力和價(jià)值。通過(guò)遠(yuǎn)程監(jiān)控和控制
    的頭像 發(fā)表于 02-12 16:48 ?492次閱讀

    使用樹(shù)莓派實(shí)現(xiàn)遠(yuǎn)程控制的技巧

    樹(shù)莓派是一款功能強(qiáng)大的微型計(jì)算機(jī),其體積小巧、價(jià)格低廉,非常適合用于各種DIY項(xiàng)目。其中,遠(yuǎn)程控制是樹(shù)莓派應(yīng)用中非常受歡迎的一個(gè)領(lǐng)域。通過(guò)遠(yuǎn)程控制,我們可以隨時(shí)隨地訪問(wèn)和管理樹(shù)莓派,實(shí)現(xiàn)數(shù)據(jù)監(jiān)控
    的頭像 發(fā)表于 11-11 11:37 ?1412次閱讀

    遠(yuǎn)程控制溫控器的應(yīng)用

    隨著科技的發(fā)展,智能家居逐漸成為現(xiàn)代生活的一部分。遠(yuǎn)程控制溫控器作為智能家居系統(tǒng)中的一個(gè)重要組成部分,為用戶提供了前所未有的便利和舒適度。 遠(yuǎn)程控制溫控器的工作原理 遠(yuǎn)程控制溫控器通過(guò)無(wú)線網(wǎng)絡(luò)
    的頭像 發(fā)表于 11-06 13:47 ?1074次閱讀

    用網(wǎng)頁(yè)端遠(yuǎn)程控制電腦各工具對(duì)比

    遠(yuǎn)程辦公、設(shè)備維護(hù)和技術(shù)支持場(chǎng)景中,遠(yuǎn)程控制工具的選擇至關(guān)重要。本篇將介紹幾款常見(jiàn)的遠(yuǎn)程控制工具進(jìn)行對(duì)比,包括P2link、花生殼、蒲公英、nat123和natapp,幫助用戶了解各工具的不同特點(diǎn),從而更好地選擇適合自己的
    的頭像 發(fā)表于 11-05 11:22 ?961次閱讀

    風(fēng)管遠(yuǎn)程控制系統(tǒng)應(yīng)用方案

    在現(xiàn)代建筑領(lǐng)域,風(fēng)管遠(yuǎn)程控制系統(tǒng)作為樓宇自動(dòng)化與智能化的重要組成部分,正日益受到廣泛關(guān)注與應(yīng)用。該系統(tǒng)不僅提升建筑內(nèi)空氣調(diào)節(jié)的效率和舒適度,簡(jiǎn)化運(yùn)維管理,精準(zhǔn)控制室內(nèi)溫濕度的,同時(shí)優(yōu)化能源使用,降低
    的頭像 發(fā)表于 10-22 16:31 ?806次閱讀

    普通空開(kāi)怎樣遠(yuǎn)程控制斷電

    在現(xiàn)代家庭和工業(yè)環(huán)境中,電力安全至關(guān)重要。普通空氣開(kāi)關(guān)(以下簡(jiǎn)稱空開(kāi))作為電路保護(hù)的基本元件,雖然能夠有效防止電路過(guò)載和短路,但其功能相對(duì)單一,無(wú)法滿足遠(yuǎn)程控制的需求。 1. 遠(yuǎn)程控制斷電的必要性
    的頭像 發(fā)表于 10-17 14:02 ?2304次閱讀

    城市照明遠(yuǎn)程控制系統(tǒng)

    在快速發(fā)展的城市化進(jìn)程中,照明不僅是城市基礎(chǔ)設(shè)施的重要組成部分,是城市形象與居民生活質(zhì)量的重要體現(xiàn)。城市照明遠(yuǎn)程控制系統(tǒng)應(yīng)運(yùn)而生,以其智能化、高效化、節(jié)能化的特點(diǎn),正逐步改變著傳統(tǒng)城市照明的面貌
    的頭像 發(fā)表于 09-10 16:43 ?613次閱讀

    android 遠(yuǎn)程控制如何實(shí)現(xiàn)

    在現(xiàn)代工作和生活中,遠(yuǎn)程控制安卓設(shè)備或使用安卓設(shè)備遠(yuǎn)程控制其他設(shè)備已成為常見(jiàn)需求。安卓遠(yuǎn)程控制允許IT管理員遠(yuǎn)程訪問(wèn)安卓設(shè)備。實(shí)施遠(yuǎn)程控制應(yīng)
    的頭像 發(fā)表于 08-21 18:05 ?1456次閱讀
    android <b class='flag-5'>遠(yuǎn)程控制</b>如何實(shí)現(xiàn)

    teamviewer內(nèi)網(wǎng)遠(yuǎn)程控制外網(wǎng)

    在企業(yè)內(nèi)網(wǎng)環(huán)境中,安全性、穩(wěn)定性和性能是企業(yè)用戶關(guān)注的重點(diǎn)。然而,許多遠(yuǎn)程控制軟件在內(nèi)網(wǎng)應(yīng)用中存在限制,無(wú)法滿足企業(yè)的特殊需求。比如知名的遠(yuǎn)程控制軟件 TeamViewer,其功能強(qiáng)大,但并未提供
    的頭像 發(fā)表于 08-16 20:46 ?1782次閱讀

    智能路燈遠(yuǎn)程控制系統(tǒng)

    在當(dāng)今這個(gè)科技日新月異的時(shí)代,智能城市的概念正逐步從藍(lán)圖變?yōu)楝F(xiàn)實(shí),智能路燈遠(yuǎn)程控制系統(tǒng)作為智慧城市的重要組成部分。實(shí)現(xiàn)路燈照明的智能化管理,大大提升城市能源利用效率,增強(qiáng)公共安全與應(yīng)急響應(yīng)能力,為
    的頭像 發(fā)表于 08-15 16:21 ?1381次閱讀

    照明遠(yuǎn)程控制系統(tǒng)

    在當(dāng)今這個(gè)科技日新月異的時(shí)代,照明遠(yuǎn)程控制系統(tǒng)作為智能家居的重要組成部分,正逐步走進(jìn)千家萬(wàn)戶,為生產(chǎn)生活帶來(lái)前所未有的便捷與智能體驗(yàn)。通過(guò)智能化技術(shù),實(shí)現(xiàn)對(duì)照明設(shè)備的遠(yuǎn)程控制與管理,讓光線與環(huán)境
    的頭像 發(fā)表于 08-06 16:17 ?918次閱讀

    水泵遠(yuǎn)程控制系統(tǒng)方案

    隨著科技的飛速發(fā)展,水泵遠(yuǎn)程控制系統(tǒng)逐漸成為現(xiàn)代水利工程建設(shè)和管理的關(guān)鍵技術(shù)之一。這種系統(tǒng)不僅大大提高水泵的運(yùn)行效率,還實(shí)現(xiàn)對(duì)水泵設(shè)備的實(shí)時(shí)監(jiān)控和遠(yuǎn)程控制,從而顯著提升水資源管理的智能化和自動(dòng)化水平
    的頭像 發(fā)表于 07-21 14:54 ?923次閱讀