Arduino有一些很好的C++庫,我想在PC平臺上使用。另一個優點是可以在PC上測試和調試Arduino代碼。在PC上進行調試要容易得多。在PC平臺上使用Arduino C++庫
一個庫,我特別熱衷於爲字符串庫。 https://www.arduino.cc/en/Reference/String
鑑於Arduino庫是開源的,是否有可能以某種方式將Arduino字符串庫導入C++ IDE(如Visual Studio)?如何才能做到這一點?
Arduino有一些很好的C++庫,我想在PC平臺上使用。另一個優點是可以在PC上測試和調試Arduino代碼。在PC上進行調試要容易得多。在PC平臺上使用Arduino C++庫
一個庫,我特別熱衷於爲字符串庫。 https://www.arduino.cc/en/Reference/String
鑑於Arduino庫是開源的,是否有可能以某種方式將Arduino字符串庫導入C++ IDE(如Visual Studio)?如何才能做到這一點?
string庫大多是免費的特定於平臺的依賴性,所以你可以簡單地添加WString.h和WString.cpp到您的源文件。你可能必須做一些移植(清理一些宏,我懷疑),但沒有理由不應該最終構建。
許多其他圖書館將要到港相當多的困難你的個人電腦;任何接觸MCU外圍設備的東西都不能很好地傳輸。
我一直在掙扎和關閉這個問題在過去的三個月,我已經花了幾百小時,我盯着電腦屏幕,想的東西,記錄結果,嘗試其他的東西(重複)。我在互聯網上進行了大量的挖掘,發現很少構成關於此主題的權威資源。這就是說,這是我發現的作品。一個需要注意的是這些指令是基於ESP32硬件的。請注意,這仍然是一個在製品,因爲還有一些清理工作要做。還要注意,這樣可以避免必須執行手動/命令行任務,如「makefile」。如果您使用Arduino IDE環境,您可能會喜歡這一點。
首先,對發展環境的一些細節:
到目前爲止,這麼好。確認您可以使LED閃爍。拍手,高興地大聲喊叫,拿起啤酒,或者做任何你想要慶祝的事情。在這一點上,我們並沒有真正做太多的工作來幫助導入Arduino代碼,所以這裏是真正開始的地方。
在你的項目的源代碼,添加以下行:
#include "Arduino.h"
生成項目,你應該得到任何錯誤。 請注意,在項目的MSVS Solution Explorer窗口中,在External Dependencies下,您將看到複製到項目文件夾中的所有* .h文件的列表。這不會馬上發生,但在MSVS應用程序的左下角,您會看到後臺正在進行的一些事情,解析文件等,然後出現外部依賴關係。
現在app_main()加上下面幾行:
initArduino();
Serial.begin(115200);
如果重建項目鏈接過程中你會得到一些錯誤,因爲所有的* .cpp文件的文件引用的不是( )包含在你的項目中。
重建你的項目。你很可能會得到一些「(某事).h:沒有這樣的文件或目錄」的錯誤。那是因爲在撰寫本文時,Espressif提供的Arduino核心並不完整。在錯誤列表中,記下錯誤的文件位置,並從解決方案資源管理器中的項目中刪除此文件。例如,我有以下錯誤: 「vfs_api.h:沒有這樣的文件或目錄」,並且錯誤位於文件SD.cpp。所以我從項目中刪除了SD.cpp。一次迭代一個文件,直到獲得一個沒有錯誤的構建。在刪除文件時做筆記(不要刪除它們),以便在出錯時添加它們。根據您添加到項目中的源文件,您可能需要在此進行一些額外的調試。請耐心等待,並重新審視在重建過程中生成的錯誤列表,並期待一點反覆試驗。當你有一個沒有錯誤編譯的項目時,用另一個啤酒(或兩個)慶祝。
在你的項目的源代碼,添加一行:
Serial.println("Hello World!");
我把這個在while(1)閃爍任務功能的迴路。每當LED閃爍時,這行代碼將寫入串行端口一次。由於Serial.println是一個Arduino函數,因此您可以放心,至少此 Arduino庫已啓動並正在運行。我相信你應該能夠在你的項目中添加更多的#includes(比如Wire.h),並以相同的方式繼續(但現在就等着)。
現在,你給我關於「傾銷」的所有庫,頭和源文件添加到我的項目文件夾,任何悲痛之前我意識到這是不是最好的做法。如果您按照我的建議創建了「批量庫」文件夾,則應該能夠更好地組織您的項目。這對讀者來說只是一個簡單的步驟。
由於此解決方案依賴於ESP32硬件和VisualGDB,因此它不適用於所有人。但是,它可以讓您從Arduino IDE後臺的「奧祕」中遷移出來,並讓您爲更好的源代碼控制和項目開發打下基礎。有關討論,請參閱this link on sysprogs.com。