2016-02-03 64 views
0

Arduino有一些很好的C++庫,我想在PC平臺上使用。另一個優點是可以在PC上測試和調試Arduino代碼。在PC上進行調試要容易得多。在PC平臺上使用Arduino C++庫

一個庫,我特別熱衷於爲字符串庫。 https://www.arduino.cc/en/Reference/String

鑑於Arduino庫是開源的,是否有可能以某種方式將Arduino字符串庫導入C++ IDE(如Visual Studio)?如何才能做到這一點?

回答

2

string庫大多是免費的特定於平臺的依賴性,所以你可以簡單地添加WString.h和WString.cpp到您的源文件。你可能必須做一些移植(清理一些宏,我懷疑),但沒有理由不應該最終構建。

許多其他圖書館將要到港相當多的困難你的個人電腦;任何接觸MCU外圍設備的東西都不能很好地傳輸。

2

我一直在掙扎和關閉這個問題在過去的三個月,我已經花了幾百小時,我盯着電腦屏幕,想的東西,記錄結果,嘗試其他的東西(重複)。我在互聯網上進行了大量的挖掘,發現很少構成關於此主題的權威資源。這就是說,這是我發現的作品。一個需要注意的是這些指令是基於ESP32硬件的。請注意,這仍然是一個在製品,因爲還有一些清理工作要做。還要注意,這樣可以避免必須執行手動/命令行任務,如「makefile」。如果您使用Arduino IDE環境,您可能會喜歡這一點。

首先,對發展環境的一些細節:

  • 安裝MS Visual Studio的社區版(免費)。我安裝「的桌面開發C++選項」 (Visual Studio link)
  • 請注意,我開發代碼的ESP32模塊。有很多不同的模塊可供選擇,它們的成本很低(在突破板上約爲7美元),非常強大(與Arduino硬件相比),並且具有嵌入式藍牙和WiFi。如果您正在使用其他硬件,則其餘一些步驟可能不適用/將需要更改。
  • 安裝驅動程序(這些是用來使ESP32被自動分配一個COM端口)(Silabs link)
  • 在這個環節中的描述安裝VisualGDB (download link)爲MSVS:(VisualGDB tutorial)請注意,下載爲鏈接描述的ESP32工具鏈需要很長的時間(一個小時?),耐心等待。
  • 請注意文件夾\ SysGCC \ esp32位於您的計算機上(很可能位於C驅動器的根目錄中)。這是您在上一步安裝的ESP32工具鏈。
  • 作爲VisualGDB教程中描述的VisualGDB安裝步驟的一部分,您必須更改「路徑映射」。此時,系統提示安裝程序從VisualGDB下載CMake.exe。在現場「的絕對路徑(以/開頭),」你需要我上面描述的進入到SysGCC路徑(我的是C:\ SysGCC \ esp32)
  • 此時,你應該能夠連接一個ESP32模塊到您的計算機並使用VisualGDB中的「新建嵌入式項目」嚮導創建一個簡單的項目。我一般選擇「LEDBlink」。請注意,我使用的大多數ESP32板都在GPIO 2上有內置LED,而不是GPIO 5(這是嚮導中的默認設置)。

到目前爲止,這麼好。確認您可以使LED閃爍。拍手,高興地大聲喊叫,拿起啤酒,或者做任何你想要慶祝的事情。在這一點上,我們並沒有真正做太多的工作來幫助導入Arduino代碼,所以這裏是真正開始的地方。

  • 請注意LEDBlink項目文件夾在硬盤上的位置。
  • Espressif on Github下載ESP32的Arduino內核。
  • 將下載的Arduino Core中的所有* .h,* .c和* .cpp文件複製到您的Blink項目文件夾中,除了「variants」文件夾中的文件外。我最終複製了77個文件。實際上,我所做的是首先創建一個名爲「批量庫」的新文件夾,將所有源文件和頭文件複製到其中,以便爲每個項目執行此步驟。
  • 「variants」文件夾包含一大堆子文件夾,每個子文件夾都包含一個名爲「pins_arduino.h」的文件。您必須找到您的特定ESP32模塊的文件夾,並將特定的「pins_arduino.h」文件放入您的項目文件夾中。
  • 在你的項目的源代碼,添加以下行:

    #include "Arduino.h" 
    

生成項目,你應該得到任何錯誤。 請注意,在項目的MSVS Solution Explorer窗口中,在External Dependencies下,您將看到複製到項目文件夾中的所有* .h文件的列表。這不會馬上發生,但在MSVS應用程序的左下角,您會看到後臺正在進行的一些事情,解析文件等,然後出現外部依賴關係。

現在app_main()加上下面幾行:

initArduino(); 
    Serial.begin(115200); 

如果重建項目鏈接過程中你會得到一些錯誤,因爲所有的* .cpp文件的文件引用的不是( )包含在你的項目中。

  • 在解決方案資源管理器中,右鍵單擊「源文件」和「添加現有項目」和所有的* .c和* .cpp文件添加到項目中(而不是* .h文件)
  • 重建你的項目。你很可能會得到一些「(某事).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。打開串口監視器(MSVS窗口頂部附近的按鈕,位於COM端口下拉菜單的右側),並確認您收到了「Hello World!」。 LED閃爍時的消息。

現在,你給我關於「傾銷」的所有庫,頭和源文件添加到我的項目文件夾,任何悲痛之前我意識到這是不是最好的做法。如果您按照我的建議創建了「批量庫」文件夾,則應該能夠更好地組織您的項目。這對讀者來說只是一個簡單的步驟。

由於此解決方案依賴於ESP32硬件和VisualGDB,因此它不適用於所有人。但是,它可以讓您從Arduino IDE後臺的「奧祕」中遷移出來,並讓您爲更好的源代碼控制和項目開發打下基礎。有關討論,請參閱this link on sysprogs.com