Včera Microsoft vypustil do světa Windows 10. Zcela nová platforma pro PC, tablety a mobily. Nově i pro IoT (Internet of Things). Na co jsem především včera čekal byly Windows SDK, do Technical Preview jsem vstoupil v září a proto jsem nečekal na 29. července z důvodu vydání Windows 10, jelikož jsem je měl již cca dva týdny zpět.
Windows 10 nám tedy hlavně přineslo mimo změny UI a podobných vlastností především Cortanu. Hlasová asistentka bohužel s absencí češtiny. Týden jsem čekal právě na Windows SDK, které mi dovolí pracovat s Cortanou přes aplikace Universal apps. První nepříjemností bylo zjištění, že chybí podpora ve WinRT pro sériový port, čili žádná přímá komunikace skrze seriák. Takže vymýšlení jak obejít to, abych využil Cortanu, která je podporovaná pouze v Universal apps a přitom komunikoval s AVR mikročipem. Řešení číslo jedna se objevilo do pár minut a to bylo TCP client a server ve Windows Forms. Universal apps bohužel umí jen Sockety tím pádem problém. Já nejsem zrovna druh člověka co právě sockety využívá a proto jsem udělal další variantu. Universal apps budou posílat HTTP požadavek na HTTP server ve Windows Forms. To se zdařilo.
Byť trošku chaotické Voice Commands se dali naučit za pár minut. Command Prefix je něco čím řeknete Cortaně, že se jedná o cílovou aplikaci např. LED Control. Při zadávání hlasem právě pokud bude přítomno slovo “LED Control” tak identifikuje, že se jedná o aplikaci, jenž má právě tento Command Prefix a pak následovně bude porovnávat další fráze.
Kompletní návod jak právě využít Cortanu se vším všudy ať již ve Foreground (aktivní aplikaci) či Background (běžící v pozadí) můžete nalézt zde. Pokud si stále nebudete vědět rady pak zde naleznete příklady. Pro Cortanu v C# Samples/CortanaVoiceCommand/cs.
Tímto způsobem tedy dostaneme nějaké data zpět do aplikace. Další částí je tedy Windows Forms aplikace neboli HTTP server. Pomocí ToolBoxu lze vytáhnout Serial Port komponentu a tu nakonfigurovat. Poté již udělat tu hlavní práci a to je HTTP server.
https://pastebin.com/kTARYPXr
Pak jen stačí ho někdy ve Form1 zavolat a udělat instanci, vždy pokud přijde dotaz typu “https://localhost/type=0” tak pozná, že má vyparserovat type a poslat jej po seriáku.
https://pastebin.com/i7C4VsAg
Bylo by samozřejmě vhodnější kdyby Microsoft dodělal podporu pro Serial Port přímo do WinRT.
A někdy příště si zase ukážeme samotné LED stripy ovládané pomocí AVR mikročipu. Tam už je trošku větší sranda neboť se musí odesílat data v řádech mikrosekund 🙂 .