11-20-2019 11:51 PM
WAVファイルをDAQ経由でスピーカーから出力することはできましたが、それを複数ch.出力しようとしたときに「メモリが不足しています」と表示されました。
具体的には1ch.出力で再生できたので、同様のブロックダイアグラムを4つ作成し、動作させたところ上記のエラーが表示されました。
解決済! 解決策の投稿を見る。
11-21-2019 05:11 PM
LabVIEWが使用できるメモリは、OSのビットネスによって異なります。
日本語版のLabVIEWは32ビット版ですので、デフォルトで2 GBまでメモリを使用できます。ただし、データを配列に格納する場合、連続したメモリアドレスに保存されるため、上限値に達しなくても連続したメモリアドレスが確保できないとメモリがいっぱいであるエラーが発生します。一般的な対処法は下記に記載されています。
次に同じデバイスに対するタスクをコピーしたようなコードでは、エラー-50103が発生すると思います。これは、デバイスが1つのタスクとして使用されている状態で他のタスクを実行しようとする際に発生します。
1つのタスクでは、複数チャンネルを含めることが可能ですので、以下のページを参考に1つのタスクで複数チャンネルから出力するようにする必要があります。
11-22-2019 01:12 AM
Y.Ueno 様
ご返信ありがとうございます。
メモリ不足に関しては、仮想メモリの設定を変えることで解消いたしました。
エラー50103に関してなのですが、DAQmx Write(Analog 2D DBL Nchan Nsamp) .viにするとソース(波形 DBL)とシンク(ダイナミックデータ)のタイプが異なるので配線ができないのですが何かソースとシンクを合わせる手法はないのでしょうか。
よろしくお願いいたします。
11-22-2019 03:29 AM
横から失礼いたします。
ひとまず以下の様にすることでワイヤーは繋がります。ご確認いただけますか?
11-24-2019 06:34 PM
TAKASU 様
ご返信ありがとうございます。
返信いただいたとおりに配線をするとチャンネル数の違いからエラーが発生するようです。
11-24-2019 11:56 PM
複数チャンネルの指定については、まずフロントパネルにある物理チャンネルを指定する制御器で指定します。たとえば、以下のとおりです。0 :(コロン)3で、チャンネル0からチャンネル3までという意味になります。
cDAQ1Mod1/ao0:3
ダイアグラムでは、DAQmx書き込みVIの多態性セレクタでアナログ>>複数チャンネル>>複数サンプル>>1D波形を選択します。これで波形データタイプの1次元配列を入力できるようになります。
この配列で、要素0にチャンネル0のデータ、要素1にチャンネル1のデータ・・・といった形でデータを渡す必要があります。
たとえば、下記のように音声ファイルのステレオ(2チャンネル分)音声を指標配列関数で抽出して、分岐してから4チャンネルのデータを配列連結追加関数で波形データタイプの1次元配列にすることが可能です。
以前お送りしたSound File to Analog Output.viという名前のサンプルプログラムでも複数チャンネルでの書き込みをおこなうように設定しておりましたので、再度ご確認ください。
12-03-2019 11:34 PM
Y.Ueno 様
ご返信ありがとうございます。
返信遅れて申し訳ございません。
記載していただいたとおりに配線したところ以下のエラーが発生しました。
エラーコード-200293がDAQmx Write (Analog 1D Wfm NChan NSamp).vi:6390001で発生
考えられる理由:
生成はまだ開始されておらず、バッファ内に利用できるスペースが十分にありません。
より大きなバッファを構成するか、バッファに合うデータ以上のデータを書き込む前に生成を開始します。
プロパティ: RelativeTo
相当する値: 現在の書き込み位置
プロパティ: Offset
相当する値: 0
プロパティ: Output.BufSize
相当する値: 3924900
タスク名: _unnamedTask<9>
12-17-2019 03:59 AM
バッファサイズを232にされていますが、データ数も232サンプルであっていますか?
信号シミュレーションで232サンプルのデータを作成し、シミュレーションデバイスで実行してみると添付VIはエラーなく動作しています。
12-17-2019 04:06 AM
ご返答ありがとうございます。
無事解決いたしました。
ありがとうございました。