說起.NET Gadgeteer,不得不先說一下.NET Micro Framework,雖然.NET Micro Framework已經有十幾年的發展歷史了,但是在全球範圍內,.NET Micro Framework的知名度,遠遠低於它的近親.NET Framework和.NET Compact Framework,其原因值得探究。
.NET Micro Framework僅從名字上理解,就是一個框架,和.NET Framework還有.NET Compact Framework應該沒有什麼大的不同,但是.NET Micro Framework有自己的特色,就是自啟動功能,也就是不需要作業系統也能執行。這個特色將.NET Micro Framework逐漸演化為一個作業系統的角色。恰是這一點,在.NET Micro Framework早期發展過程中,越來越顯得沒有優勢和特色。
早期的.NET Micro Framework並沒有直接對第三方開放,而是作為微軟.NET全戰略的一環,以.NET Micro Framework為基礎,推出一系列產品。目前比較火熱的可穿戴裝置,比如智慧手錶。其實.NET Micro Framework為核心的第一代產品就是智慧手錶,早在2003年的拉斯維加斯的Comdex貿易展上,比爾蓋茲就曾親自戴著智慧手錶進行過推廣。這項以.NET Micro Framework為核心發展起來的技術叫MSN Direct,除了手錶產品外,還有可以預報天氣的咖啡壺,GPS導航器等產品。
以.NET Micro Framework為核心的第二代產品是SideShow,曾以筆記本的第二屏、智慧遙控器和智慧鍵盤的面目出現,華碩、三星的筆記本就包含這樣的SideShow螢幕。
但是無論是MSN Direct,還是SideShow,其產品並不成功,這和微軟早期強制推廣.NET戰略相關的,因為基於.NET技術開發此類產品,雖然開發比較快,但是對硬體資源需求比較高,其.NET託管程式碼相比原生C++程式碼,速度要慢許多。所以此類產品一旦批量生產,價效比肯定比較低。最初微軟也打算全部用.NET C#語言開發作業系統(比如Longhorn系統),後來事實證明這種做法是行不通的。
2009年起始微軟開始調整.NET Micro Framework發展戰略,首先以Apache 2.0 license的授權方式完全開源.NET Micro Framework,並基於.NET Micro Framework推出第三代產品Netduino,微軟這個思路其實是仿照Arduino產品而做的,從產品命名還有實際硬體介面上,都是學習Arduino。我個人認為這個思路是對的,至少充分發揮了.NET Micro Framework優勢,小巧,開發迅速,並且採用強大的Visual Studio進行程式開發和線上除錯,讓所有的.NET程式設計師很容易進入到嵌入式領域進行相關開發,這不得不說在軟硬體開發結合越來越緊密的時代,對.NET程式設計師是一個福音。
而其後推出的基於.NET Micro Framework技術的.NET Gadgeteer產品更是充分發揮了.NET Micro Framework優勢,在Netduino產品的基礎上,更上一層樓,青出於藍而勝於藍,完全演化成具有微軟自己特色的產品。特別是微軟定義的20種.NET Gadgeteer介面型別,應該是微軟為工控領域制訂OPC技術標準以來,最重要的一個介面標準。
更具特色的是硬體拖拉視覺化程式設計。在DOS時代我們開發一個介面程式,可以說是摸著石頭過河,邊寫程式碼,邊執行測試,以確認相關介面的位置是否合適。Windows平臺下最初的Visual Basic等視覺化程式設計工具,讓我們的介面開發帶入一個新時代,每個功能模組都被封裝為一個控制元件,通過視覺化拖拉的方式,設計介面,讓我們的介面開發提升到一個新的水平。同理,我們以軟體介面開發的眼光審視目前的硬體開發,其實發現,開發模式仍處在DOS時代,每外接一個功能模組,都需要我們的程式設計師匠心獨運,小心翼翼分配相關的Pin腳,並用心開發相關驅動,最終通過應用程式呼叫底層介面,進行資料互動。
而.NET Gadgeteer的開發環境,讓我們拋棄了這些瑣碎和繁雜的步驟,視每個外接模組為一個控制元件,通過拖拉方式,讓核心主機板和這些模組相連,自動完成介面初始化、模組初始化等工作。留給我們所做的,就是一些業務邏輯的實施和完善,這是硬體開發領域的物件導向程式設計,是一個具有里程碑意義的硬體開發變革。
有了這些特色.NET Gadgeteer已經和Netduino、Arduino等相關DIY產品不同,跳出了僅僅是學習硬體,電子產品小製作的範疇。再結合目前的發展的如火如荼的3D列印技術,.NET Gadgeteer已經成為快速製作最終產品最好的選擇(特別是小批量、個性化產品)。在物聯網發展迅猛的今天,.NET Gadgeteer更是可以大顯身手,可以方便接入各種感測器模組,並把相關資料上傳到雲端。
【說明】以上內容摘自譯著《玩轉.NET Gadgeteer電子積木》上的譯者序,目前該書已經出版,詳情可以單擊下面的連結:
http://www.yfiot.net/forum.php?mod=viewthread&tid=1977&extra=page%3D1
以前的一篇部落格文章《Microsoft .NET Gadgeteer 簡介及其它》
NetDIY智慧主控(簡介:http://blog.csdn.net/yfiot/article/details/18970109)硬體簡單擴充套件以後也可以變身成為.NET Gadgeteer主機板。