1

これは、フォーラムへの私の最初の投稿です。私は経験の浅いプログラマーで、最初のプログラムはほとんど終わったと思っていましたが、障害にぶつかっただけでした。この問題についての洞察をいただければ幸いです。

モーションコントロールカード(Precision MicroControl)とデータ取得カード(National Instruments)の2つのハードウェアを実行するためのGUIを作成しています。これまでのところ、Pythonのctypesを使用して、デバイスを個別に実行するために必要なDLLをインポートすることに成功しました。そこはすべて大丈夫です。ただし、2つを一緒に使用しようとすると、特定のDAQ呼び出しが失敗し、NIDAQmxランタイムエラーとWindowsエラーが生成されます。

NIDAQエラー-50251'指定されたソフトウェアコンポーネントは使用できません。コンポーネントがロードされませんでした」ウィンドウエラー「PYTHONWにより、モジュールNIESXU.DELLの0167:6ef85ab5で例外10Hが発生しました。」

モーションコントロールカードの初期化は、私のプログラムで最初に行われることの1つです。プログラムのこの部分をスキップすると、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

ありがとう!

4

0 に答える 0