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