【问题标题】:getting None instead of a integer value [closed]得到无而不是整数值[关闭]
【发布时间】:2021-12-30 16:56:37
【问题描述】:

我正在从 python 调用 c++ 代码,我想知道为什么我没有从返回 int 的函数返回整数值。我一直在 python 中得到 None。

这是我的 C++ 代码:

#include <wiringPi.h>
#include <wiringPiI2C.h>
#include <chrono>
#include <iostream>
#include <thread>
#include <unistd.h>
using namespace std;

class Ultrasonic {
    public:
        int returnDistance() {
            int fd;
            fd=wiringPiI2CSetup(0x70) ;//i2c addres
            //unsigned char arr[2]={00,0x51};//register port and command
            int data;

            wiringPiI2CWriteReg8(fd,00, 81);
            sleep(1);
            data = wiringPiI2CReadReg8(fd,3);
            cout << "datatype of data is: " << typeid(data).name() << endl;
            return data;
    }
};

int main(){

    Ultrasonic ultrasonic;

    ultrasonic.returnDistance();

    return 0;

}

extern "C" {
    Ultrasonic* Ultrasonic_new(){ return new Ultrasonic(); }
    int Ultrasonic_returnDistance(Ultrasonic* ultrasonic){ return ultrasonic -> returnDistance(); }
}

这是我的python代码:

# import the modules
from base64 import encode
from ctypes import cdll
import socket, time

lib3 = cdll.LoadLibrary('./libUltra.so')

class Ultrasonic(object):

     # constructor
    def __init__(self):
  
        # attribute
        self.obj = lib3.Ultrasonic_new()
    
    def returnDistance(self):
        lib3.Ultrasonic_returnDistance(self.obj)

ultra = Ultrasonic()

print(type(ultra))
print(type(ultra.returnDistance()))

这是我得到的输出:

ma​​in.Ultrasonic'>

数据的数据类型是:i(代表整数)

(应该是整数)

如果重要的话,我会使用这些命令:

g++ -c -fPIC ultra.cpp -o ultra.o -lwiringPi

g++ -shared -Wl,-soname,libUltra.so -o libUltra.so ultra.o -lwiringPi

【问题讨论】:

  • python 函数returnDistance() 不返回任何内容。
  • 您的 Python 包装器中缺少返回值
  • @AndyG 是的,谢谢你现在也看到了!

标签: python c++ linux


【解决方案1】:

修复您的 Python returnDistance 函数以返回值:

    def returnDistance(self):
        return lib3.Ultrasonic_returnDistance(self.obj)

【讨论】:

  • 成功了!谢谢老兄!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-21
  • 1970-01-01
  • 1970-01-01
  • 2021-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多