.NET Core / C# 开发 IOT 嵌入式设备的个人见解
( .NET Core 七龍珠 )
一、IOT 平臺的支持
先看國內(nèi)優(yōu)秀的云計算IOT平臺(不含QQ互聯(lián)、小米IOT等針對特定產(chǎn)品的開發(fā)者平臺,僅列出部分云計算廠商的IOT平臺)
阿里云 IOT
https://iot.aliyun.com/
華為物聯(lián)網(wǎng)
https://developer.huawei.com/ict/cn/site-iot-next
騰訊云 物聯(lián)網(wǎng)通訊
https://cloud.tencent.com/product/iothub
百度云 天工
https://cloud.baidu.com/solution/iot/index.html
中國移動 OneNET
https://open.iot.10086.cn
說到 IOT ,要做開發(fā),有多方面的,模式也不同:設(shè)備認證、設(shè)備接入、網(wǎng)關(guān)、設(shè)備管理、訂閱、數(shù)據(jù)管理與分析、應(yīng)用開發(fā)等。這里單純說嵌入式設(shè)備的開發(fā)。
這幾家平臺中,僅有阿里云提供 C# 的設(shè)備端 SDK,并且不開源、不能跨平臺 (只能在 .NET Framework 4.7下使用,別問我怎么知道),設(shè)備接入方式是 HTTP/2。對于 C#/.NET 友好度最高的應(yīng)該就是阿里云了,騰訊云的 IOT 相對來說搞得不太像樣。
提供的設(shè)備端接入和應(yīng)用開發(fā),以 C 語言和 Python 為主(C語言是嵌入式開發(fā)之王),通訊協(xié)議有 HTTPS、MQTT/MQTTS 等。
阿里云 IOT 設(shè)備端 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/
他們有中國區(qū)、國際區(qū)之分,其中微軟的 Azure 中國區(qū)由世紀互聯(lián)運營(很不舒服)。
?看圖,說明亞馬遜也不支持 C#,嵌入式僅 C 語言,其它方面也不支持 C#/.NET。
只有 Azure 大量、無保留地支持 .NET。
?二、嵌入式設(shè)備
物聯(lián)網(wǎng)設(shè)備的設(shè)備端,不限于例如樹莓派、手表、無人機、藍牙之類的設(shè)備,包括手機、手表、電腦等都可以當作 IOT 設(shè)備端。
這里只討論 ARM32/64 嵌入式開發(fā)板,舉個栗子,樹莓派、國產(chǎn)香橙派。
操作系統(tǒng)有 Win 10 IOT Core、Ubuntu、Debain 等。
要買就買樹莓派,別買別的牌子,不然你得哭。
1 系統(tǒng)支持,
樹莓派支持大量系統(tǒng),并且系統(tǒng)內(nèi)核較新,裝 .NET Core SDK 和 Runtime,幾乎一套直接安裝完成。
國產(chǎn)香橙派呢,就是個坑貨,系統(tǒng)內(nèi)核較舊,GCC版本也低,驅(qū)動各種不兼容,系統(tǒng)也沒幾個能正常使用,而且發(fā)熱量特大。
不久前我就買了 Orange PI 3,安裝 .NET Core SDK 2.2,要先更換 apt 源,然后更新 apt 列表,裝上新版本的 gcc (.NET Core 需要 gcc 大于 5.2以上,Debain 系統(tǒng)必須大于等于9 )。
(好想砸了這辣雞板子,但是畢竟花了 300 大洋呢。。。)
2 是資源文檔
樹莓派流行度很高,很多軟件都是支持樹莓派的,與嵌入式有關(guān)的技術(shù)幾乎都會提及樹莓派,你不怕沒有學習資料,不怕沒有相應(yīng)的傳感器。
其它就不贅述了。
也只有內(nèi)存較大、CPU較大的開發(fā)板可以使用 .NET 開發(fā)的程序,底層 C 語言才是王道,特么一個單片機得內(nèi)存才那么幾KB,光 ARM 版本的 .NET Core 就需要至少 300MB 的內(nèi)存。
三、目前筆者了解到的 .NET 開發(fā)嵌入式應(yīng)用方式
1,使用 C/C++生成的動態(tài)鏈接庫
筆者文章 --?跨平臺開發(fā) -- C# 使用 C/C++ 生成的動態(tài)鏈接庫
https://www.cnblogs.com/whuanle/p/10582654.html
通過使用 C/C++ 封裝的接口,控制 GPIO (就是板子的那些針腳) 等,這一方式只能在Linux下使用。開發(fā)C#程序不需要直接跟底層打交道,通過預留的 C/C++ 接口,間接操控。C/C++ 寫好各類通訊協(xié)議、邏輯處理、電路控制等,與硬件打交道,封裝好 .SO 庫,給 C# 使用。這樣開發(fā)項目時無需關(guān)心底層實現(xiàn),專注于業(yè)務(wù)開發(fā)。
筆者有篇文章?.NET Core 跨平臺 串口通訊?,用到?SerialPortStream 庫,這個庫可以在 Windows/Linux 下使用,如果要在 Linux 下使用,必須先把官方用 C 寫的項目編譯、生成動態(tài)鏈接庫放到項目里再運行,底層使用 C語言,實現(xiàn)與通訊方式無關(guān)的應(yīng)用開發(fā)。
2,使用?Windows 10 IoT Core
就是說使用 Windows 10 IoT Core 系統(tǒng),在此系統(tǒng)上進行開發(fā)。
好處:
太子殿下
先來幾個圖
?
一套 C# 就可以搞好各方面的開發(fā),官方直接提供類庫操作設(shè)備的各種接口、針腳,你無需掌握大量的硬件知識即可快速上手項目,直接使用 C#/.NET 與各種傳感器交互,Visual Studio 宇宙第一 IDE 的開發(fā)支持,對接優(yōu)秀的云計算平臺 Azure、優(yōu)秀的生態(tài)支持、可以使用傳統(tǒng)Wpf等軟件界面、維護方便、可視化... ...
以往使用開發(fā)板需要掌握開發(fā)嵌入式設(shè)備,WIFI、藍牙、GPIO、網(wǎng)卡、ARM32/64、電路等協(xié)議、硬件知識,使用C語言開發(fā)底層,現(xiàn)在使用 C# 就能一套搞定。
3,mono
筆者在學習使用開發(fā)板時,發(fā)現(xiàn)有些庫可以在 mono 上使用,使用 Monodevelop 可以開發(fā) C# 項目,管控 GPIO,筆者對 mono 不了解,沒有去實際實現(xiàn)。
.NET Core 實現(xiàn)嵌入式開發(fā),就筆者目前的菜水平來說,沒發(fā)現(xiàn) .NET Core 開發(fā)嵌入式軟件的優(yōu)勢。
其一,.NET Core (目前 最新 ARM 2.2.105) 不能直接使用傳感器。這個可能是筆者水平不夠,暫時沒有發(fā)現(xiàn)有在 Linux 下使用 .NET Core 控制傳感器、使用 GPIO 等的實例。
當然,有在Windows 10 IOT Core 上開發(fā) .NET Core 項目使用? GPIO 的實例,不過是使用?Windows.Devices.Gpio?,并且不是在 Linux下。
其二,沒幾個云計算廠商支持 .NET ,這里的支持,是指在設(shè)備中支持 .NET 開發(fā)接入 IOT 平臺,像樹莓派這樣功能完整、硬件配置齊全的設(shè)備可以直接連接服務(wù)器,其它一些不具備網(wǎng)卡、CPU和內(nèi)存非常小的設(shè)備,只能使用C語言開發(fā)、只能通過網(wǎng)關(guān)接入IOT平臺。就算設(shè)備接入底層搞好了,要接入IOT平臺,要有API、SDK、文檔呀,.NET 的資料真的非常非常少。
個人感覺 .NET Core 在云計算、Docker、網(wǎng)站開發(fā)等方面發(fā)展的很好,嵌入式方面不太行。當然這個只是個人感覺。。。
如果使用 Windows IOT Core 的話,是 .NET Core 還是 .NET Framework 都不重要了。
期待 .NET Core? 3 正式版的發(fā)布。
- - - - - - - -
以上內(nèi)容僅為個人理解,筆者現(xiàn)在是大三學生,經(jīng)驗不足,以上內(nèi)容有錯誤或者觀點不對,懇請各位大神指點一二。
要是說錯了,別笑我哇。。。
- - - - - - - -
目前正在?深圳市敢為軟件技術(shù)有限公司?實習,公司從事
物聯(lián)網(wǎng)技術(shù)的研發(fā);云計算技術(shù)的研發(fā);
大數(shù)據(jù)技術(shù)的技術(shù)開發(fā);區(qū)塊鏈技術(shù)的技術(shù)開發(fā);
人工智能技術(shù)的技術(shù)開發(fā);計算機軟件的技術(shù)開發(fā);
計算機軟件系統(tǒng)集成;數(shù)據(jù)處理;信息技術(shù)咨詢;
信息技術(shù)開發(fā);計算機軟硬件、網(wǎng)絡(luò)技術(shù)的研發(fā)等。
現(xiàn)在公司需要大量?.NET Core?的小伙伴,感興趣的的同學趕緊加我吧~可以內(nèi)推噢~~~
微信?whuanlex
原文鏈接:https://www.cnblogs.com/whuanle/p/10589496.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的.NET Core / C# 开发 IOT 嵌入式设备的个人见解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【送书活动】10分钟了解Docker,运
- 下一篇: CefSharp中c#和JavaScri