将Python脚本的输出链接到C ++程序的输入

问题描述 投票:1回答:3

我的python脚本将模拟到数字转换器的值输出到Raspberry Pi的控制台。为了操作这些数据,我需要将此输出发送到C ++文件的输入。我应该将我的python代码包装为C ++并将其包含在程序中,还是有更简单的方法直接传递数据?

python c++ raspberry-pi
3个回答
2
投票

要传递这么少量的数据,我建议使用bash管道。这似乎是最简单的方法。

python script.py | ./cpp_prog

0
投票

我的第一个想法就是将你的脚本嵌入到C ++程序中。 Python本身建议使用this。这将是最干净的方式。因此,当您从ADC获取新数据时,您可以控制。

摘自链接:

嵌入Python的最简单形式是使用非常高级的接口。此接口旨在执行Python脚本,而无需直接与应用程序交互。例如,这可以用于对文件执行某些操作。

#include <Python.h>

int
main(int argc, char *argv[])
{
  Py_SetProgramName(argv[0]);  /* optional but recommended */
  Py_Initialize();
  PyRun_SimpleString("from time import time,ctime\n"
                     "print 'Today is',ctime(time())\n");
  Py_Finalize();
  return 0;
}

应在Py_Initialize()之前调用Py_SetProgramName()函数,以通知解释器有关Python运行时库的路径。接下来,使用Py_Initialize()初始化Python解释器,然后执行打印日期和时间的硬编码Python脚本。之后,Py_Finalize()调用关闭解释器,然后关闭程序结束。在实际程序中,您可能希望从其他源获取Python脚本,可能是文本编辑器例程,文件或数据库。通过使用PyRun_SimpleFile()函数可以更好地从文件中获取Python代码,这样可以省去分配内存空间和加载文件内容的麻烦。

等等等等。这将指导您的方式。祝你的项目顺利=)


0
投票

如果你的意思是在运行时,可能最简单的方法是通过std::system调用

来自https://en.cppreference.com/w/cpp/utility/program/system

#include <cstdlib>
#include <fstream>
#include <iostream>

int main()
{
    std::system("ls -l >test.txt"); // execute the UNIX command "ls -l >test.txt"
    std::cout << std::ifstream("test.txt").rdbuf();
}

可能的输出:

total 16
-rwxr-xr-x 1 2001 2000 8859 Sep 30 20:52 a.out
-rw-rw-rw- 1 2001 2000  161 Sep 30 20:52 main.cpp
-rw-r--r-- 1 2001 2000    0 Sep 30 20:52 test.txt

而只是运行你的python而不是。

© www.soinside.com 2019 - 2024. All rights reserved.