Jak na Bluetooth v .NET Compact Frameworku
Bluetooth je bezdrátová technologie široce využívaná pro bezdrátový přenos dat zejména v malých zařízení jako jsou například PDA. Pro uživatele není většinou žádný problém Bluetooth používat, ale z pohledu vývojáře se může stát vývoj aplikace využívající Bluetooth celkem flustrující záležitostí.
Hned prvním důvodem je, že .NET Compact Framework nepodporuje Bluetooth, “naštěstí“ je ale na Internetu několik knihoven, které tuto situaci řeší. Dříve než se ale začnu zabývat jednotlivými knihovnami, bude potřeba krátký přehled toho, jak Bluetooth vlastně funguje.
Dnes můžeme najít mnoho Bluetooth zařízení, každé ale používající jiný typ Bluetooth modulu. Funkcionalita Bluetooth modulu je přístupná přes tzv. Bluetooth stack, což je rozhraní, přes které s Bluetooth modulem uvnitř zařízení systém komunikuje. Bohužel, těchto rozhraní je hned nekolik druhů, co znamená, že aplikace napsaná pro jeden Bluetooth stack nebude fungovat pro jiný. Proto si programátor musí buď vybrat, která zařízení bude podporovat a nebo naimplememntovat různé verze pro jiná rozhraní.
Zde je seznam těchto Bluetooh stacks (rozhraní):
- Widcomm stack
- Microsoft stack
- Jiná jako například Toshiba stack, …
Naštěstí, v naprosté většině zařízení najdeme buď Widcomm Bluetooth stack nebo Microsoft Bluetooth stack, proto se dále zaměřím pouze na tyto dvě nejrozšířenejší rozhraní. Více informací o jednotlivých Bluetooth stack můžete najít na http://en.wikipedia.org/wiki/Bluetooth_stack ^.
Widcomm stack
* Někdy se také můžete setkat s označením Broadcom stack
Implementace firmy Broadcom
Situace s rozhraním od firmy Widcomm, jejiž moduly jsou nejrozšířenější, byla velice špatná. Když ale v roce 2004 byla firma zakoupena firmou Broadcom, situace se změnila. Broadcom vydal oficiální knihovu pro ovládání Widcomm stacku, bohužel se ale jedná pouze o unmanaged C++ verzi. Tu můžete nalézt zde http://www.broadcom.com/products/Bluetooth/Bluetooth-RF-Silicon-and-Software-Solutions ^.
- - pouze Widcomm stack
- - C++ verze
- + zdarma
Knihovna BTAccess od firmy High-Point software
Zde se jedná už o managed .NET verzi pro Widcomm Bluetooth stack, která ale není zdarma. Ceny můžete nalézt zde http://www.high-point.com/purchase.htm ^. Na stránkách je také k dispozici plná zkušební verze bez časového omezení, pouze při každé inicializaci připojení k Bluetooth v zařízení se otevře okno s informací, že se jedná pouze o zkušební verzi. Tuto verzi můžete stáhnout na http://www.high-point.com/downloads.htm ^.
Tuto knihovnu jsem měl možnost odzkoušet a setkal jsem se zde s několika celkem závažnými problémy. Celá interakce s Bluetooth je víceméně uskutečněna přes události, kde ale některé nebyly volány správně. Navíc aplikace nakonec fungovala pouze na jednom ze tří testovaných PDA, všechny s Widcomm Bluetooth:
HP iPAQ hx2790 - ano
HP iPAQ 214 -ne
Asus MyPal A639 -ne
- - pouze Widcomm Bluetooth stack
- - pouze placená verze
- + managed .NET CF knihovna
Microsoft Bluetooth stack
Knihovna firmy Microsoft
Z pohledu programátora je u tohoto rozhraní situace o mnoho jednodušší, bohužel ale Microsoft Bluetooth stack zase není tolik rozšířený jako Widcomm. Microsoft poskytuje na svých stránkách zdarma .NET CF knihovnu Windows Embedded Source Tools for Bluetooth Technology.
Knihovnu můžete stáhnout na http://msdn2.microsoft.com/en-us/embedded/aa714533.aspx ^. Několik tutoriálů a příkladů použítí této knihovny můžete najít na http://channel9.msdn.com/wiki/default.aspx/Channel9.BluetoothDevelopment ^.
- - pouze Microsoft Bluetooth stack
- + managed .NET CF
- + zdarma
32feet.NET
Další bezplatnou knihovnou pro Windows Bluetooth stack je 32feet.NET, kterou můžete stáhnout na http://inthehand.com/content/32feet.aspx ^.
- - Pouze Microsoft Bluetooth stack
- + managed .NET CF
- + zdarma
Widcomm i Microsoft stack
Franson BlueTools
Poslední zde uvedená knihovna je od firmy Franson. Tato knihovna umí jak Microsoft Bluetooth stack, tak Windcomm Bluetooth stack. Rozlišení typu Bluetooth rozhraní se děje na úrovni knihovny a odlišnosti mezi rozhranímy jsou před programátorem skryty. Aplikace pak tedy funguje na obou typech Bluetooth zařízení.
Tato knihovna není zdarma, standartní verze stojí 99 €. Na stránkách si take můžete stáhnout 14ti denní trial verzi, stačí se zaregistrovat na http://franson.com ^ a získáte sériové číslo, které je potřeba pro inicializaci knihovny. Knihovnu můžete stáhnout na http://franson.com/bluetools ^.
S touto knihovnou jsem pracoval a vyskytlo se jen několik menších problémů, kdy některé události nebyly volány ve správném pořadí. Při testování aplikace fungovala bezproblémů na všech třech zmíněných PDA.
- - není zdarma
- + podporuje oba typy, jak Microsoft tak Widcomm Bluetooth stack
- + managed .NET CF
Jak poznám o jakou verzi Bluetooth stacku se v zařízení nachází?
Bohužel zjistit o jaký Bluetooth stack se jedná v daném PDA je velice problematické, jedna možnost je podívat se do registrů a hledat složku „Widcomm“, pokud se zde nenachází, pak se pravděpodobně jedná o Microsoft Bluetooth stack. Druhá možnost je pokusit se vyhledat tuto informaci na Internetu. Bohužel není možné si to vyhledat na stránkách výrobce, protože ti tuto informaci většinou vůbec neposkytují.
Závěr
Cílem tohoto článku bylo uvést čtenáře do problematiky vývoje pro Bluetooth v .Net CF. Bohužel na Internetu se nachází velice málo informací o celé situaci s Bluetooth, která je přinejmenším mírně komplikovaná. Ukázky zdrojových kódů zde nenalaznete, protože použití jednotlivých knihoven se liší, nicméně příklady použítí poskytuje každá firma ze zde zmíněných knihoven na jejich stránkách.

