【问题标题】:Running c++ program using micropython on esp-32在 esp-32 上使用 micropython 运行 c++ 程序
【发布时间】:2021-10-08 18:37:24
【问题描述】:

我想使用在 esp-32 板上完美运行的 micropython 运行我的 C++ 程序。现在我想使用 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

任何帮助表示赞赏

【问题讨论】:

    标签: c++ esp32 micropython


    【解决方案1】:

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

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

    正如其自述文件所说:

    集成和构建

    首先将此存储库与 MicroPython 存储库一起克隆,然后 参考测试模块的构建方式并创建您自己的模块 以同样的方式。

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

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

    【讨论】:

    • 非常感谢您给我正确的指导。这真的很有帮助。您是否有任何参考链接解释了如何添加 c++ 模块并指导我如何重建 micropython
    猜你喜欢
    • 2021-11-28
    • 2010-10-01
    • 1970-01-01
    • 2014-11-20
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    相关资源
    最近更新 更多