.NET Core / C# 開發 IOT 嵌入式設備的個人見解

来源:https://www.cnblogs.com/whuanle/archive/2019/03/24/10589496.html
-Advertisement-
Play Games

( .NET Core 七龍珠 ) 一、IOT 平臺的支持 先看國內優秀的雲計算IOT平臺(不含QQ互聯、小米IOT等針對特定產品的開發者平臺,僅列出部分雲計算廠商的IOT平臺) 阿裡雲 IOT https://iot.aliyun.com/ 華為物聯網 https://developer.huaw ...


 

( .NET Core 七龍珠 )

一、IOT 平臺的支持

先看國內優秀的雲計算IOT平臺(不含QQ互聯、小米IOT等針對特定產品的開發者平臺,僅列出部分雲計算廠商的IOT平臺)

阿裡雲 IOT

https://iot.aliyun.com/

華為物聯網

https://developer.huawei.com/ict/cn/site-iot-next

騰訊雲 物聯網通訊

https://cloud.tencent.com/product/iothub

百度雲 天工

https://cloud.baidu.com/solution/iot/index.html

中國移動 OneNET

https://open.iot.10086.cn

說到 IOT ,要做開發,有多方面的,模式也不同:設備認證、設備接入、網關、設備管理、訂閱、數據管理與分析、應用開發等。這裡單純說嵌入式設備的開發。

這幾家平臺中,僅有阿裡雲提供 C# 的設備端 SDK,並且不開源、不能跨平臺 (只能在 .NET Framework 4.7下使用,別問我怎麼知道),設備接入方式是 HTTP/2。對於 C#/.NET 友好度最高的應該就是阿裡雲了,騰訊雲的 IOT 相對來說搞得不太像樣。

提供的設備端接入和應用開發,以 C 語言和 Python 為主(C語言是嵌入式開發之王),通訊協議有 HTTPS、MQTT/MQTTS 等。

阿裡雲 IOT 設備端 SDK 文檔

https://help.aliyun.com/document_detail/101488.html?spm=a2c4g.11186623.2.26.554a5b3eaMSYnh#concept-xlx-dzz-ggb

阿裡雲 IOT 雲端 SDK 文檔

https://help.aliyun.com/document_detail/63638.html?spm=a2c4g.11186623.6.678.1ede4c07i0qvHR

國外的話,就只列舉 亞馬遜雲 和 Azure 雲。

https://www.amazonaws.cn/iot/

https://www.azure.cn/zh-cn/

他們有中國區、國際區之分,其中微軟的 Azure 中國區由世紀互聯運營(很不舒服)。

 

 看圖,說明亞馬遜也不支持 C#,嵌入式僅 C 語言,其它方面也不支持 C#/.NET。

只有 Azure 大量、無保留地支持 .NET。

 二、嵌入式設備

物聯網設備的設備端,不限於例如樹莓派、手錶、無人機、藍牙之類的設備,包括手機、手錶、電腦等都可以當作 IOT 設備端。

這裡只討論 ARM32/64 嵌入式開發板,舉個慄子,樹莓派、國產香橙派。

操作系統有 Win 10 IOT Core、Ubuntu、Debain 等。

要買就買樹莓派,別買別的牌子,不然你得哭。

1 系統支持,

樹莓派支持大量系統,並且系統內核較新,裝 .NET Core SDK 和 Runtime,幾乎一套直接安裝完成。

國產香橙派呢,就是個坑貨,系統內核較舊,GCC版本也低,驅動各種不相容,系統也沒幾個能正常使用,而且發熱量特大。

不久前我就買了 Orange PI 3,安裝 .NET Core SDK 2.2,要先更換 apt 源,然後更新 apt 列表,裝上新版本的 gcc (.NET Core 需要 gcc 大於 5.2以上,Debain 系統必須大於等於9 )。

(好想砸了這辣雞板子,但是畢竟花了 300 大洋呢。。。)

2 是資源文檔

樹莓派流行度很高,很多軟體都是支持樹莓派的,與嵌入式有關的技術幾乎都會提及樹莓派,你不怕沒有學習資料,不怕沒有相應的感測器。

其它就不贅述了。

也只有記憶體較大、CPU較大的開發板可以使用 .NET 開發的程式,底層 C 語言才是王道,特麽一個單片機得記憶體才那麼幾KB,光 ARM 版本的 .NET Core 就需要至少 300MB 的記憶體。

三、目前筆者瞭解到的 .NET 開發嵌入式應用方式

1,使用 C/C++生成的動態鏈接庫

筆者文章 -- 跨平臺開發 -- C# 使用 C/C++ 生成的動態鏈接庫

https://www.cnblogs.com/whuanle/p/10582654.html

通過使用 C/C++ 封裝的介面,控制 GPIO (就是板子的那些針腳) 等,這一方式只能在Linux下使用。開發C#程式不需要直接跟底層打交道,通過預留的 C/C++ 介面,間接操控。C/C++ 寫好各類通訊協議、邏輯處理、電路控制等,與硬體打交道,封裝好 .SO 庫,給 C# 使用。這樣開發項目時無需關心底層實現,專註於業務開發。

筆者有篇文章 .NET Core 跨平臺 串口通訊 ,用到 SerialPortStream 庫,這個庫可以在 Windows/Linux 下使用,如果要在 Linux 下使用,必須先把官方用 C 寫的項目編譯、生成動態鏈接庫放到項目里再運行,底層使用 C語言,實現與通訊方式無關的應用開發。

2,使用 Windows 10 IoT Core

就是說使用 Windows 10 IoT Core 系統,在此系統上進行開發。

