LabVIEWを使っていて、「実験の警告音や測定完了のアナウンスをBluetoothスピーカーから流すソフトを作りたい」と思ったことはありませんか?
関数パレットを開くと、親切にも「データ通信」のなかに「Bluetooth」という関数グループが用意されています。「これを使えば簡単にスピーカーとペアリングして音を出せるはず!」と実装を始める技術者の方が非常に多いのですが……実はここに、巨大な罠が潜んでいます。
◆ 結論:LabVIEWのBluetooth関数でスピーカーに繋ぐのは無理です!
結論から言うと、そのパレットにある関数を使ってBluetoothスピーカーから音を出すプログラムを作るのは、ほぼ不可能です。何日も試行錯誤して時間を無駄にしてしまう前に、この記事を読んで正しいアプローチに切り替えてください。
原因は、Bluetoothという規格の中に存在する「プロファイル(通信規格)」の違いにあります。
つまり、LabVIEWのBluetooth関数は「文字や数値を送るための通り道」であり、スピーカーが求めている「音楽を流すための通り道」とは根本的に規格が異なります。ここに自力で音声データを流そうとすると、プロトコルをゼロから解析して偽装するような、途方もない超高難度のプログラムを組む羽目になります。
では、どうすれば一番簡単にBluetoothスピーカーから音を出せるのでしょうか?
正解は、「Bluetoothの面倒な接続処理はすべてOS(Windows)に丸投げし、LabVIEWからは単なる通常のサウンドデバイスとして音を鳴らす」という方法です。これなら、わずか数分で実装が完了します。
あとは「サウンド出力を書き込み.vi」にサイン波などの波形データや、読み込んだWAVファイルを渡して「サウンド出力を開始.vi」を走らせるだけ。これだけで、何事もなかったかのようにBluetoothスピーカーから心地よい音が鳴り響きます。
この方法で無事に音は出ますが、実務に組み込む際は「遅延(レイテンシ)」にだけ注意してください。
有線のスピーカーやイヤホンと違い、Bluetoothオーディオは無線化の処理を挟むため、どうしても数十ms?数百msの音の遅れが発生します。 「エラーが発生した瞬間に、1msのズレもなく警告音を鳴らして現場に知らせたい」といった、極めて厳密なリアルタイム性が求められる実験装置・制御システムの場合は、この遅延がボトルネックになる可能性があるため、有線接続を選ぶのが安全です。
「パレットにある関数を試したのに動かなくて何時間も悩んでしまった」「やりたいことは決まっているのに、LabVIEWの仕様の罠に引っかかって開発が進まない」……そんな経験はありませんか?
測定代行株式会社は、元・横河計測の技術者が率いるLabVIEW受託開発のプロフェッショナル集団です。現場の「物理現象」とLabVIEWの「ソフトウェア特性」の双方を熟知しているからこそ、こうした罠を回避した、シンプルで確実なシステム開発をご提案できます。
プログラムの新規作成はもちろん、既存のブラックボックス化したVIの改修や、古いシステムの更新(リプレース)まで、LabVIEWのことなら何でもお気軽にご相談ください。