Windows Phone /デスクトップ8.1では、Bluetoothデバイスへの接続と切断によってさまざまな結果が出ています。私はWindows.Devices.Bluetooth.Rfcomm
名前空間を使用しており、さまざまなBluetoothバージョン/クラスの複数のデバイスを接続しようとしました。
2.0または2.1のデバイスに接続しようとすると、問題が発生します。初めて各デバイスに接続しようとすると、すべてがうまくいき、接続が開きます。その後接続を閉じてデバイスを再接続すると、問題が発生します。再接続中に接続が開かず、デバッガーがSystem.Exceptionをスローします。
> Message: No further data is available.
また、接続が失敗すると、Windows 8.1デバイスは、自分のアプリケーションが終了している場合でも、自分自身で(失敗して)Bluetoothデバイスに接続しようとし続けます。時々、Windows 8.1デバイスはBluetoothデバイスが接続されていると表示しますが、デバイスはそれが接続されていないことを視覚的に示します。 Bluetoothデバイスを再接続する唯一の方法は、ペアリングを解除して、WindowsデバイスでBluetoothをシャットダウン/再起動することです。
接続に失敗した後でDeviceInformation
を新たに呼び出そうとすると、以前に接続しようとしたデバイスを返すことが拒否されます。
> Message: The service cannot be found in the specified name space.
奇妙な結果、1.2デバイスは完全に動作します。
マニフェストファイル:
<m2:DeviceCapability Name="bluetooth.rfcomm">
<m2:Device Id="any">
<m2:Function Type="serviceId:00001101-0000-1000-8000-00805F9B34FB"/>
</m2:Device>
</m2:DeviceCapability>
デバイスの選択:
Guid RfcommChatServiceUuid = Guid.Parse("00001101-0000-1000-8000-00805F9B34FB");
await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.FromUuid(RfcommChatServiceUuid)));
接続中:(id = chatserviceid)
StreamSocket _socket;
RfcommDeviceService service = await RfcommDeviceService.FromIdAsync(deviceInformation1._id);
await _socket.ConnectAsync(service.ConnectionHostName, service.ConnectionServiceName);
切断:
this._socket.Dispose();
this._socket = null;
私はMSDN、コードサンプル、デモ、チャネル9ビデオ、およびStackOverflowを調査しましたが、Windows.Devices.Bluetooth.Rfcomm
に問題がある場合、どのリソースも教えてくれません。
これらの奇妙な結果を認識する誰かがいますか?私は何か間違ったことをしていますか?
更新:Windows Phone 8.1 GDR2での作業は、可能な解決策です。
注:私自身と他の何人かの人々にとって、このアップデートはまだ同じ問題を与えます。
CoolTermを試してみて、うまくいくかどうかを確認します。 USB接続を介してスピーカーと内部のSigma DSPチップを接続することで同様の問題が発生したため、外部デバイスが表示されない場合は、デバイスがコンピュータと互換性がない可能性があります。 CoolTermをダウンロードしてオプションに移動し、シリアルポートの下でポートを目的の接続(bluetooth、usbなど)に変更する必要があります。その後、必要に応じてオプションを編集し、メインウィンドウに移動して接続をクリックし、機能するかどうかを確認します。