NI-VISAまたはNI-VXI APIで大きいデータブロックを移動する

NI-VISA Measurement & Automation

NI-VISAまたはNI-VXI APIで大きいデータブロックを移動する

効率良くデータブロックを移動するには、NI-VISAのviMoveX()またはNI-VXI APIのVXImove()を使用する方法が最適です。(ナショナルインスツルメンツでは、アプリケーションの開発にはNI-VXI APIよりNI-VISAをご使用になることをお勧めします。)これらの関数の使用方法の例は、NI-VISAおよびNI-VXI APIのサンプルディレクトリにあります。NI-VISAのサンプルはvxipnp\win32\Nivisa\examplesディレクトリにあり、HighReg.cと呼ばれます。NI-VXI APIのサンプルはnivxi\win32\examplesディレクトリにあり、VXIblock.cと呼ばれます。

多量なVXIバス転送を最適化する

パフォーマンスを最適化するには、viMove()またはVXImove()を使用する際に以下に注意してください。

  • バッファが32ビットで整列されていることを確認します。
  • 可能な限り、32ビットデータで送信します。
  • VXIブロックのアクセス権を使用することで、ブロック転送を受け入れることができるデバイスとのパフォーマンスが大幅に向上されます。同様に、VME64 64ビットデータ転送プロトコルを受け入れることができるデバイスには、D64アクセス権を使用します。
  • Windowsオペレーティングシステムなどの仮想メモリシステムで移動のパフォーマンスを最適化するには、メモリ内のユーザバッファを手動でロックして、移動操作がバッファのロックをする必要がないようにします。
  • Windowsオペレーティングシステムなどのページメモリシステムで移動のパフォーマンスを最適化するには、連続バッファを使用して、移動操作がユーザバッファのスキャッタ・ギャザーリストを作成する必要がないようにします。
メモ  viMemAlloc()またはVXImemAlloc()は、移動操作で効率的な、32ビットで整列された、ページロックされている、連続バッファを返します。