我正在尝试在 Raspi (Pololu VL53L1X) 上使用飞行时间传感器,但 python 中没有该传感器的库。原始制造商为传感器提供了 C API,但我不知道如何在我的 python 代码中使用 API 函数。有人可以帮助我了解在 Raspi 上使用传感器可以做什么,而无需从头开始编写库吗?我做了一些研究,几乎每个人都建议在 python 中包装 C 库(在本例中是 API?),但我不确定如何做到这一点。任何想法或建议都是有值(value)的。
附注有 Arduino 传感器的库,但我无法使用 Arduino,我需要它在 Raspi 上运行,并在可能的情况下使用 python。我是 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_fun(4,5)
9
引用号:https://www.journaldev.com/31907/calling-c-functions-from-python
PS:但就你而言,我仍然认为最好选择 pimoroni vl53l1x-python package
关于python - 在 Raspi 上使用带有 Python 的 C 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59278605/