[英]Using Arduino C++ libraries on PC platform
Arduino有一些很好的C ++庫,我想在PC平台上使用。 另一個優點是可以在PC上測試和調試Arduino代碼。 在PC上進行調試要容易得多。
我特別熱衷的一個庫是String庫。 https://www.arduino.cc/en/Reference/String
假設Arduino庫是開源的,是否可以以某種方式將Arduino字符串庫導入到Visual Studio這樣的C ++ IDE中? 如何才能做到這一點?
在過去的三個月中,我一直在努力解決這個問題,並且花了幾百個小時盯着我的電腦屏幕,嘗試做一些事情,記錄結果,然后嘗試做其他事情(重復)。 我已經在互聯網上進行了大量的挖掘工作,卻發現很少有關於該主題的權威資源。 話雖如此,這就是我發現的工作原理。 請注意,這些指令基於ESP32硬件。 請注意,這仍在進行中,因為還有一些清理工作要做。 另請注意,這避免了執行手動/命令行任務,例如“ makefile”。 如果您來自使用Arduino IDE環境,則可能會感激不盡。
首先,關於開發環境的一些細節:
到現在為止還挺好。 確認您可以使LED閃爍。 拍拍手,大聲歡呼,喝啤酒,或做任何你想慶祝的事情。 在這一點上,我們還沒有做很多事情來幫助導入Arduino代碼,所以這才是真正有趣的地方。
在您的項目源代碼中,添加以下行:
#include "Arduino.h"
生成項目,您應該不會出錯。 請注意,在項目的“ MSVS解決方案資源管理器”窗口中的“外部依賴關系”下,您將看到復制到項目文件夾中的所有* .h文件的列表。 這不會立即發生,但是在MSVS應用程序的左下角,您會看到許多事情在后台進行,解析文件等,然后將顯示“外部依賴關系”。
現在在app_main()中添加以下行:
initArduino();
Serial.begin(115200);
如果您重建項目,則在鏈接過程中會遇到一些錯誤,因為對* .cpp文件的所有文件引用都尚未包含在項目中。
重建您的項目。 您很可能會收到“(something).h:無此類文件或目錄”的錯誤。 這是因為在撰寫本文時,Espressif提供的Arduino核心尚未完成。 在“錯誤”列表中,記下該錯誤的文件位置,然后在“解決方案資源管理器”中從項目中刪除此文件。 例如,我遇到以下錯誤:“ vfs_api.h:沒有這樣的文件或目錄”,並且錯誤位於文件SD.cpp中 。 所以我從項目中刪除了SD.cpp。 一次一次遍歷一個文件,直到獲得沒有錯誤的構建。 刪除文件時記下筆記(不要刪除它們),以便在出錯時可以重新添加它們。 根據您添加到項目中的源文件,您可能需要在此處進行一些其他調試。 請耐心等待並檢查您在重建過程中生成的錯誤列表時會遇到一些試錯。 當您的項目編譯無誤時,可再喝一兩啤酒。
在項目源代碼中,添加以下行:
Serial.println("Hello World!");
我把它放在了眨眼任務功能的while(1)循環中。 每次LED閃爍時,此行代碼將寫入串行端口。 由於Serial.println是Arduino函數,因此可以確保至少此 Arduino庫已啟動並正在運行。 我相信您應該能夠在項目中添加更多的#include(例如Wire.h),並以相同的方式進行操作(但請稍候)。
現在,在給我關於將所有庫,標頭和源文件“轉儲”到我的項目文件夾中的任何悲痛之前, 我意識到這不是最佳實踐。 如果按照我的建議創建了一個“大量庫”文件夾,則應該能夠更好地組織項目。 對於讀者來說,這僅是簡單的一步。
由於此解決方案依賴於ESP32硬件和VisualGDB,因此它不適用於所有人。 但是,它使您能夠擺脫Arduino IDE幕后發生的“謎”,並為更好的源代碼控制和項目開發奠定基礎。 有關相關討論,請參見sysprogs.com上的此鏈接 。
String庫大多數沒有特定於平台的依賴項,因此您只需將WString.h和WString.cpp添加到源文件中即可。 您可能需要進行一些移植(我懷疑是清理了一些宏),但是沒有理由不應該最終構建它。
許多其他庫將很難移植到您的PC上。 碰到MCU外圍設備的任何東西都不能很好地移植。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.