.NET Core / C# 開發 IOT 嵌入式設備的我的看法

原文: .NET Core / C# 開發 IOT 嵌入式設備的我的看法

 

( .NET Core 七龍珠 )html

1、IOT 平臺的支持

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

阿里雲 IOTwindows

https://iot.aliyun.com/api

華爲物聯網服務器

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。

 2、嵌入式設備

物聯網設備的設備端,不限於例如樹莓派、手錶、無人機、藍牙之類的設備,包括手機、手錶、電腦等均可以看成 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 的內存。

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

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

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

http://www.javashuo.com/article/p-ccwirbmz-km.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/6四、電路等協議、硬件知識,使用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 的小夥伴,感興趣的的同窗趕忙加我吧~能夠內推噢~~~

微信 whuanlex

相關文章
相關標籤/搜索