2012-05-02 2 views
2

私はBluetoothプログラミングの新機能を利用しています。PC上で複数のBluetoothデータストリームを集約する

つまり、私の潜在的なクライアントには、Bluetooth経由でWindows PCにデータを送信するカスタムハードウェアデバイスがあります。 PCソフトウェアは、仮想COMポートを開き、そこからデータを読み込むことによって、デバイスに接続します。このデータをリアルタイムで可視化します。

これらのデバイスのうちの3つ(あるいは、非常に類似した3つのデバイスが異なるセンサーに接続されている)を同時にPCに接続するとします。彼らは、3つのすべてのソースからのデータを集約し、リアルタイムですべてを可視化するためにソフトウェアを書き直したいと思っています。これは、データを生成する各デバイスと画面に現れるデータとの間の遅延が、最悪の場合には数十ミリ秒のオーダであり得ることを意味する。

私の質問は二重です。

1)。これはまったくできますか? PC上のソフトウェアが3つのBluetooth対応の仮想COMポートに同時に接続する方法はありますか? (私は答えが "はい"だと思っていますが、確かに支払っています)。

2)。これを行うための最良のプラットフォームは何ですか?元のソフトウェアはC++/MFCで書かれていますが、私は個人的にもっとモダンなものを好み、より簡単なグラフィックスやGUI APIにアクセスできます。

答えて

1

私のライブラリを使用できます。32feet.NETdocumentation

はまずない仮想COMポートを使用する操作を行い、彼らは、セットアップをすることは困難で、使用中の不透明、および維持することは困難です。私たちのBluetoothClient.Connect操作(またはデバイスがPCに接続する場合はBluetoothListener)を使用してください。その後、実際にはNetworkStreamの3つのソケットがあり、非同期か同期かにかかわらず、3つのソケットすべてから読み取ることができます。例えば、 General Bluetooth Data Connections

デバイスはシリアルポートプロファイルを使用しますので、UUID/Guid BluetoothService.SerialPortを使用してください。 3つのデバイスに必要なのは、それぞれのデバイスアドレスです。デバイスアドレスはデバイスのラベルや回路基板に記載されており、コード内のconstとして定義することができます。例えば

static readonly BluetoothAddress DeviceAddr1 
    = BluetoothAddress.Parse("002233445566"); 

レイテンシに関しては、それは問題ありません。それを行う他の方法は遅くなると思います。 .NETは現代的で、WinForms、WPF、およびSilverlightのUIオプションがあります。

+0

私はあなたのドキュメントを正しく読んでいるので、私は "Stream peerStream = cli.GetStream();"を使うことができます。サービスクラスがSerialPortに設定されていても正しいですか?この場合、個々のデバイスのUUIDを知る必要があるように聞こえ、各デバイスに別々のストリームを開くことができます。それはかなりきれいです。その場合、私は間違いなくライブラリをチェックアウトします。 – Bugmaster

+0

回答更新:BluetoothClient(Connect + GetStream)はRFCOMMサービスで動作し、デバイスはRFCOMMサービスSPPを使用します。したがって、3つのデバイスのデバイスアドレスだけが必要です。 – alanjmcf

+0

ありがとう、私はそれを試してみよう! – Bugmaster

関連する問題