日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

步驟1 - 組裝電路

此項目的電路如下所示:

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

結(jié)果

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

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

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

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

固件更新程序和配置工具

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

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

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

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

Windows

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

將Netduino.Foundation NuGet包添加到ServoHost

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

MacOS

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

將Netduino.Foundation NuGet包添加到ServoHost

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

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

添加RequestHandlerclass

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

右鍵單擊您的項目,然后單擊添加新=》類,并將其命名為 RequestHandler 。在這里您將公開五個URL端點:/StartSweep ,/StopSweep 和/RotateTo 。復制以下所有這些方法的實現(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ào)用相應的方法。在每個方法上,發(fā)生了兩件事:觸發(fā)事件并發(fā)送響應以確認客戶端已收到請求。

添加ServoController類

最好為每個涉及的外圍設備創(chuàng)建一個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類

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

-

-

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

}

}

}

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

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

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

StopSweep - 停止伺服。

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

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

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

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

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

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

運行ServoHost項目

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

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

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

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

Xamarin.Forms ServoRemote app sample

結(jié)果

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

最后,您發(fā)送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 函數(shù)將返回一個布爾值指示請求是否正確處理(true)或請求中是否有錯誤或發(fā)生異常(false)。

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

ServoRemote項目

步驟7 - 運行項目樣本

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

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

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

    關注

    17

    文章

    706

    瀏覽量

    43556
  • Netduino
    +關注

    關注

    0

    文章

    19

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    手機遠程控制變頻器!博達智聯(lián) 4G 模塊讓設備管理更智能

    博達智聯(lián) 4G 遠程控制模塊,支持手機微信遠程控制變頻器,實現(xiàn)啟停、調(diào)頻率、實時監(jiān)測、故障報警,適用于工業(yè)、農(nóng)業(yè)、市政等場景,低成本實現(xiàn)設備智能化升級,省人、省時、更高效。
    的頭像 發(fā)表于 03-06 17:30 ?3952次閱讀
    手機<b class='flag-5'>遠程控制</b>變頻器!博達智聯(lián) 4G 模塊讓設備管理更智能

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

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

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

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

    排水泵站遠程控制系統(tǒng)物聯(lián)網(wǎng)解決方案

    推進,排水泵站遠程控制系統(tǒng)解決方案,依托物聯(lián)網(wǎng)、邊緣計算、大數(shù)據(jù)等技術構(gòu)建遠程控制系統(tǒng),成為實現(xiàn)泵站精細化管理、保障城市排水安全的核心需求,打造穩(wěn)定、高效、智能的遠程管控體系。 1.集中管控:實現(xiàn)單節(jié)點對多泵站
    的頭像 發(fā)表于 01-20 17:31 ?679次閱讀

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

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

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

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

    什么是WiFi遠程控制模塊?技術特點和應用場景有哪些?

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

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

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

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

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

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

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

    遠程控制破局,以智能運維增效:設備遠程控制系統(tǒng)

    在工業(yè) 4.0 浪潮與數(shù)字化轉(zhuǎn)型的推動下,設備遠程控制系統(tǒng)已從傳統(tǒng)工業(yè)領域的 “輔助工具”,逐漸升級為各行業(yè)實現(xiàn)高效管理、降本增效的 “核心中樞”。該系統(tǒng)借助網(wǎng)絡通信技術、物聯(lián)網(wǎng)(IoT)、大數(shù)
    的頭像 發(fā)表于 09-16 17:02 ?1142次閱讀

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

    在工業(yè)4.0的浪潮中,工業(yè)物聯(lián)網(wǎng)(IIoT)正從概念走向規(guī)?;涞?,而智能遠程控制系統(tǒng)作為其核心組件,如同“神經(jīng)傳導中樞”,將分散的設備、數(shù)據(jù)與決策端緊密連接??缭綍r空的精準操作,都依賴于智能遠程控制
    的頭像 發(fā)表于 08-06 16:23 ?1212次閱讀

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

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

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

    ,遠程控制與自動化測試成為了現(xiàn)代測試系統(tǒng)中不可或缺的一部分。以下是關于是德頻譜分析儀遠程控制與自動化測試方案的詳細解析。 ? 一、遠程控制基礎 遠程控制是通過網(wǎng)絡或特定的接口,實現(xiàn)對頻
    的頭像 發(fā)表于 06-19 15:16 ?1040次閱讀
    是德頻譜分析儀的<b class='flag-5'>遠程控制</b>與自動化測試方案詳解
    北京市| 江孜县| 黄梅县| 贡觉县| 酉阳| 宁南县| 称多县| 金乡县| 开封市| 和田县| 昌黎县| 长丰县| 新疆| 南通市| 大关县| 工布江达县| 阜平县| 珠海市| 亳州市| 石门县| 普陀区| 东海县| 台前县| 鱼台县| 池州市| 禄丰县| 阳原县| 郑州市| 澄城县| 左云县| 大兴区| 乐陵市| 阳城县| 长兴县| 阳江市| 明溪县| 阜康市| 内丘县| 泗阳县| 历史| 朝阳县|