生成代码以与不需要重新编译的正在运行的cpp应用程序接口的好方法是什么?

2024-04-24 09:30:28 发布

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

我正在尝试创建一个后端框架,通过串行连接与硬件进行交互。我需要能够准确地指定这些硬件模块如何在没有重新编译和在资源有限的系统上运行的情况下进行交互。

我已经有了正在被重用的cpp代码,它可以与硬件进行交互,并具有向设备发送消息的广泛功能。你知道吗

运行时影响是一个重要的考虑因素,它运行在一个非常有限的arch发行版上,由于硬件原因,我们不想做太多更改。你知道吗

对我来说,使用一种脚本语言进行接口是最有意义的,这种脚本语言可以很容易地生成,并具有一组可以在命令中加载的对cpp基的引用。(有点像插件系统)

Python-是一个非常好的选择,但我几乎没有使用嵌入式Python的经验,我已经研究过它,我想我可能会困惑的是,如果没有pybind11和嵌入式Python这样的东西一起工作,解释脚本将如何链接到原始程序中的功能。宾德当然有吸引力。请不要助推-可能有点。你知道吗

LUA是一个健壮的选项,经过了很好的测试,但在命令下生成要困难一些。LuaBridge也有我想要的功能。最担心的是运行时影响,但我当然不是专家。你知道吗

只需像普通人一样在cpp中完成整个过程并加载库-这是一个可靠的选项,但很可能是最难轻松生成和运行语法检查的选项。你知道吗

使用脚本语言完成整个过程,并消除编译器的开销——我的意思是技术上这是一个选项

当然,这些并不是所有的选择,但这远远超出了我的专业领域,我认为这将是有益的讨论。你知道吗

我真的很想知道我应该花时间研究什么。我已经花了太多的时间研究pybind,我发现自己晚上睡不好觉。你知道吗

理想情况下,此工作流的运行方式如下:

在主控制器上:

  1. 运行接口程序(cpp)

  2. 接口程序进行诊断并检查模块状态(已完成)

  3. 接口检查运行脚本以执行模块功能

剧本:

  1. 从某些来源生成

  2. 运行测试以验证生成没有语法错误

  3. 移动到一个文件夹中,接口程序可以在其中获取它(以“完全”安全的方式)我开玩笑的,我知道该设置的问题,但我们现在不考虑它

那是超长的,我很抱歉,我只是很失落,走出了我的舒适区。你知道吗

是的,我很抱歉我没有解释为什么生成的代码很重要。我们构建了一个非常简单的顶级gui来与硬件交互,并且需要将其转换为一个脚本来与控制器的主界面交互。你知道吗

我昨晚想到的另一个选择是:

编写一个非常简单的自定义脚本语言,我可以在cpp端进行解析并以这种方式链接


Tags: 模块代码命令程序功能脚本硬件链接
1条回答
网友
1楼 · 发布于 2024-04-24 09:30:28

如果您正在生成一个脚本,那么您可能可以将事情简化为一个简单的字节码来进行解释。这样你就不必去搞语法分析或语法验证了。每个“指令”可以是一个简单的操作码,后跟零个或多个操作数,其中每个操作数将是整数、浮点或字符串(以及硬件支持/需要的任何其他基本数据类型)。您可以使用类似msgpack的方法对指令进行紧凑的编码和解码。你知道吗

如果该模型起作用,您可以逐渐在开发人员端添加工具,例如最小的汇编器,甚至是生成字节码的脚本解释器,从而避免受限硬件环境中的任何复杂性。你知道吗

相关问题 更多 >