use*_*486 0 c++ string arduino visual-studio
Arduino 有一些很好的 C++ 库,我想在 PC 平台上使用它们。另一个优点是可以在 PC 上测试和调试 Arduino 代码。在PC上进行调试要容易得多。
我特别喜欢的一个库是 String 库。https://www.arduino.cc/en/Reference/String
鉴于 Arduino 库是开源的,是否可以以某种方式将 Arduino String 库导入到 Visual Studio 等 C++ IDE 中?如何才能做到这一点?
小智 5
在过去的三个月里,我一直在断断续续地解决这个问题,我花了几百个小时盯着我的电脑屏幕,尝试一些东西,记录结果,尝试其他东西(重复)。我在互联网上进行了大量的挖掘,但发现很少有关于这个主题的权威资源。话虽如此,这就是我发现的有效方法。需要注意的是,这些指令基于 ESP32 硬件。请注意,这仍然是一个正在进行的工作,因为还有一些清理工作要做。另请注意,这避免了必须执行手动/命令行任务,例如“makefile”。如果您以前使用过 Arduino IDE 环境,您可能会喜欢这一点。
首先介绍一下开发环境的一些细节:
到目前为止,一切都很好。确认 LED 可以闪烁。拍手、高兴地大喊、喝杯啤酒,或者做任何你想庆祝的事情。此时,我们还没有真正做太多事情来帮助导入 Arduino 代码,所以这里才是真正的乐趣开始的地方。
在您的项目源代码中,添加以下行:
#include "Arduino.h"
Run Code Online (Sandbox Code Playgroud)构建项目,您应该不会出现任何错误。请注意,在项目的 MSVS 解决方案资源管理器窗口中的“外部依赖项”下,您将看到复制到项目文件夹中的所有 *.h 文件的列表。这不会立即发生,但在 MSVS 应用程序的左下角,您会看到后台发生的一堆事情,解析文件等,然后会出现外部依赖项。
现在在 app_main() 中添加以下行:
initArduino();
Serial.begin(115200);
Run Code Online (Sandbox Code Playgroud)
如果您重建项目,您将在链接过程中遇到一些错误,因为对 *.cpp 文件的所有文件引用尚未包含在您的项目中。
重建您的项目。您很可能会收到一些错误“(something).h:没有这样的文件或目录”。这是因为在撰写本文时,乐鑫提供的 Arduino 核心还不完整。在错误列表中,记下错误的文件位置,然后从解决方案资源管理器的项目中删除该文件。例如,我遇到以下错误:“vfs_api.h:没有这样的文件或目录”,并且错误位于文件SD.cpp中。所以我从项目中删除了SD.cpp。继续迭代此步骤,每次一个文件,直到获得没有错误的构建。删除文件时记下笔记(不要删除它们),以便在出现错误时可以将它们添加回来。您可能需要在此处进行一些额外的调试,具体取决于您添加到项目中的源文件。当您查看重建期间生成的错误列表时,请保持耐心并期待一些尝试和错误。当您的项目编译没有错误时,再喝一杯(或两杯)啤酒庆祝一下。
在您的项目源代码中,添加以下行:
Serial.println("Hello World!");
Run Code Online (Sandbox Code Playgroud)我将其放入眨眼任务函数的 while(1) 循环中。LED 每次闪烁时,这行代码都会写入串行端口一次。由于 Serial.println 是一个 Arduino 函数,因此您可以放心,至少这个Arduino 库已启动并运行。我相信您应该能够向您的项目添加更多#includes(例如Wire.h)并以相同的方式继续(但现在请等待)。
现在,在您对将所有库、头文件和源文件“转储”到我的项目文件夹中感到悲伤之前,我意识到这不是最佳实践。如果您按照我的建议创建了“批量库”文件夹,您应该能够更好地组织您的项目。这为读者留下了一个简单的步骤。
由于该解决方案依赖于 ESP32 硬件和 VisualGDB,因此并不适合所有人。然而,它可以让您摆脱 Arduino IDE 幕后发生的“神秘”,并让您为更好的源代码控制和项目开发奠定基础。有关相关讨论,请参阅sysprogs.com 上的此链接。