我给一个数组作为C代码的输入。你知道吗
C代码如下:
int ECG(int* ECG_sample)
{
for (int i=0;i<sizeof(ECG_sample);i++)
{
ecg_wave_sample = ECG_sample[i];
Filter_CurrentECG_sample(&ecg_wave_sample, &ecg_filterout);
Calculate_HeartRate(ecg_filterout,&global_HeartRate); // calculate HeartRate
printf("%d\n",global_HeartRate);
}
return global_HeartRate;
}
我需要用python调用这个函数。我已将文件名保存为ECG.c
。我使用命令cc -fPIC -shared -o ECG.so ECG.c
。你知道吗
我用ctypes
这样调用c函数
import ctypes
from ctypes import *
import numpy as np
so_file = "/home/yasaswini/hp2-notebooks/notebooks/Algorithm_testing_on_database/ECG.so"
ECG_sample = np.zeros(2000,dtype=np.int32)
ECG_sample = [4,5,6....6,7]
main_1 = CDLL(so_file)
print(type(main_1)) \\line8
print(main_1.ECG(ECG_sample))
我现在得到这个错误,即使两个输入都是数组和int类型。你知道吗
ArgumentError Traceback (most recent call last)
<ipython-input-231-c871feac52f7> in <module>
2 #print(main.ECG(ECG_sample))
3 #fun(ctypes.c_void_p(ECG_sample.ctypes.data))
----> 4 print(main_1.ECG(ECG_sample))
ArgumentError: argument 1: <class 'TypeError'>: Don't know how to convert parameter 1
我还尝试了main_1(ctypes.c_void_p(ECG_sample.ctypes.data))
而不是line8。但我有个错误
AttributeError Traceback (most recent call last)
<ipython-input-238-c96b4ca485d7> in <module>
1 #while(1):
2 #print(main.ECG(ECG_sample))
----> 3 main_1(ctypes.c_void_p(ECG_sample.ctypes.data))
4 #print(main_1.ECG(ECG_sample))
AttributeError: 'list' object has no attribute 'ctypes'
有人能帮我解决这个问题吗?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