得到无而不是整数值[关闭]
Posted
技术标签:
【中文标题】得到无而不是整数值[关闭]【英文标题】: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()))
这是我得到的输出:
数据的数据类型是: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 是的,谢谢你现在也看到了!
【参考方案1】:
修复您的 Python returnDistance
函数以返回值:
def returnDistance(self):
return lib3.Ultrasonic_returnDistance(self.obj)
【讨论】:
成功了!谢谢老兄!以上是关于得到无而不是整数值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章