通过Python与Arduino通信C ++程序

时间:2018-06-17 15:20:57

标签: python c++

我一直在努力解决这个问题。我必须与Arduino和C ++程序进行通信。我知道它在Python中很容易,但它必须在C ++中用于学校项目。所以我正在阅读很多内容,但没有人能帮助我。

所以我有一个简短的Python脚本,可以很好地与arduino进行通信,并且用Python编写。

communication.py:

import serial
ser = serial.Serial('/dev/ttyACM0', 9600)
def communicate(number): 
   ser.write(number)
   return ser.readline()

Arduino获取数字并以字符串形式返回光传感器的值。现在我希望这与C ++程序进行通信。我的C ++代码(这只是整个程序的一小部分)

mainwindow.cpp:

void MainWindow::run(){
while (ui->startstop->value() == 1){// as long that the program must run
    blockchange = 0;
    // get data from arduino
    Py_Initialize();
    const char* modulename = "communication";
    PyObject *pName = PyUnicode_FromString(modulename);
    PyObject *pModule = PyImport_Import(pName);
    if (pModule != NULL){
        PyObject *pDict = PyModule_GetDict(pModule);
        PyObject *pFunc = PyDict_GetItem(pDict, PyUnicode_FromString("communicate"));
        if (pFunc != NULL){
            PyObject_CallObject(pFunc, PyLong_FromLong(blockchange));
        }else{
            std::cout << "couldn't find func\n";
        }
    }else{
        std::cout << "pyhton module not found\n";
    }
}

它只提供“未找到python模块”。这意味着PyImport_Import(pName)返回NULL。有什么问题?

我使用Ubuntu 18.04,我的标准版本的Python是3.5,程序是用Qt Creator编写的。我尝试了很多东西,也没有Python,但我找不到任何有用的东西。我只希望我的Arduino从0到6读取一个int,并且C ++程序读取一个由“,”分隔的6个数字的字符串。

0 个答案:

没有答案