在Raspi上将Python与C语言一起使用

问题描述 投票:0回答:1

我正在尝试在Raspi(Pololu VL53L1X)上使用飞行时间传感器,但是python中没有用于该传感器的库。原始制造商已为传感器提供了C API,但我不知道如何在我的python代码中使用API​​函数。有人可以帮助我了解我可以在Raspi上使用传感器而不必从头开始编写该库吗?我已经进行了一些研究,几乎每个人都建议将C库(在这种情况下为API?)包装在python中,但我不确定如何做到这一点。任何想法或建议都是有价值的。

P.S。有用于Arduino的传感器的库,但我不能使用Arduino,并且如果可能的话,我需要它在Raspi上运行并使用python。

python c api raspberry-pi3 sensor
1个回答
0
投票

为c库制作一个简单的python包装器。

我的工作目录中有以下文件

mylib.c

#include <stdio.h>

int sumof(int a, int b)
{
    return a+b;
}

wrapper.py

from ctypes import CDLL
so_file = "/path/to/my/work/dir/mylib.so"
my_c_lib = CDLL(so_file)

def sumof_fun(a,b):
    return my_c_lib.sumof(a,b)

您可以看到,我们在python包装器中使用共享库(.so文件)来创建该共享库,我们使用以下命令:

[$ gcc -fPIC -shared -o mylib.so mylib.c

现在在python中,我可以使用以下代码:

>>> import wrapper
>>> wrapper.sumof(4,5)
>>> wrapper.sumof_fun(4,5)
9

参考:https://www.journaldev.com/31907/calling-c-functions-from-python

© www.soinside.com 2019 - 2024. All rights reserved.