将C ++类暴露给python

时间:2019-12-12 00:18:24

标签: python c++

请原谅,我是一位负责编程的工程师。我不是程序员。我对python有点熟悉。我的目标是使这台收音机使用树莓派3正常工作,但是收音机的所有代码都是用c ++编写的。我需要将这些c ++类公开给python,尽管我正在取得进步,但是我被困住了。 在此类中,有一个打开无线电的功能(SX1272 :: ON()),并且在此函数中,它调用setMaxCurrent函数...

uint8_t SX1272::ON()
{
     uint8_t state = 2;

     #if (SX1272_debug_mode > 1)
         printf("\n");
         printf("Starting 'ON'\n");
     #endif

    setMaxCurrent(0x1B);

int8_t SX1272::setMaxCurrent(uint8_t rate)
{
    int8_t state = 2;
    byte st0;

    #if (SX1272_debug_mode > 1)
        printf("\n");
        printf("Starting 'setMaxCurrent'\n");
    #endif

....

我已经开始用python包装此类,但是编译后,出现以下错误……

PyObject* ON(PyObject* self, PyObject* args)
{
    PyObject* SX1272Capsule = NULL;

    SX1272* sx1272 = (SX1272*)PyCapsule_GetPointer(SX1272Capsule, "SX1272Ptr");
    sx1272->ON();
    return Py_BuildValue("i", 0);
}

PyObject* setMaxCurrent(PyObject* self, PyObject* args)
{
    PyObject* SX1272Capsule = NULL;
    uint8_t rate;

    PyArg_ParseTuple(args, "b", &SX1272Capsule, &rate);

    SX1272* sx1272 = (SX1272*)PyCapsule_GetPointer(SX1272Capsule, "SX1272Ptr");
    sx1272->setMaxCurrent(rate);
    return Py_BuildValue("");
}

setMaxCurrent部分出了问题。不确定是什么???我希望这是有道理的,也希望有人可以指出我正确的方向。谢谢

0 个答案:

没有答案
相关问题