Kurz4 - Kapitola2

17. června 2007 v 15:43 | http://www.sweb.cz/kurz_evt/ |  Programování pro WinCE

6.2 Windows CE a IrDA

Mluvíme-li o možnosti přenosu dat mezi různými zařízeními výpočetní techniky, často nám postačí zjistit, že přístroj je vybaven "IrDA portem". Pokud zařízení takové rozhraní má, je velmi pravděpodobné, že se dokáže spojit s jiným přístrojem s tímto rozhraním. Je to dáno především přesnou specifikací, kterou vydala organizace IrDA a kterou výrobci musí dodržet pro vzájemnou kompatibilitu.
Protože při přenosu mezi číslicovými zařízeními se přenáší i poměrně velmi rozsáhlé soubory, je nutné zajistit vysokou spolehlivost dat. Přenos dat se předpokládá na poměrně krátkou vzdálenost. Výhodou IR přenosu je především odstranění kabeláže mezi přístroji.

obr. 68 Přenos dat pomocí IR u výpočetní techniky
Vzdálenost mezi zařízeními, na kterou může komunikace probíhat, se může zdát hodně malá. Na rozdíl od dálkového ovládání TV však jediná chyba při přenosu velkého souboru může zhatit celou práci. U TV se nejvýše netrefíte do svého kanálu, což ale můžete hned napravit následujícím stisknutím tlačítka. Je sice pravda, že i krátký pohled na některé "zábavné pořady" může způsobit psychickou újmu, ale snad to přežijete :-).
Proto, aby přenos dat byl spolehlivý, je zaručovaná vzdálenost poměrně malá a také je přenos zajišťován řadou komunikačních protokolů. Jejich úkolem je zajistit udržení komunikace a opravu chyb v takových situacích, kdy před vysílačem proletí moucha nebo někdo v místnosti rozsvítí a prudce se změní okolní světelné podmínky apod.

obr. 69 Protokoly podle specifikace IrDA (mimo Raw IR)
Nás bude zajímat z celého popisu IrDA pouze nejspodnější vrstva.
Specifikace fyzické vrstvy, týkající se pracovního dosahu, optického úhlu a výkonu, přenosové rychlosti a šumové imunity, umožňuje fyzické propojení zařízení od různých výrobců. Existují dvě rozdílné sady těchto specifikací. První, nazývaná "Standard", je určena pro spojení pracující od 0 m až do alespoň 1 m. Druhá se jmenuje "Low Power Option" a má kratší dosah (do 0,2 m).
Vyšší vrstvy protokolů nás v našem případě nezajímají, jsou pro nás dokonce překážkou v našem úkolu. Jestliže se budeme snažit s přesností desítek mikrosekund vysílat přesně definované pulsy, opravný protokol snažící se navázat spojení s protilehlou stranou nám spolehlivě práci zničí.
Musíme se pokusit dostat přímo k fyzickému rozhraní sériového portu. Infračervené rozhraní je dostupné pomocí API funkce, která přepne rozhraní pro přímý přístup k portu - tzv. "Raw IR". Na obrázku je možnost přistupovat k infračervenému rozhraní přímo zobrazena pravým blokem. Ten není součástí IrDA specifikace.
Přepnutí do "Raw IR" režimu nám zpřístupní sériové rozhraní, jehož obvody vysílají jednotlivé pulsy infračerveného záření. V době přenosu je při vysílání "0" vygenerován puls záření, při "1" není žádný puls - viz obr.:

obr. 70 Přenos jednotlivých bitů podle IrDA
Šířka pulsu generovaného při "0" může být různá. Podle firemní literatury HP:
IrDA requires the maximum pulse width to be 3/16 of the bit period. The minimum pulse width can be as little as 1.6 µs, which is derived from 3/16 of the highest data rate of 115.2 Kb/s....
... Also, to minimize power consumption and increase LED life, it is recommended to use the minimum pulse width allowed by IrDA, which is 1.6 µs.
Po přepnutí do režimu "Raw IR" máme k dispozici sériové rozhraní, které se chová podobně jako běžné sériové rozhraní. Umožní nám vyslat sériově několik bitů s úvodním START a závěrečným(i) STOP bity. Není však možné programově vyslat samotnou "0", tedy 1 puls záření. My ale potřebujeme vyslat souvislou řadu pulsů s frekvencí cca 36 kHz, jejichž počet může být pro různé dálkové ovládače různý.
Jak to zajistit?
Rychlosti přenosu u sériového kanálu jsou pevně dané. Z dostupných přenosových rychlostí můžeme uvažovat ty, které jsou alespoň takové, jaký je nosný kmitočet u dálkového ovládání.
38,4 kBdOdpovídá přibližně nosnému kmitočtu, ale STOP bit vždy vynechá 1 puls.
57,6 kBdKmitočet 1,5x vyšší - nevhodné.
115,2 kBdKmitočet 3x vyšší, je možné jej dělit 3. Odchylka kmitočtu od modulační frekvence pro dálková ovládání je v toleranci do 10 %. Lze tedy použít.
Řešením se zdá použít rychlost 115,2 kBd. Pokud nastavíme rozhraní tak, aby vysílaný bajt měl celkem 9 bitů, můžeme programově vyslat v jednom bloku libovolný počet pulsů. Na obrázku je znázorněno vyslání 8 pulsů:

obr. 71 Vyslání 8 pulsů (kmitočet 38,4 kHz)
Jestliže nastavíme Ir port na rychlost 115,2 kBd s parametry 7 datových, 1 stop a žádnou paritu, můžeme přijmou nebo vyslat sérii impulsů o kmitočtu 38,4 kHz. Blok bude tvořen bajty s hodnotou 5B hexadecimálně. Poslední bajt bude mít hodnotu 5B nebo 7B nebo 7F hexadecimálně (podle počtu pulsů).
Uf, úvodní teoretický rozbor je hotov, příště už začneme programovat...

Co bychom si měli z této lekce zapamatovat?

  • IrDA port kapesního počítače může pracovat v různých režimech.
 

Buď první, kdo ohodnotí tento článek.

Nový komentář

Přihlásit se
  Ještě nemáte vlastní web? Můžete si jej zdarma založit na Blog.cz.