適合物聯網開發者的五大VS Code擴展
譯文【51CTO.com快譯】在短短幾年之間,Visual Studio Code(簡稱VS Code)就已經征服了眾多開發人員的心智。隨著它在Web開發社區中的迅速興起,無論是運行在Linux、macOS還是Windows平臺上,它都成為了Java、Python、以及C/C++開發人員的首選IDE(集成開發環境)。在Stack Overflow的最新一次針對開發人員的調查中(https://insights.stackoverflow.com/survey/2019),有九萬多名開發人員給出了反饋,并認為VS Code已占有50%以上的市場份額。
無論是剛開始涉足物聯網(IoT)技術,還是已經從事物聯網相關解決方案一段時間了,您可能都會迅速地意識到“全棧開發人員(full-stack developer)”,這個術語也同樣適用于物聯網領域。您需要花費大量的時間,來開發和測試那些用C語言連接的嵌入式設備與固件。有時,您可能還需要調整一些可用于構建系統的Python腳本,或使用命令行工具,來檢查目標物聯網的后端服務是否已經啟動,并正在運行。
在本文中,我們將向您介紹一些基本的VS Code擴展。這些擴展將能夠幫助您成為更高效的物聯網(IoT)開發人員。
Arduino IDE是一個很棒的工具。它尤其適合于幫助新手人員開始使用Arduino的整個生態系統。不過,對于那些遠不只是為了讓LED閃爍,或是要運行某個基本程序的用戶來說,Arduino能夠提供的關鍵性功能還是略顯欠缺了一些。如今,有越來越多的平臺都能夠與Arduino相兼容,其中包括:諸如ESP32之類的HiFive1 RISC-V開發者工具包,以及STM32 Nucleo系列。其他更多信息請參見:https://en.wikipedia.org/wiki/List_of_Arduino_boards_and_compatible_systems。
Arduino的VS Code擴展已被放置在了Arduino IDE的官網上。您只需要一次性安裝,便可反復使用由它為您提供的所有功能。如下圖所示,其中包括:瀏覽代碼示例,以及監控自己的串行端口等。
在我看來,VS Code擴展的真正強大之處在于:它能夠基于VS Code的C/C++工具進行構建,并且能夠為您提供完善的智能感知(Intellisense)和實用的代碼導航功能。
自從2010年我第一次接觸與Arduino兼容的主板,到后續的Arduino生態系統,Arduino的VS Code擴展逐漸擺脫了“Serial.println”,而且越來越適用于相關的程序調試了。
在后臺,該擴展程序利用了諸如CMSIS-DAP、JLink、以及ST-Link等常見的調試接口。如果您的設備已經具有實現了這些接口之一的板載調試芯片,那么您就可以馬上開始工作了。當然,如果沒有的話,您只需要考慮使用與自己芯片相兼容的外部連接器即可。
PlatformIO是一種開放源代碼的命令行工具,它通過提供統一的工具鏈分配、代碼庫管理、以及調試等機制,來支持物聯網和嵌入式開發工作。近年來,它越來越能夠與VS Code緊密集成了。可以說,針對VS Code的PlatformIO IDE擴展現在已經是Visual Studio市場上最受歡迎的擴展工具之一。
目前,PlatformIO支持30多個平臺,其中包括:Atmel AVR、Atmel SAM、ESP-32和8266、Kendryte K210、以及Freescale Kinetis等。同時它也能夠支持諸如Arduino、ESP-IDF、Arm Mbed、Zephyr等20多種框架,以及750多個平臺等不同主板。在上述這些平臺上,該擴展將幫助您編寫代碼(包括:代碼完成和代碼導航等),管理依賴關系,構建與調試,以及使用串行端口監視器與自己的設備進行交互。
該擴展工具的另一個有趣功能是:能夠將現有的Arduino項目轉換為PlatformIO格式。據此,您可以更輕松地與同事(或他人)共享自己的代碼,以利用PlatformIO的高級庫管理功能(請參見https://docs.platformio.org/en/latest/librarymanager/index.html)。例如:它可以僅基于您包含在代碼中的頭文件,自動提取所用到的第三方代碼庫。
Azure物聯網工具針對VS Code的擴展實質上是一個擴展捆綁包。作為物聯網的邊緣擴展和設備工作臺(Device Workbench),您只需單擊Azure IoT Hub Toolkit即可完成安裝。
當您想將設備連接到云端時,Azure IoT Hub為您提供了管理設備,收集設備遙測(telemetry),以及路由等所有必需的服務。使用Azure IoT Hub擴展所提供的IDE,您可以輕松地在Azure訂閱服務中配置IoT Hub的實例,配置設備,以及監視它們發送的數據等方面。
另外,如果您有興趣使用基于容器的架構,來構建智能化的物聯網網關,那么IoT Edge一定能夠助您一臂之力。憑借其專用的擴展,您可以輕松地構建出自定義的物聯網邊緣模塊,并將其部署到那些連接著IoT Hub的邊緣設備上。而且此類擴展并不限于設備是模擬運行在開發階段的電腦上,還是真實的設備之上。
最后,Device Workbench可以幫助您快速啟用各種真實的物聯網設備。通過提供一整套工具,它能夠幫助您構建出物聯網的即插即用設備(請參見https://docs.microsoft.com/en-us/azure/iot-pnp/)。當然,Workbench也可以使用自帶的多種案例,將Azure IoT部署到實際設備上。
而且,令人欣喜的是Azure 物聯網工具的擴展程序會每隔幾周推出一些不錯的更新與新功能。具體請參見:https://devblogs.microsoft.com/visualstudio/tag/iot/。
眾所周知,物聯網開發不僅僅是為嵌入式設備編寫代碼。通常情況下,您需要與位于遠程的邊緣網關,或是那些位于云端服務器容器中的文件夾進行交互。雖然您可以使用SSH、以及SCP來同步本地和遠程的開發環境,但是該過程往往極為繁瑣。
如上圖所示,遠程開發擴展包則能夠允許您打開在容器中、或遠程計算機上的任何文件夾,然后就像處理本地資源一樣去使用各種VS Code。
為了測試REST API,我們往往需要創建和測試相應的REST、SOAP或GraphQL請求。有時,您甚至需要將查詢保存到云端,以方便與同事共享。
REST Client擴展可以將任何擴展名為.http或.rest的文件,轉換為可執行記事本文件,以方便您在其中輕松地執行各種查詢任務。
在構建端到端的物聯網解決方案時,您很可能會依賴第三方的服務,并且使用某種形式的REST API去與之進行交互。例如:您可能需要依賴氣象服務,作為自己預測性計算的一部分。以下是我與伙伴共享某些查詢的一個示例。它展示了如何使用Azure Maps API計算處理路線,以及如何渲染地圖中的圖塊。
下圖展示了借助REST Client擴展,如何實現實時的查詢效果。
原文標題:Top 5 VS Code Extensions for IoT Developers,作者:Benjamin Cabé
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】