得到无而不是整数值[关闭]

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()))

这是我得到的输出:

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 是的,谢谢你现在也看到了! 【参考方案1】:

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

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

【讨论】:

成功了!谢谢老兄!

以上是关于得到无而不是整数值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

v-for 范围期望一个整数值但得到 NaN

无法让我的 jsp 存储我的结果集中的整数值

Java 8 Stream得到最少

为什么math.log接受大整数值?

将文本设置为整数值

c++ c语言 - 运算符和类型转换