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