好處:

  太子殿下

先來幾個圖

 

 

 

一套 C# 就可以搞好各方面的開發,官方直接提供類庫操作設備的各種介面、針腳,你無需掌握大量的硬體知識即可快速上手項目,直接使用 C#/.NET 與各種感測器交互,Visual Studio 宇宙第一 IDE 的開發支持,對接優秀的雲計算平臺 Azure、優秀的生態支持、可以使用傳統Wpf等軟體界面、維護方便、可視化... ...
以往使用開發板需要掌握開發嵌入式設備,WIFI、藍牙、GPIO、網卡、ARM32/64、電路等協議、硬體知識,使用C語言開發底層,現在使用 C# 就能一套搞定。

3,mono

筆者在學習使用開發板時,發現有些庫可以在 mono 上使用,使用 Monodevelop 可以開發 C# 項目,管控 GPIO,筆者對 mono 不瞭解,沒有去實際實現。

 

.NET Core 實現嵌入式開發,就筆者目前的菜水平來說,沒發現 .NET Core 開發嵌入式軟體的優勢。

其一,.NET Core (目前 最新 ARM 2.2.105) 不能直接使用感測器。這個可能是筆者水平不夠,暫時沒有發現有在 Linux 下使用 .NET Core 控制感測器、使用 GPIO 等的實例。

當然,有在Windows 10 IOT Core 上開發 .NET Core 項目使用  GPIO 的實例,不過是使用 Windows.Devices.Gpio ,並且不是在 Linux下。

其二,沒幾個雲計算廠商支持 .NET ,這裡的支持,是指在設備中支持 .NET 開發接入 IOT 平臺,像樹莓派這樣功能完整、硬體配置齊全的設備可以直接連接伺服器,其它一些不具備網卡、CPU和記憶體非常小的設備,只能使用C語言開發、只能通過網關接入IOT平臺。就算設備接入底層搞好了,要接入IOT平臺,要有API、SDK、文檔呀,.NET 的資料真的非常非常少。

個人感覺 .NET Core 在雲計算、Docker、網站開發等方面發展的很好,嵌入式方面不太行。當然這個只是個人感覺。。。

如果使用 Windows IOT Core 的話,是 .NET Core 還是 .NET Framework 都不重要了。

期待 .NET Core  3 正式版的發佈。

 

- - - - - - - -

以上內容僅為個人理解,筆者現在是大三學生,經驗不足,以上內容有錯誤或者觀點不對,懇請各位大神指點一二。

要是說錯了,別笑我哇。。。

- - - - - - - -

目前正在 深圳市敢為軟體技術有限公司 實習,公司從事

物聯網技術的研發;雲計算技術的研發;

大數據技術的技術開發;區塊鏈技術的技術開發;

人工智慧技術的技術開發;電腦軟體的技術開發;

電腦軟體系統集成;數據處理;信息技術咨詢;

信息技術開發;電腦軟硬體、網路技術的研發等。

現在公司需要大量 .NET Core 的小伙伴,感興趣的的同學趕緊加我吧~可以內推噢~~~

微信 whuanlex

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 你可以使用xml配置創建CacheManager,根據這個schema definition ( http://www.ehcache.org/documentation/3.7/xsds.html#core ) 一. 配置元素 <config> 根元素 config是我們xml配置文件的根元素。它 ...
  • Ehcache支持分層緩存的概念,這節主要介紹不同的配置選項,同時也解釋了規則和最佳實踐。 一. 數據緩存到堆外 當在cache中除了有heap層之外,有一些需要註意的: 添加一個key-value到cache時,意味著key和value要被序列化。 從cache中讀取key-value時,意味著k ...
  • 在DSAPI中,網路通訊主要有以下幾種:1 [TCP] TCP服務端 TCP客戶端 2 [UDP] UDP服務端 UDP客戶端 UDP指令版服務端 UDP指令版客戶端 3 [HTTP] HTTP服務端 (客戶端由瀏覽器或任何能訪問HTTP的函數或軟體替代,DSAPI中未提供HTTP客戶端) HTTP ...
  • 問題 有時更新了一些內網的程式庫/包,但僅僅是一些小的更改,不想增加版本號再推送到內網伺服器。手動刪除了 .nuget 文件夾下的相關包文件,但是使用 Visual Studio 重新構建的時候,其使用的包版本仍然不正確。 原因 原因未知,可能是由於緩存未清理徹底造成的。 解決 NuGet 包相關的 ...
  • C#語言規範中提到: 1)委托是引用一個或多個方法的數據結構。對於實例方法,委托還可引用實例方法對應的對象實例。 2)在 C 或 C++ 中與委托最接近的是函數指針,但函數指針只能引用靜態函數,而委托則既可以引用靜態方法,也可以引用實例方法。在後一種情況中,委托不僅存儲了一個對該方法入口點的引用,還 ...
  • 結構(struct)、枚舉(enum)為值類型,類(class)、委托為引用類型 ...
  • 寫在前面 整個項目都托管在了 Github 上: 查找更方便的版本見: 這一節內容可能會用到的庫文件有 SymbolTable,同樣在 Github 上可以找到。 善用 Ctrl + F 查找題目。 習題&題解 3.1.1 題目 編寫一段程式,創建一張符號表並建立字母成績和數值分數的對應關係,如下表 ...
  • 4種常用過濾器(IAuthrorizationFilter、IActionFilter、IResultFilter、IExceptionFilter) 和 3種具體實現類(AuthorizeAttribute、ActionFilterAttribute(Action + Result)、Handle ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...