Ze slova IoT neboli Internet of Things se v poslední době stává “buzzword” a v podstatě každý, kdo pracuje se single-board počítači tvrdí, že používá skvělou novinkou IoT, spousta lidí zapomíná, že embedded počítače jsou dostupné již dlouhou dobu a pouze se v poslední době dostaly více do povědomí. Účelem těchto zařízení je získávání dat, jejich zpracování a následné odeslání ať již lokálně nebo do cloudu. Microsoft disponuje systémem Windows 10 IoT Core, který je nejmenší verzí Windwos 10 a je navržen tak, aby Vám pomohl vytvářet propojení mezi zařízeními všech velikostí a typů.
V případě, že používáte tyto malé počítače, tak většinou předpokládáte, že budou fungovat 24/7 bez jakýchkoliv výpadků a nebude se o ně muset starat. Windows 10 IoT Core umožňuje spouštění dvou hlavních druhů aplikací, tzv headed a headless, což v praxi znamená, že jeden typ má GUI a druhý nikoliv. Pro minimalizování možnosti vzniku chyby je potřeba, aby byly aplikace co nejjednodušší a neměly žádné přebytečné mechanismy, které by mohly vést k jejich pádu.
Výše zmíněné požadavky mluví ve prospěch headless aplikací, ke kterým je možné v případě potřeby grafické vizualizace přidat komunikaci s druhou aplikací, která bude představovat GUI. Jak zprovoznit komunikaci mezi headed a headless aplikacemi se budu věnovat v nějakém dalším příspěvku.
Headless aplikace
Používání headless neboli background aplikací pro WIndows 10 IoT Core je možné po stažení templatu z Visual Studio Gallery nebo přímo ve Visual Studiu jako rozšíření v dialogu Extension and Updates (Tools > Extensions and Updates > Online). Background aplikace podporují jazyky (C++, C#, JavaScript a Visual Basic), já osobně preferuji C#. Po založení nového projektu pomocí template se Vám vytvoří třída StartupTask.cs, který vypadá následovně:
V horní části obrázku si můžete všimnout, že je poskytnuta dokumentace k templatu, kde je detailně popsáno, jak přesně background aplikace funguje.
debugging
V případě, že nechcete pokaždé čekat na nahrání aplikace na zařízení s WIndows 10 IoT Core a násladný pomalý vzdálený debugging budete potřebovat debugging lokální, na vašem počítači. Při pokusu o spuštění headless aplikace na Vás vyskočí upozornění, že vaše aplikace je blokována zásadami skupiny nebo anglicky This program is blocked by group policy. For more information, contact your system administrator. Pro vyřešení tohoto problému je potřeba zapnout embedded mode.
Embedded mode
Většinu programátorů napadne zkusit zapnout Embedded mode ve službách (Services) přímo ve Windows. To samozřejmě lze, ale embedded mode se okamžitě zastaví a aplikaci pořád nespustíte jinde než na Windows 10 IoT Core. Pro zprovoznění lokálního debuggingu je nutné vytvořit vlastní provisioning package s použitím Imaging and Configuration Designeru. Microsoft ve své oficiální dokumentaci ukazuje přesný postup, jak balíček vytvořit. V případě, že se Vám nechce instalovat hromadu balastu a vytvářet balíček, tak přidávám odkaz, kde je možné si jej stáhnout a poté stačí pouze dovjklikem spustit a budete moci vaše IoT aplikace pohodlně debugovat i na vašem počítači.