使用MicroPython加载和编译python文件,而不需要系统文件

2024-06-02 09:09:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用的MicroPythonGithub。在

我想在MicroPython上运行一些非常简单的代码,我用自己的代码成功地从Python调用了C函数,反之亦然。但是,它只适用于Windows(visualstudioide)。在

现在,我想使用CrossWorksIDE将这些代码加载到Cortext M4芯片上。当我试图将代码从visualstudio复制并粘贴到crossworks时,需要做一些工作来确定依赖关系和生成的头文件。在

它只适用于printf等基本函数,但忽略了我的函数调用。原因是它试图查找我的Python文件,但找不到它。在

下面是我必须加载和编译Python代码的代码:

void compile_pyfile(const char* fileName) {
    //load and compile python src file
    mp_lexer_t *lex = mp_lexer_new_from_file(fileName);
    mp_parse_tree_t pt = mp_parse(lex, MP_PARSE_FILE_INPUT);
    mp_obj_t module_fun = mp_compile(&pt, lex->source_name, MP_EMIT_OPT_NONE, false);
    mp_call_function_0(module_fun);
}

下面是调用Python编译的输出的函数:

^{pr2}$

我不知道在没有系统文件的情况下需要做些什么。下面是Github在micropython master中提供的类似代码。这是一个字符串而不是一个文件。在

^{3}$

Tags: 文件函数代码ptparsempfilenamefile
1条回答
网友
1楼 · 发布于 2024-06-02 09:09:26

为了让MicroPython调用C函数,它们需要在解释器中注册。这里有一个古老的例子:https://github.com/dhylands/micropython/commit/b801dbd39eb323494f946c13362f4957f5d7281b这将创建一个名为c_sample的模块。在

如果您查看对mpconfigport.h文件的更改,您将看到它在其中向MICROPY_PORT_内置模块添加&mp_module_c_示例 这就是import-c\u-sample工作的原因。在

如果没有文件系统,您还可以将python源文件和预编译字节码(.mpy)文件作为冻结文件包括在内,并且可以使用这些文件。teensey端口没有文件系统,使用了这种技术。在

相关问题 更多 >