Obsah:

Espelho Mágico: 6 krokov
Espelho Mágico: 6 krokov

Video: Espelho Mágico: 6 krokov

Video: Espelho Mágico: 6 krokov
Video: 6. Easter Island - Where Giants Walked 2024, November
Anonim
Image
Image

Neste Instructables mostramos como criar um protótipo de um espelho inteligente que projeta informações de clima e notícias, use comandos de voz.

Embora seja o projeto de um espelho, não houve como utilizar um devido a contratempos.

Krok 1: Hardvér

Hardvér
Hardvér

Dragonboard 410c

Zvuková medziposchodie

Krok 2:

Obrázok
Obrázok

Sú to programy, ktoré môžete použiť v programe Visual Studio Community 2017, alebo jazykovej verzii c#. Rozhranie, ktoré môže používať editor XAML do Visual Studio.

Krok 3: Programação - Detecção De Voz

O hlavnom meste, ktoré sa týka pohybu a detekcie voza. Zvukové mezanínové dosky, ktoré mám, sú vybavené všetkými mikrofónmi, ktoré môžu používať alebo používať rôzne typy detektorov. Nie Visual Studio, používa Windows biblioteca. Media. SpeechRecognition pre dekodér a voz.

Využite viac ako jednu metódu na spustenie a inicializáciu vozidla, zistite, či je tam väčšina abecedy.

private async void InicializaVoz () {var idioma = new Windows. Globalization. Language ("en-US"); Rozpoznávač SpeechRecognizer = nový SpeechRecognizer (idioma); rozpoznávač. StateChanged += RecognizerStateChanged; rozpoznávač. ContinuousRecognitionSession. ResultGenerated += RecognizerResultGenerated; reťazec názov_súboru = String. Format (SRGS_FILE); StorageFile grammarContentFile = čakajte na Package. Current. InstalledLocation. GetFileAsync (názov súboru); SpeechRecognitionGrammarFileConstraint grammarConstraint = nový SpeechRecognitionGrammarFileConstraint (grammarContentFile); rozpoznávač. Constraints. Add (grammarConstraint); SpeechRecognitionCompilationResult compilationResult = čakajte na rozpoznávač. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Výsledok:" + compilationResult. ToString ()); čakať na rozpoznávač. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Status:" + compilationResult. Status); }}

Začíname s reintegráciou, alebo ďalším RecognizerResultGenerated recebe os comandos que foram interpretados e compara com os comandos com os que estão configurados em um arquivo xml que foi criado e inserido on solução.

Možné sú rôzne druhy portfólií, ktoré môžu zahŕňať všetky možné ukážky (väčšina) skrytia (pozadia) a vývoj najnovšej prognózy (predchádzajúca) novinka (notícia).

súkromná asynchrónna neplatnosť RecognizerResultGenerated (relácia SpeechContinuousRecognitionSession, argumenty SpeechContinuousRecognitionResultGeneratedEventArgs) {

počet int = args. Result. SemanticInterpretation. Properties. Count;

// Vyhľadajte rôzne značky a inicializujte premenné

Reťazcový cieľ = args. Result. SemanticInterpretation. Properties. ContainsKey („cieľ“)? args. Result. SemanticInterpretation. Properties ["target"] [0]. ToString (): "";

Reťazec cmd = args. Result. SemanticInterpretation. Properties. ContainsKey ("cmd")?

args. Result. SemanticInterpretation. Properties ["cmd"] [0]. ToString (): "";

Reťazcové zariadenie = args. Result. SemanticInterpretation. Properties. ContainsKey („zariadenie“)?

args. Result. SemanticInterpretation. Properties ["zariadenie"] [0]. ToString (): "";

// Najprv skontrolujte, na ktoré zariadenie sa používateľ odvoláva

if (cmd. Equals ("show"))

{

if (device. Equals ("prognóza")) {Consulta_previsao (); } else if (device. Equals ("news")) {Consulta_noticias (); } else {//Debug. WriteLine("Neznáme zariadenie "); }

} else if (cmd. Equals ("skryť"))

{

if (device. Equals ("prognóza")) {//Tempo. Text = ""; čakajte toto. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Teraz to funguje, pretože beží na vlákne používateľského rozhrania: this. Max_tit. Text = ""; this. Min_tit. Text = ""; this. Min. Text = ""; this. Max. Text = ""; this. Img_Tempo. Source = new BitmapImage (new Uri ("ms-appx: ///Images/blank.png"));

});

}

else if (device. Equals ("news")) {await this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Toto už funguje, pretože beží na vlákne používateľského rozhrania: toto. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = "";}); } else {// Debug. WriteLine ("Neznáme zariadenie"); }} else {//Debug. WriteLine("Neznámy príkaz "); }

}

Krok 4: Programação - Exibir Previsão Do Tempo

Môžete vyhľadávať prognózy prehliadok, alebo svoje Consulta_previsao envia uma requisição HTTP ao site CPTEC do INPE, que retorna and previsão do tempo em um arquivo xml. Apotuje a leitura do xml, uma imagem é mostrada na tela de acordo com a previsão e também são mostradas as temperaturas máxima e mínima.

