09-18-2011 07:32 PM
PCI-6030Eを用いていた時、アナログデータの読み込みにNIDAQmx.libの
DAQmxReadBinaryU16
を使用していました。
今回PCI-6281へと変更しましたが、分解能が18Bitに上がっており、上記関数が
使用できません。そこで
DAQmxReadBinaryU32
を使用してデータを読み込むようにしました。
この変更で読み込みそのものは動く様になりましたが、他のモジュールとの互換
性の為、データを16Bitへと落とし込む必要があります (精度は従来通りの16Bit
で十分です)。この場合、どのようにデータの落としこみをすればよいのでしょ
うか?
お教え願います よろしくお願いします
09-21-2011 03:22 AM
tsuji 様
日本ナショナルインスツルメンツの原でございます。
平素より NI 製品をご利用頂きまして誠にありがとうございます。
32bit のデータを 16bit に落としたいという理解でよろしいでしょうか。
その場合ですと、LabVIEW の「デシメート1D配列」関数にて可能かと思います。
(プログラミング » 配列 » デシメート1D配列)
半分のビット数にするには、元のデータ配列を入力端子に結び、上の出力端子からは半分になったデータが出力されます。
因みに、関数を下に引き伸ばしていただくと、3分の1、4分の1等、データ数をより減らすことも可能などで、ご参考ください。
お試し頂き結果をご連絡いただけますでしょうか。
宜しくお願い致します。
+---+---+---+---+---+---+---+---+---+---+---+---+
日本ナショナルインスツルメンツ株式会社
技術部 原 智 (Satoshi Hara)
弊社のサポートに関する情報は以下のサイトをご覧ください。
技術データベース: http://www.ni.com/kb
お問い合わせフリーダイヤル 0120-527196
+---+---+---+---+---+---+---+---+---+---+---+---+
09-25-2011 07:51 PM
Hara様
ご回答有り難うございました
今回 ANSI CとNIDAQmx.libの機能の中で実装する必要があった為
使用できませんでした。
英語のフォーラムに似たような記述があったので、
そちらを参照し
DAQmxReadBinaryU32
関数で取得したデータを2ビット右シフトした後、
0xFFFFとビットごとの論理積を取ることで
18Bit → 16Bitの変換をしました。
誠に有り難うございました
今後ともよろしくお願い致します