嗯~我知道這次要聊的主題又有點要唱獨角戲了,
題目是Microsoft Azure IoT的整個服務精神的一環要談的就是GUIX。
物聯網產品,就是能夠將資料連上網路的產品,這裡在解釋IoT(Internet of Thing),
連上網需要什麼呢?除了這個產品本身的功能外,
例如:溫度溼度計功能就是量溫度濕度、NFC類的玩具功能就是能讀解各種Nearby Field的
裝置資料並做出一連串互動的系統設計....裡面會有很多資料,但這些資料其實未共享前
都是存在於裝置內,裝置內的資料經過網路資料交握後(Tokens),可以做的創新的事情就很多了,
例如:語音辨識、影像辨識、AI modle Analysis.....等等。因為連網後你的產品就更有意思了....
而資料怎麼傳出去或是接收進來呢?可能是有線網路,也可能是無線網路WIFI,在連網路之前
也可能有無線BLE,Thread,Zigbee,2.4Ghz這些無線技術到Gateway,或是直接有線的介面傳輸。
所以說,以開發一個IoT產品來說,是有很多環節的,不巧的是微軟已經注意到這一塊,
所以開發了整套解決方案,稱之為Microsoft Azure IoT,
當然可能玩物聯網的開發工程師知道並非只有Microsoft一家,沒錯Amzazone有AWS,
對岸的也有阿里雲(Ali cloud),其實都是各據山頭有自己協議的雲端服務。
整套的Azure IoT是有NETX,USBX,GUIX,ThreadX這些系統組成的,其中各代表了
網路層,USB介面底層,人機介面,還有多執行序層。
那麼主題進入GUIX,
其實如果有用過Visual studio開發工具的話,幾乎使用GUIX是無痛使用,
只是....GUIX可能為了讓學C的方便,所以就沒有使用C++ Class的結構,
在windows下的Microsoft App Store 就可以下載GUIX studio應用程式,
所謂GUIX就是圖形介面的使用介面設計,凡舉螢幕上顯示的圖示.按鍵.滑鼠鼠標之類的物件,
都可以先用它內建的,或是自己畫的,按照貼圖的方式貼上,最後在每個物件的事件裡面定義
觸發的事件,編寫觸發事件的程式,可能是輸入也可能是輸出,
以流程的方式串起來,在外觀方面,並不用特意寫程式就可以做出一個簡易的執行結果,
當然要做什麼執行甚麼的那部份還是要自己人工設計系統,
這樣就大大減少那些以前很花時間很不聰明的用程式碼去畫方畫圓或是要寫程式碼去顯示
JPEG,PNG,BMP檔的圖形內容,這些....GUIX都已經幫你處理了,
所以可以省下更多時間去做實際產品上功能的程式,所以它是一個很不錯的開發工具,
然而這也只是Azure IoT開發的其中一環而已,實際上如果用到多工執行,
那你還會用到ThreadX開數個執行序執行不同工作,如果有USB,那你就會用USBX
去驅動各種USB裝置,有網路上下載到Azure cloud那你還會用到NETX裡面去定義
json傳遞資料,這才是Azure IoT的全貌而不是使用了Azure RTOS的開發工具,
就以為這樣就可以做遊戲?產品了,其實....那還遠遠不足,因為使用者的角度,
會牽扯的跟開發者的角度會使用到的技術跟技巧是差很遠的.....
其實寫這篇是有點賭氣的成分在,因為現在的年輕人總只在意速成,
所以會覺得能google到的知識,照著用就好,這樣好像就很強了,
但知其然不知其所以然的結果,其實你得到的是"資訊",而不是"知識",
自己能運用自如的,才是知識,只是像鸚鵡一樣學聲鳥的,那也不過是"資訊"而已。
最後在不妨礙公司開發機密的情況下,我舉個自己寫的一個在GUIX下完成的玩具車表展示。
有興趣想互相討論相關技術的歡迎可以找我。