可以使用ctypes导入一个DLL导致对另一个DLL的调用失败(python ctypes)吗?

时间:2012-11-17 06:08:58

标签: dll ctypes

这是我在论坛上的第一篇文章。我是一个没有经验的程序员,他认为他几乎完成了他的第一个程序,只是遇到了路障。我非常感谢对此问题的一些见解。

我正在编写一个GUI来运行两个硬件:运动控制卡(Precision MicroControl)和数据采集卡(National Instruments)。到目前为止,我已成功使用Python的ctypes导入所需的DLL以单独运行设备。一切都很好。但是,当我尝试将两者一起使用时,特定的DAQ调用失败并生成NIDAQmx运行时错误以及Windows错误:

NIDAQ错误 - 50251'指定的软件组件不可用。该组件未加载' Windows错误“PYTHONW模块NIESXU.DELL在0167:6ef85ab5引起异常10H。”

运动控制卡的初始化是我程序中发生的第一件事。如果我跳过这部分程序,DAQ工作正常。事实上,当我使用matplotlib在我的程序中创建一个图形时,会出现一个非常简单的问题。程序在使用Tkinter“网格”调用时失败,可以通过排除运动控制调用来解决。

任何人都可以给我一个关于毛刺可能位置的指针吗?会对任何线索感激不尽。如果需要,我会尝试提供更多信息。

更多信息: Windows 98 SE, Precision MicroControl DCX-PC100, DAQ PCI-MIO-16XE-50, Python版本2.5

该程序的简化版本不起作用:

from ctypes import *
import numpy

mcapi32 = windll.mcapi32  # motion control card DLL  # leave out this line...
hCtlr =mcapi32.MCOpen(arguments...)      # and this line, and the program works

def CollectNShots(n):  # set up to take n measurements
    mx = windll.nicaiu  #  load National instruments DAQ DLL
    TH0 = c_ulong()
    data.numpy.zeros((2*n,),dtype = numpy.float64)
    mx.DAQmxCreateTask(arguments)
    mx.DAQmxCreateAIVoltageChan( arguments)  # here is where the error arises
    .....other DAQ commands.....

    return 0

谢谢!

0 个答案:

没有答案