Download presentation
Presentation is loading. Please wait.
1
Bluetooth で Go! Bar Windows 8 in 名古屋 with 8.1 けきょ( Kouji Matsui @kekyo2 )
2
自己紹介 けきょ @kekyo2 (あまり tweet してません) 会社やってます 「 Micoci 」と「まどべんよっかいち」 主に Windows 。 C#, C++/CLI, ATL, C++0x, x86/x64 アセンブラ, WDM, Azure, TFS, OpenCV, Geo, JNI, 鯖管理, MCP 少々, 自作 PC, 昔マイコン, 複式簿記経理 アプリケーションフレームワーク設計・アーキテクトが仕事の主体。 最近は WPF を使った MVVM に足をツッコミ中 けきょ @kekyo2 (あまり tweet してません) 会社やってます 「 Micoci 」と「まどべんよっかいち」 主に Windows 。 C#, C++/CLI, ATL, C++0x, x86/x64 アセンブラ, WDM, Azure, TFS, OpenCV, Geo, JNI, 鯖管理, MCP 少々, 自作 PC, 昔マイコン, 複式簿記経理 アプリケーションフレームワーク設計・アーキテクトが仕事の主体。 最近は WPF を使った MVVM に足をツッコミ中
3
Windows 8 と言えば … Bluetooth 4.0 対応 で、 4.0 で何が追加されたの? Bluetooth 4.0 対応 で、 4.0 で何が追加されたの?
4
Bluetooth 4.0 って? 「 Bluetooth 4.0 LE 」ですよ 「 Low Energy 」ですよ 別名、「 Bluetooth Smart 」ですよ 何か呼称がごちゃごちゃしてますが、 3.0 以前の規格と LE に互換性は無いです。 (大人の事情で 4.0 としたのかも?) 1.0 ~ 4.0 全部ひっくるめて使えるのが、 「 Bluetooth Smart Ready 」 です (レシーバーしかない、多分) 「 Bluetooth 4.0 LE 」ですよ 「 Low Energy 」ですよ 別名、「 Bluetooth Smart 」ですよ 何か呼称がごちゃごちゃしてますが、 3.0 以前の規格と LE に互換性は無いです。 (大人の事情で 4.0 としたのかも?) 1.0 ~ 4.0 全部ひっくるめて使えるのが、 「 Bluetooth Smart Ready 」 です (レシーバーしかない、多分)
5
Bluetooth 4.0 LE って? コンシューマーブランド「 Bluetooth Smart 」 「超」低消費電力デバイス向けの規格 ボタン電池で半年~ 1 年 3.0 以前と互換性なし プロファイルがいっぱい増えた ライバルは、「 Zigbee 」「 ANT+ 」「 RFID 」か? コンシューマーブランド「 Bluetooth Smart 」 「超」低消費電力デバイス向けの規格 ボタン電池で半年~ 1 年 3.0 以前と互換性なし プロファイルがいっぱい増えた ライバルは、「 Zigbee 」「 ANT+ 」「 RFID 」か?
6
Windows 8 との関係は? Windows 8.0 で「 Bluetooth 4.0 」対応表明 しかし、一体何に対応したのか良く分からない (単に 4.0 プロトコルスタックを配布しただけ?) API についての情報が皆無 そうこうしているうちに、 Windows 8.1 現わる!! WinRT に名前空間が増えた! Windows 8.0 で「 Bluetooth 4.0 」対応表明 しかし、一体何に対応したのか良く分からない (単に 4.0 プロトコルスタックを配布しただけ?) API についての情報が皆無 そうこうしているうちに、 Windows 8.1 現わる!! WinRT に名前空間が増えた!
7
Bluetooth API Windows.Devices.Bluetooth Windows.Devices.Bluetooth.GenericAttributeProfile Windows.Devices.Bluetooth Windows.Devices.Bluetooth.GenericAttributeProfile これぞ LE デバイス! GATT
8
公式サンプルコード 「 Bluetooth Generic Attribute Profile - Heart Rate Service 」 Demonstrates use of the Bluetooth Generic Attribute Profile (Gatt) Windows Runtime API to interact with a Bluetooth Gatt device which contains a Heart Rate Service. http://code.msdn.microsoft.com/windowsapps/Bluetooth-Generic-5a99ef95 汚いサンプルコード … (T_T) http://code.msdn.microsoft.com/windowsapps/Bluetooth-Generic-5a99ef95 「 Bluetooth Generic Attribute Profile - Heart Rate Service 」 Demonstrates use of the Bluetooth Generic Attribute Profile (Gatt) Windows Runtime API to interact with a Bluetooth Gatt device which contains a Heart Rate Service. http://code.msdn.microsoft.com/windowsapps/Bluetooth-Generic-5a99ef95 汚いサンプルコード … (T_T) http://code.msdn.microsoft.com/windowsapps/Bluetooth-Generic-5a99ef95
9
取りあえずやってみた Bluetooth Smart デバイスが無ければ話にならない 幸い?ロードバイク乗りなので … Wahoo FITNESS BLUE HR (心拍計) http://www.wahoofitness.com/devices/wahoo-blue-hr-heart-rate-strap.html# レシーバーは PLANEX BT-MICRO4 Bluetooth Smart デバイスが無ければ話にならない 幸い?ロードバイク乗りなので … Wahoo FITNESS BLUE HR (心拍計) http://www.wahoofitness.com/devices/wahoo-blue-hr-heart-rate-strap.html# レシーバーは PLANEX BT-MICRO4
10
Demo (サンプルコード)
11
まあ … サンプルコードを動かしただけでは面白くない WinRT って、噂ではデスクトップからも呼び出せるらしいし WPF から使えた方が、私的に面白いかも? 本当にデスクトップアプリケーションから、デバイスにアクセス出来るか? サンプルコードを動かしただけでは面白くない WinRT って、噂ではデスクトップからも呼び出せるらしいし WPF から使えた方が、私的に面白いかも? 本当にデスクトップアプリケーションから、デバイスにアクセス出来るか?
12
API はどう使うの? デスクトップアプリケーションから WinRT を使うには、 Bing って下さい 例: http://www.codeproject.com/Articles/457335/How-to-call-WinRT-APIs-from-NET- desktop-appshttp://www.codeproject.com/Articles/457335/How-to-call-WinRT-APIs-from-NET- desktop-apps Windows 8.1 の場合は、「 TargetPlatformVersion 」を「 8.1 」にすること ( 8.0 では、新しい API は使えない) Bluetooth API は Windows.winmd に含まれているので、追加のアセンブリは不要 デスクトップアプリケーションから WinRT を使うには、 Bing って下さい 例: http://www.codeproject.com/Articles/457335/How-to-call-WinRT-APIs-from-NET- desktop-appshttp://www.codeproject.com/Articles/457335/How-to-call-WinRT-APIs-from-NET- desktop-apps Windows 8.1 の場合は、「 TargetPlatformVersion 」を「 8.1 」にすること ( 8.0 では、新しい API は使えない) Bluetooth API は Windows.winmd に含まれているので、追加のアセンブリは不要
13
API はどう使うの? デバイスセレクタの取得 var selector = GattDeviceService.GetDeviceSelectorFromUuid(GattServiceUuids.HeartRate); デバイスの列挙 IEnumerable dis = await DeviceInformation.FindAllAsync(selector); デバイスの初期化 var service = await GattDeviceService.FromIdAsync(deviceInformation.Id); 心拍情報のイベントをフック var characteristics = service.GetCharacteristics(GattCharacteristicUuids.HeartRateMeasurement); characteristics[0].ValueChanged += (sender, e) => { … }; デバイスセレクタの取得 var selector = GattDeviceService.GetDeviceSelectorFromUuid(GattServiceUuids.HeartRate); デバイスの列挙 IEnumerable dis = await DeviceInformation.FindAllAsync(selector); デバイスの初期化 var service = await GattDeviceService.FromIdAsync(deviceInformation.Id); 心拍情報のイベントをフック var characteristics = service.GetCharacteristics(GattCharacteristicUuids.HeartRateMeasurement); characteristics[0].ValueChanged += (sender, e) => { … }; 心拍計
14
イベントで心拍数が得られるんだ!(喜) いやいや、得られるのは、ペイロードの「生」データ(バイト列)です 解析はプロトコルに合わせて独自に行う必要があります(爆) orz プロトコルの情報は、 Bluetooth SIG で調べる必要があります https://developer.bluetooth.org/gatt/Pages/GATT-Specification-Documents.aspx (ペイロードの説明は全部文書で、ボックス図がないです。辛い … ) https://developer.bluetooth.org/gatt/Pages/GATT-Specification-Documents.aspx とりあえず、心拍計については、サンプルコードのデコーダーが参考になるでしょう いやいや、得られるのは、ペイロードの「生」データ(バイト列)です 解析はプロトコルに合わせて独自に行う必要があります(爆) orz プロトコルの情報は、 Bluetooth SIG で調べる必要があります https://developer.bluetooth.org/gatt/Pages/GATT-Specification-Documents.aspx (ペイロードの説明は全部文書で、ボックス図がないです。辛い … ) https://developer.bluetooth.org/gatt/Pages/GATT-Specification-Documents.aspx とりあえず、心拍計については、サンプルコードのデコーダーが参考になるでしょう
15
Demo ( WPF 版)
16
それでは、引き続きお楽しみ下さい ありがとうございました
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.