我必须控制一些由C接口控制的硬件。 C接口是C ++头文件,它包含一些函数,一个叫做set_mirror() - 我需要它。此C文件还有一个名为voltage的int数组,由set_mirror使用。 我正在尝试使用cython来构建一个python函数,它实现了一个set_mir(伏特)函数。要做到这一点,我必须设置电压阵列,但我不知道如何访问它:
我的pxy文件:
cdef extern from 'mmdm_lin38usb.h':
int voltage[40]
int init_dac()
void close_dac()
void set_mirror()
init_dac()
def set_mir(volt):
for i in range(40):
# Only for testing, how to access to int array.
print voltage[i]
if len(volt)!=40:
raise "Need 40 values"
else:
volt=map(round,volt)
volt=map(int,volt)
voltage=volt
set_mirror()
答案 0 :(得分:1)
不清楚最终操作是什么:你想从伏特蟒蛇列表中设置40个值吗? 成40个整数的数组?我建议如下。如果可能的话 不要修改全局int数组。注意电压阵列是本地的。
import clib
cdef extern from 'mmdm_lin38usb.h':
int init_dac()
void close_dac()
void set_mirror(int *voltage)
init_dac()
cpdef set_mir(volt):
cdef int voltage[40]
if len(volt) != 40:
raise ValueError("Need 40 values")
for i from 0 <= i < 40:
print voltage[i]
voltage[i] = int(clib.round(volt[i]))
set_mirror(voltage)