运行 在 esp-32 上使用 micropython 的 c++ 程序

Running c++ program using micropython on esp-32

我想 运行 我的 C++ 程序使用 micropython 运行 在 esp-32 板上完美。现在我想 运行 它使用 micropython。为此,我指的是

https://github.com/stinos/micropython-wrap 这个包装器。

我创建了 foo.cpp 和 test.py

#include <micropython-wrap-master/functionwrapper.h>

//function we want to call from within a MicroPython script
std::vector< std::string > FunctionToBeCalled ( std::vector< std::string > vec )
{
  for( auto& v : vec )
    v += "TRANSFORM";
  return vec;
}

//function names are declared in structs
struct CppFunction
{
  func_name_def( TransformList )
};

extern "C"
{
  void RegisterMyModule(void)
  {
    //register a module named 'foo'
    auto mod = upywrap::CreateModule( "foo" );

    //register our function with the name 'TransformList'
    //conversion of a MicroPython list of strings is done automatically
    upywrap::FunctionWrapper wrapfunc( mod );
    wrapfunc.Def< CppFunction::TransformList >( FunctionToBeCalled );
  }
}

test.py

import foo

print(foo.TransformList(['a', 'b']))  # Prints ['aTRANSFORM', 'bTRANSFORM']

但无论我怎样尝试,它都得到了

ERROR   thonny.plugins.micropython.backend: Problem adding Expr handlers
Traceback (most recent call last):
  File "/Applications/Thonny.app/Contents/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/thonny/plugins/micropython/backend.py", line 1235, in _add_expression_statement_handlers
    root = ast.parse(source)
  File "/Applications/Thonny.app/Contents/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ast.py", line 50, in parse
    return compile(source, filename, mode, flags,
  File "<unknown>", line 1
    python test1.py
           ^
SyntaxError: invalid syntax
Traceback (most recent call last):
  File "<stdin>", line 1
SyntaxError: invalid syntax

据我所知,在我可以 运行 cpp 程序之前,我需要 运行 makefile。但是没有可用的步骤解释我如何在 esp-32

上使用 micropython 构建 makefile

感谢任何帮助

您链接到的存储库不允许您从 MicroPython 中“运行”一个 C++ 程序。您不能像您尝试的那样在 运行 时间将 C 或 C++ 代码导入 MicroPython。 C 和 C++ 必须使用 C/C++ 编译器编译。

您引用的存储库允许您通过编译自己的 C++ 函数并将它们包含在 MicroPython 固件中来扩展 MicroPython。为此,您必须在 Linux、Mac 或 Windows 计算机上重建 MicroPython 本身。

正如其自述文件所说:

Integrating and Building

First clone this repository alongside the MicroPython repository, then refer to the way the tests module is built and create your own modules in the same way.

要使用它,您需要克隆 the MicroPython repo,在其中创建您自己的模块,重建 MicroPython,然后使用新的 MicroPython 固件重新刷新您的 ESP32。

您可以在 MicroPython 存储库中找到有关构建 MicroPython 和 MicroPython 模块的更多信息。