向python公开c++类

2024-09-30 06:14:18 发布

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

原谅我,我是一个工程师,负责编程。我不是程序员。我对python有点熟悉。我的目标是让这个收音机工作使用树莓皮3,但所有的收音机的代码都是用c++编写的。我需要向python公开这些c++类,我正在取得进展,但是我被卡住了。 在这个类中,有一个打开收音机的函数(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部分有问题。不确定什么???我希望这是有意义的,我希望有人能给我指出正确的方向。谢谢


Tags: 函数debugifrateonargspyobjectstate

热门问题