データソケットを使用して画像を転送する方法。



使用ソフトウェア:
使用ソフトウェア・バージョン: N/A
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: N/A

問題:
NI-Imaqのsnapの関数で集録した画像をデータソケットを使ってイメージを送ろうと思っているのですが、クライアント側がイメージを表示することができません、なぜでしょうか?

解決策:
画像を直接データソケット書き込みにつなげた場合、データソケットが転送するデータは画像そのものではなくイメージのポインタ(メモリの中のイメージが保存されている位置)になります。ですから、この方法ではクライアントはイメージ自体を受け取っていないのでそれを表示することはできません。ひとつの解決方法はデータソケットで転送する前にイメージを「文字列に平坦化.vi」を使用してバイナリデータに平坦化してから転送する方法です。こうすることでポインタではなく実際のイメージデータが転送されます。ただし、クライアント側でもデータを読み取った後「文字列から非平坦化.vi」を使用して元に戻す必要があります。

 また、これに関連してsnap.viではなくGrap.vi(acquire)を使用して高速の画像転送を行う場合、この方法では早いレート(フレーム/秒)を保つことは難しくなる場合があります。この場合イメージファイルをJPEGイメージに圧縮することで解決できる場合があります。その方法は以下の関連リンクにありますのでご参照ください。



関連リンク:
Developer Zone Example: Transfer Images Over the Network

添付:


DSReader.vi - DSReader.viDSWriter.vi - DSWriter.vi


報告日時: 04/02/2004
最終更新日: 12/14/2007
ドキュメントID: 381DHIWX