这里是原型驻留在DLL中的C函数:
extern "C" void__stdcall__declspec(dllexport) ReturnPulse(double*,double*,double*,double*,double*);
在另一个线程,我问了一下如何正确地创建和发送所需的参数给这个函数。
这里是螺纹: 我如何把这个包的C函数,使用多个参数,与ctypes的?
所以我用在上面的线程的好资料,但现在我得到这个错误:WindowsError:异常:访问冲突写0x00001001
我不能确定如何进行。 我在Windows XP上 - 如果我登录到管理员帐户,将是解决这一问题? 或者,这是Python的内存对象是不可变的问题吗?
谢谢大家!
编辑相关的Python:
FROGPCGPMonitorDLL = windll.LoadLibrary('C:\Program Files\MesaPhotonics\VideoFROG 7.0\PCGPMonitor.dll')
#Function argument:double* pulse
sizePULSE = 2 ##Manual is super unclear here
pulse = c_double * sizePULSE
ptrpulse = pulse()
#Function argument:double* tdl
sizeTRACE = FROGPCGPMonitorDLL.GetSize()
if sizeTRACE == 0 :
sizeTRACE = 1 #Manually set size to 1 for testing purposes
print "Size of FROG trace is zero. Probably not right."
tdl = c_double*sizeTRACE
ptrtdl = tdl()
#Function argument:double* tdP
sizeTRACE = FROGPCGPMonitorDLL.GetSize()
if sizeTRACE==0:
sizeTRACE=1
print "Size of FROG trace is zero. Probably not right."
tdP = c_double*sizeTRACE
ptrtdP = tdP()
#Function Argument:double* fdl
sizeTRACE = FROGPCGPMonitorDLL.GetSize()
if sizeTRACE==0:
sizeTRACE=1
print "Size of FROG trace is zero. Probably not right."
fdl = c_double*sizeTRACE
ptrfdl = fdl()
#Function Argument: double* fdP
sizeTRACE = FROGPCGPMonitorDLL.GetSize()
if sizeTRACE==0:
sizeTRACE=1
print "Size of FROG trace is zero. Probably not right."
fdP = c_double*sizeTRACE
ptrfdP = fdP()
FROGPCGPMonitorDLL.ReturnPulse(ptrpulse, ptrtdl, ptrtdP,ptrfdl,ptrfdP)
编辑补充一些相关的代码! 我只是写一个简单的脚本来获取每个设备的功能第一个工作日。 变量sizeTRACE可重复使用的,我知道,但现在它只是测试代码和设备未挂接,这样的getSize()将返回零。 乘以零会杀了我的嗡嗡声,所以我就强制为1现在。 如果这是不明确的,我道歉,并会尝试编辑这个职位。
第二个编辑:有人建议在设备堵塞,看看是否有帮助。 我刚刚插入的青蛙,但我仍然得到同样的错误。 很奇怪,我宁愿无能。 在任何情况下,再次感谢大家!