女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

如何使用Netduino和Xamarin遠程控制伺服

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

步驟1 - 組裝電路

此項目的電路如下所示:

將伺服與Netduino連接以進行測試

結果

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

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

步驟2 - 將Netduino連接到網絡

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

固件更新程序和配置工具

如果您使用的是 Netduino 3 WiFi ,請選擇正確的加密,身份驗證,SSID和密碼短語設置,最后點擊更新將這些設置保存到Netduino。將網絡設置保存到設備后,請記住斷開連接并將Netduino重新連接到計算機以退出引導加載程序模式,并在項目完成后立即運行項目。

步驟3 - 創建Netduino項目

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

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

Windows

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

將Netduino.Foundation NuGet包添加到ServoHost

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

MacOS

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

將Netduino.Foundation NuGet包添加到ServoHost

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

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

添加RequestHandlerclass

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

右鍵單擊您的項目,然后單擊添加新=》類,并將其命名為 RequestHandler 。在這里您將公開五個URL端點:/StartSweep ,/StopSweep 和/RotateTo 。復制以下所有這些方法的實現:

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

}

}

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

添加ServoController類

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

對于這個項目,我們想實現一個共同的用于控制所有網絡和控制器的應用軟件模式使事物變得更加清晰和強大。將新的App類添加到項目中,并復制以下代碼:

-

-

結果

結果

結果

結果

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

}

}

}

這個類中發生的第一件事就是調用 InitializePeripherals 實例化連接到 Netduino 的所有控制器,在此項目中,它是 ServoController 對象并使其在整個范圍內來回旋轉。

設置外圍設備后,它現在調用 InitializeWebServer ,在這里您將使用 RequestHandler 。在實例化之后,為前面解釋的四種公開方法注冊事件處理程序: StartSweep , StopSweep 和 RotateTo :

RotateTo - 將伺服旋轉到特定角度。

StopSweep - 停止伺服。

StartSweep - 使伺服器來回旋轉全范圍。

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

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

當Netduino加入網絡時,您現在可以通過 server.Start() Maple 服務器》傳遞服務器的名稱和分配給它的IpAddress,并設置停止伺服從循環以指示程序已成功啟動,并準備好接收客戶端請求。

在Program類中實現Main方法

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

運行ServoHost項目

這就是你需要做的一切 ServoHost 項目。當您運行項目時,您將看到伺服完成初始化外圍設備后旋轉全范圍,并且一旦連接到網絡,它現在等待接收IP地址。一旦它加入網絡,伺服將停止旋轉并轉到角度零。

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

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

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

Xamarin.Forms ServoRemote app sample

結果

這個項目的用處是我們如何使用MapleClient NuGet包連接到maple,它有一個簡單的 HttpClient 實現,用于發送/接收服務器請求/來自 Maple 服務器, UdpClient 接收來自運行的一個或多個Maple服務器的UDP廣播消息,應用程序會將其列在Picker上,以便您可以選擇您希望連接到哪個Netduino并發送請求。

最后,您發送API請求到maple的類位于ServoClient類中。請注意,它從MapleClient擴展,它有三個請求控制你的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 函數將返回一個布爾值指示請求是否正確處理(true)或請求中是否有錯誤或發生異常(false)。

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

ServoRemote項目

步驟7 - 運行項目樣本

首先運行 ServoHost 項目,等待伺服停止循環指示服務器現在正在運行并廣播UD P消息的名稱和IP地址。

現在將 ServoRemote 項目運行到您的移動設備上,稍等片刻,直到應用程序顯示Picker控件,你在那里可以選擇您要連接的服務器。如果連接成功,設置對話框屏幕應該消失,伺服應該再次開始循環。

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

    關注

    16

    文章

    663

    瀏覽量

    41601
  • Netduino
    +關注

    關注

    0

    文章

    19

    瀏覽量

    3483
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    智慧路燈如何實現遠程控制

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

    plc遠程控制模塊是什么

    PLC遠程控制模塊是什么?PLC(ProgrammableLogicController,可編程邏輯控制器)遠程控制模塊是用于實現遠程監控和控制
    的頭像 發表于 02-12 17:20 ?462次閱讀

    PLC遠程控制模塊應用

    PLC(Programmable Logic Controller,可編程邏輯控制器)遠程控制模塊,作為工業自動化領域的一項重要技術,正日益展現出其強大的應用潛力和價值。通過遠程監控和控制
    的頭像 發表于 02-12 16:48 ?348次閱讀

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

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

    遠程控制溫控器的應用

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

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

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

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

    在現代建筑領域,風管遠程控制系統作為樓宇自動化與智能化的重要組成部分,正日益受到廣泛關注與應用。該系統不僅提升建筑內空氣調節的效率和舒適度,簡化運維管理,精準控制室內溫濕度的,同時優化能源使用,降低
    的頭像 發表于 10-22 16:31 ?663次閱讀

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

    在現代家庭和工業環境中,電力安全至關重要。普通空氣開關(以下簡稱空開)作為電路保護的基本元件,雖然能夠有效防止電路過載和短路,但其功能相對單一,無法滿足遠程控制的需求。 1. 遠程控制斷電的必要性
    的頭像 發表于 10-17 14:02 ?1888次閱讀

    城市照明遠程控制系統

    在快速發展的城市化進程中,照明不僅是城市基礎設施的重要組成部分,是城市形象與居民生活質量的重要體現。城市照明遠程控制系統應運而生,以其智能化、高效化、節能化的特點,正逐步改變著傳統城市照明的面貌
    的頭像 發表于 09-10 16:43 ?527次閱讀

    android 遠程控制如何實現

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

    teamviewer內網遠程控制外網

    在企業內網環境中,安全性、穩定性和性能是企業用戶關注的重點。然而,許多遠程控制軟件在內網應用中存在限制,無法滿足企業的特殊需求。比如知名的遠程控制軟件 TeamViewer,其功能強大,但并未提供
    的頭像 發表于 08-16 20:46 ?1691次閱讀

    智能路燈遠程控制系統

    在當今這個科技日新月異的時代,智能城市的概念正逐步從藍圖變為現實,智能路燈遠程控制系統作為智慧城市的重要組成部分。實現路燈照明的智能化管理,大大提升城市能源利用效率,增強公共安全與應急響應能力,為
    的頭像 發表于 08-15 16:21 ?1227次閱讀

    水泵遠程控制系統方案

    隨著科技的飛速發展,水泵遠程控制系統逐漸成為現代水利工程建設和管理的關鍵技術之一。這種系統不僅大大提高水泵的運行效率,還實現對水泵設備的實時監控和遠程控制,從而顯著提升水資源管理的智能化和自動化水平
    的頭像 發表于 07-21 14:54 ?806次閱讀

    PLC遠程控制信號怎么輸送

    生產規模的擴大和自動化水平的提高,對PLC的遠程控制需求也日益增加。本文將詳細闡述PLC遠程控制信號的輸送方法,包括信號的傳輸方式、傳輸介質、通信協議、以及實現遠程控制所需的步驟和注意事項,以期為相關技術人員提供參考和借鑒。
    的頭像 發表于 06-15 15:26 ?2092次閱讀