06-18-2013 12:36 AM
音声出力デバイスの認識についてお伺いしたい点がございます。
スピーカー、Bluetoothなどの音声出力用デバイスをPCに接続し、
例としてサンプルVIの同時サウンドIO [Simultaneous Sound IO.vi]を用いて
リアルタイムで音声を出力する条件下での動作について質問致します。
サウンド入力構成にて音声出力用デバイスを認識させた後、
Whileループ内でサウンド出力書き込みにて音声をデバイスを介して出力している最中に
意図せずPCに接続していた出力デバイスの接続が解除されてしまった場合
サウンド出力書き込みの中のライブラリ関数読み出しノード[読込ライブラリ:lvsound2.dll]にて
動作がフリーズしてしまい、LabVIEWを強制終了しなければならない状態となってしまいます。
(再起動後にLabVIEWはクラッシュしましたと表示される場合もあります)
音声の出力中に、構成していたデバイスの接続が意図せず解除されてしまった場合、
このLabVIEWの動作(フリーズ)は回避不可能なのでしょうか?
もしくは何らかの対策方法はございますでしょうか?
何卒よろしくお願い致します。
06-18-2013 11:21 PM
Yui_T 様
平素よりNI製品をご利用頂きまして誠に有難うございます。
日本ナショナルインスツルメンツ技術部 小野でございます。
状況を把握するために、確認をさせていただけますでしょうか。
・「出力デバイスの接続が意図せず解除されてしまった場合」といいますのは具体的にはどのような状況を指しますでしょうか。スピーカの接続ケーブルが抜けてしまったような場合を指すのでしょうか
もしそうである場合、LabVIEWの問題だけでなくWindows OSに関するプログラムも関係してくるものと考えられます。
すぐに解決策が見つからない可能性もございますので、その点に関してご理解いただけますようよろしくお願い申し上げます。
小野
06-19-2013 12:03 AM
小野 様
ご回答いただきありがとうございます。
デバイス接続が意図せず解除とは仰るように
スピーカーであればケーブルがPCから抜けてしまったり、
Bluetoothであれば電池が消耗して気づかずに切れてしまうような場合です。
もともとは、Bluetoothの接続が電池切れで解除されてしまった際に発生した事例だったのですが
スピーカー、ヘッドフォン別のデバイス、別のPCを用いた場合でも
同様にLabVIEWのフリーズ、クラッシュが再現されております。
何卒よろしくお願いいたします。
06-19-2013 08:37 PM
Yui_T 様
いつもお世話になっております。
小野でございます。
私も試してみましたが、マイクを抜いた際にエラー "-4822"は出たものの、
フリーズするという現象は再現されませんでした。
こちらがテスト環境です。
OS: Windows 7 32bit
CPU: Intel Xeon CPU E5-1620, 3.6GHz
LabVIEWのバージョン:2012
マイク:SANWA supply製, デスクトップPCのフロントパネルのマイクジャックに接続
スピーカ: Altec lansing製, デスクトップPCのフロントパネルのジャックに接続
プログラム: 同時サウンドIO.vi
デバイスIDの設定: マイク/スピーカ共に "0"
もしよろしければ、LabVIEWのバージョンやお使いのデバイス等の現在の環境についてもう少々お伺いしてもよろしいでしょうか。
06-20-2013 01:49 AM
小野 様
お世話になっております。
実際に再現テストを行っていただきありがとうございます。
私の実行環境を以下に記載いたします。
OS: Windows 7 32bit
CPU: Intel Celeron CPU 867 1.30GHz
LabVIEWのバージョン:2009
Bluetoothアダプタ(PC接続側):PLANEX BT-Micro4
Bluetoothレシーバ(ヘッドフォン側):ロジテック LBT-AVAR120
デバイスID:双方ともに0
この中で最も動作の違いに影響していると考えられるものがLabVIEWのバージョンなので
こちらも2012にアップグレードして再度検証してみたいと思います。
何卒よろしくお願いいたします。
06-20-2013 02:14 AM
Yui_T 様
いつもお世話になっております。
小野でございます。
環境に関する情報をご連絡いただきましてありがとうございます。
お客様の情報をもとに過去の事例をさらにお調べしました。
今回のケースと全く一緒というわけではないのですが、
以前のLabVIEWのバージョンにおいてlvsound2.dllを使用した場合Windowsのサウンドデバイスを呼び出す
プロセスに時間がかかり、その結果フリーズをしてしまうという事例がございました。
今回のケースに該当するものかどうかは、まだ確実ではないのですが
lvsound2.dllの修正はLabVIEW 2010でされたとのことですので、
まずはLabVIEW2012をお試し頂ければと存じております。
宜しくお願い申し上げます。
06-20-2013 10:54 PM
小野 様
お世話になっております。
LabVIEW2012にアップグレードして動作を行いました。
しかしながら、音声の出力(入力)中に
コントロールパネルからデバイス(スピーカー)の無効化を行ったり
Bluetoothであれば接続切れでデバイス自体の認識がなくなった時のような
動作中にデバイスIDが無効となった場合はやはりlvsound2.dllにおいてフリーズを起こすことが確認されました。
何卒よろしくお願いいたします。
06-23-2013 08:48 PM
Yui_T 様
いつもお世話になっております。
技術部の小野でございます。
左様でございましたか。
そうすると、原因として考えられる環境の違いは
・音声入力デバイス、出力デバイス
・CPU
・メモリ
・サンプルレート等のパラメータ
になると思います。
同時サウンドIO.viのVIプロパティに「マイクロホンがサウンドカードに接続されている必要があります。」という記述がございますが、
Yui_T様は、マイクはどういったものをお使いでしょうか。
また、LabVIEW 2012にアップデート後、以下の場合でフリーズは発生しますでしょうか。
・Bluetooth機器を使用しない場合
・CPU等の性能がより高い他のPCでの場合
過去の事例等をお調べしておりますが、
なかなか今回のケースに合致するものがなく、
ご質問に対してご質問で返すようで申し訳ございませんが
何卒宜しくお願い申し上げます。
日本ナショナルインスツルメンツ
技術部
小野永輔
06-24-2013 12:23 AM
小野 様
お世話になっております。
サウンド出力する機器に関わらず、今回の問題が発生しております。
そのため、この現象を簡易化する(出力のみを考える)ために以下の条件にて確認を行っております。
サンプルVI、Generate Sound VI: labview\examples\sound2\sound2.llb
にて正弦波波形を生成し、サウンドとして出力します。
サウンドはPCのイヤホンジャック(スピーカー)にヘッドフォンを接続して出力しております。
VIの実行中にコントロールパネルのサウンドよりスピーカーを無効化することによって
サウンド出力書き込み[Sound Output Write.vi]のlvsound2.dllでフリーズを起こしております。
Bluetoothの電池が切れてしまった場合でもデバイスが無効となるためほぼ同様の条件となります。
また、
CPU:Intel Core i5
メモリ:4GB
LabVIEW:2012
スピーカー:Realtek High Definition Audio
のPCを用意して検証を行いましたが、結果は同様でlvsound2.dllにてフリーズを起こしてしまいます。
サウンドのサンプルレートをデフォルトの44100から8192等に下げた場合でも結果は同様です。
実例の無い問い合わせでご迷惑をおかけしてしまい大変申し訳ございません。
何卒よろしくお願いいたします。
06-24-2013 10:01 PM
Yui_T 様
いつもお世話になっております。
技術部の小野でございます。
ご連絡ありがとうございます。
Generate Sound VIを用いて私も再度テストをしました。
結果、私の環境でも、以下の手順によって、LabVIEWのコントロールが効かなくなる現象が再現されました。
>>VIの実行中にコントロールパネルのサウンドよりスピーカーを無効化する
ただやはり、当初報告されていたスピーカのジャックが抜けた場合はフリーズが再現されませんでした。
Yui_T様の環境ではスピーカデバイスを無効化せず、ジャックが抜けた場合においても引き続きフリーズが発生いたしますでしょうか。
これは推測になるのですが、LabVIEWがアクセスしているサウンドボードが実行中に無効化された際にフリーズが発生するものと考えております。
今回の現象は再現可能なものでございますので、バグの可能性が高いものとして弊社開発部に申し伝えておきます。
今回の現象の回避策でございますが、こちらはソフトのバグである可能性が高いため、根本的な解決策をすぐにご提案することが難しいと考えております。
Yui_T 様のご期待に添えず、大変申し訳ございません。
小野