súkromná asynchrónna neplatnosť Consulta_previsao () {

HttpClient httpcliente = nový HttpClient ();

// HttpResponseMessage resp = httpcliente. GetAsync ("https://servicos.cptec.inpe.br/XML/cidade/222/previsao.xml"). Result; var resp = httpcliente. GetAsync ("https://servicos.cptec.inpe.br/XML/cidade/222/previsao.xml"). Výsledok; resp. EnsureSuccessStatusCode (); var respbody = resp. Content. ReadAsStringAsync (); XmlDocument previsao = nový XmlDocument ();

previsao. LoadXml (respbody. Výsledok);

XmlElement root = previsao. DocumentElement;

Uzly XmlNodeList = root. GetElementsByTagName ("tempo");

reťazec prevtempo = (uzly. Item (0). InnerText);

reťazec prevtempo1 = (uzly. Item (1). InnerText); reťazec prevtempo2 = (uzly. Item (2). InnerText); reťazec prevtempo3 = (uzly. Item (3). InnerText); uzly = root. GetElementsByTagName ("minima"); reťazec tempmin = (uzly. Item (0). InnerText); uzly = root. GetElementsByTagName ("maxima"); reťazec tempmax = (uzly. Item (0). InnerText);

reťazec rsultado_previsao = "";

prepínač (predchádzajúca teplota)

{case "ec": rsultado_previsao = "Chuvas_Isoladas.png"; prestávka; prípad "ci": rsultado_previsao = "Chuvas_Isoladas.png"; prestávka; prípad "c": rsultado_previsao = "Chuva.png"; prestávka; prípad "in": rsultado_previsao = "Instavel.png"; prestávka; prípad "pp": rsultado_previsao = "Chuva.png"; prestávka; prípad "cm": rsultado_previsao = "Chuva.png"; prestávka; prípad "cn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; prestávka; prípad "pt": rsultado_previsao = "Chuva.png"; prestávka; prípad "pm": rsultado_previsao = "Chuvas_Isoladas.png"; prestávka; prípad "np": rsultado_previsao = "Chuva.png"; prestávka; prípad "pc": rsultado_previsao = "Chuva.png"; prestávka; prípad "pn": rsultado_previsao = "Nublado.png"; prestávka; prípad "cv": rsultado_previsao = "Chuva.png"; prestávka; prípad "ch": rsultado_previsao = "Chuva.png"; prestávka; prípad "t": rsultado_previsao = "Tempestade.png"; prestávka; prípad "ps": rsultado_previsao = "Sol.png"; prestávka; prípad "e": rsultado_previsao = "Sol_Encoberto.png"; prestávka; prípad "n": rsultado_previsao = "Nublado.png"; prestávka; prípad "cl": rsultado_previsao = "Sol.png"; prestávka; prípad "nv": rsultado_previsao = "Nevoeiro.png"; prestávka; prípad "g": rsultado_previsao = "Neve.png"; prestávka; prípad "ne": rsultado_previsao = "Neve.png"; prestávka; prípad "nd": rsultado_previsao = "na.png"; prestávka; prípad "pnt": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; prestávka; prípad "psc": rsultado_previsao = "Chuva.png"; prestávka; prípad "pcm": rsultado_previsao = "Chuva.png"; prestávka; prípad "pct": rsultado_previsao = "Chuva.png"; prestávka; prípad "pcn": rsultado_previsao = "Chuva.png"; prestávka; prípad "npt": rsultado_previsao = "Chuva.png"; prestávka; prípad "npn": rsultado_previsao = "Chuva.png"; prestávka; prípad "ncn": rsultado_previsao = "Chuva.png"; prestávka; prípad "nct": rsultado_previsao = "Chuva.png"; prestávka; prípad "ncm": rsultado_previsao = "Chuva.png"; prestávka; prípad "npm": rsultado_previsao = "Chuva.png"; prestávka; prípad "npp": rsultado_previsao = "Chuva.png"; prestávka; prípad "vn": rsultado_previsao = "Instavel.png"; prestávka; prípad "ct": rsultado_previsao = "Chuva.png"; prestávka; prípad "ppn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; prestávka; prípad "ppt": rsultado_previsao = "Chuva.png"; prestávka; prípad "ppm": rsultado_previsao = "Chuva.png"; prestávka;

}

čakajte toto. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Teraz to funguje, pretože beží na vlákne používateľského rozhrania: this. Max_tit. Text = "Máxima"; this. Min_tit. Text = "Mínima"; this. Min. Text = tempmin + "°"; this. Max. Text = tempmax + "°"; this. Img_Tempo. Source = new BitmapImage (new Uri ("ms-appx: /// Obrázky/" + rsultado_previsao));});

}

Krok 5: Programação - Exibir Notícias

Môžete vyhľadávať spravodajské relácie, alebo konzultovať s inými užívateľmi, ako sú napríklad HTTP, alebo odosielať správy z BBC, kde môžete načítať XML. Vzhľadom na to, že niektoré hlavné poznámky môžu obsahovať textové bloky.

súkromná asynchrónna neplatnosť Consulta_noticias () {

HttpClient httpcliente2 = nový HttpClient ();

var resp2 = httpcliente2. GetAsync ("https://feeds.bbci.co.uk/portuguese/rss.xml"). Výsledok;

resp2. EnsureSuccessStatusCode (); var respbody2 = resp2. Content. ReadAsStringAsync (); XmlDocument noticia = nový XmlDocument ();

noticia. LoadXml (respbody2. Výsledok);

XmlElement root2 = noticia. DocumentElement;

XmlNodeList nodes2 = root2. GetElementsByTagName (@"title");

čakajte na to. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () =>

{this. News1. Text = (uzly2. Item (2). InnerText); this. News2. Text = (nodes2. Item (3). InnerText); this. News3. Text = (nodes2. Item (4). InnerText); this. News4. Text = (uzly2. Item (5). InnerText); this. News5. Text = (uzly2. Item (6). InnerText);

});

}

Krok 6: Conclusão

Ao reproduzir esé inštrukcie, ktoré môžu mať jednu z možných detekcií comandos z vozového parku využiť alguma placa com o Windos IoT Core instalado. Basta criar o arquivo de gramática com os comandos desejados.

Autor: Egon Patrick Marques Silva

Frederico Clark

Odporúča: