Turinys:

Espelho Mágico: 6 žingsniai
Espelho Mágico: 6 žingsniai

Video: Espelho Mágico: 6 žingsniai

Video: Espelho Mágico: 6 žingsniai
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Lapkritis
Anonim
Image
Image

Neste Instructables mostramos como criar um protótipo de um espelho inteligente que projeta information of clima e notícias, utilizando comandos de voz.

Embora seja o projeto de um espelho, nenaudodami to, kaip panaudoti devido ir contratempos.

1 žingsnis: Aparatūra

Techninė įranga
Techninė įranga

Dragonboard 410c

Garso tarpinė lenta

2 žingsnis:

Vaizdas
Vaizdas

„Visual Studio Community 2017“programa ir kalbos programa c#. Sąsaja, skirta naudoti ir redaktorius „XAML“, skirtas „Visual Studio“.

3 žingsnis: Programação - Detecção De Voz

O primeiro passo, foi trabalhar com a detecção de voz. „Audio Mezzanine Board“yra integruotų mikrofonų mikrofonas, kurio naudojimo galimybės yra skirtingos. Nėra „Visual Studio“, naudojama „Windows“biblioteka. „Media. SpeechRecognition“dekodifikatoriui ir voz.

Naudokite šį metodą arba įjunkite vandens pradžią, pradinę vizą, o tada - visišką também abaixo.

private async void InicializaVoz () {var idioma = new Windows. Globalization. Language ("lt-US"); SpeechRecognizer atpažinimo priemonė = naujas SpeechRecognizer (idioma); atpažinimo priemonė. StateChanged += RecognizerStateChanged; atpažinimo priemonė. ContinuousRecognitionSession. ResultGenerated += RecognizerResultGenerated; string fileName = String. Format (SRGS_FILE); StorageFile grammarContentFile = laukti Package. Current. InstalledLocation. GetFileAsync (failo pavadinimas); SpeechRecognitionGrammarFileConstraint gramatikaConstraint = new SpeechRecognitionGrammarFileConstraint (grammarContentFile); atpažinimo priemonė. Apribojimai. Pridėti (gramatika SpeechRecognitionCompilationResult compilationResult = laukti atpažinimo. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Result:" + compilationResult. ToString ()); laukti atpažinimo. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Status:" + compilationResult. Status); }}

Após iniciar o reconhecimento, o metode RecognizerResultGenerated recebe os comandos que foram interpretados and compara com os comandos com os que estão configurados em um arquivo xml que foi criado e inserido na solução.

Como não foi possível inserir o idioma português, os comandos utilizados foram show (mostrar) e hide (esconder) e o que deve ser mostrado prognoze (previsão) e news (notícias).

private async void RecognizerResultGenerated (SpeechContinuousRecognitionSession session, SpeechContinuousRecognitionResultGeneratedEventArgs args) {

int count = args. Result. SemanticInterpretation. Properties. Count;

// Patikrinkite, ar nėra skirtingų žymų, ir inicijuokite kintamuosius

Styginių tikslas = args. Result. SemanticInterpretation. Properties. ContainsKey ("tikslas")? args. Result. SemanticInterpretation. Properties ["target"] [0]. ToString (): "";

Styga cmd = args. Result. SemanticInterpretation. Properties. ContainsKey ("cmd")?

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

Styginių įrenginys = args. Result. SemanticInterpretation. Properties. ContainsKey ("device")?

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

// Pirmiausia patikrinkite, į kurį įrenginį naudotojas kreipiasi

if (cmd. Equals ("rodyti"))

{

if (device. Equals ("prognozė")) {Consulta_previsao (); } else if (device. Equals ("news")) {Consulta_noticias (); } else {//Debug. WriteLine("Nežinomas įrenginys "); }

} else if (cmd. Equals ("slėpti"))

{

if (device. Equals ("prognozė")) {//Tempo. Text = ""; palaukite this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Tai dabar veikia, nes veikia UI gijoje: 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")) {wait this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Tai dabar veikia, nes veikia UI gijoje: tai. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = "";}); } else {// Debug. WriteLine ("Nežinomas įrenginys"); }} else {//Debug. WriteLine("Nežinoma komanda "); }

}

4 žingsnis: Programação - Exibir Previsão Do Tempo

Jei norite rodyti prognozės rodymo komandą, apsilankykite „Consulta_previsao envia“, kuriai reikia HTTP ar svetainės CPTEC do INPE. Após a leitura do xml, uma imagem é mostrada na tela de acordo com a previsão and também são mostradas as temperatura máxima e mínima.

private async void Consulta_previsao () {

HttpClient httpcliente = naujas 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"). Result; resp. EnsureSuccessStatusCode (); var respbody = resp. Content. ReadAsStringAsync (); XmlDocument previsao = naujas XmlDocument ();

previsao. LoadXml (respbody. Result);

XmlElement root = previsao. DocumentElement;

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

eilutė prevtempo = (mazgai. Item (0). Vidinis tekstas);

eilutė prevtempo1 = (mazgai. Item (1). InnerText); eilutė prevtempo2 = (mazgai. Item (2). Vidinis tekstas); eilutė prevtempo3 = (mazgai. Item (3). InnerText); mazgai = root. GetElementsByTagName ("minimumai"); eilutė tempmin = (mazgai. Item (0). InnerText); mazgai = root. GetElementsByTagName ("maxima"); string tempmax = (mazgai. Item (0). InnerText);

eilutė rsultado_previsao = "";

jungiklis (išankstinis)

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

}

palaukite this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Tai dabar veikia, nes veikia UI gijoje: 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: /// Vaizdai/" + rsultado_previsao));});

}

5 žingsnis: Programação - Exibir Notícias

Žiūrėkite naujienas šou naujienoms, o Consulta_noticias envia uma Requireção HTTP for a feed de notícias at BBC, que também retorna um XML. Kaip „cinco primeiras notícias são exibidas“ir „tela em textblocks“.

private async void Consulta_noticias () {

HttpClient httpcliente2 = naujas HttpClient ();

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

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

noticia. LoadXml (respbody2. Result);

XmlElement root2 = noticia. DocumentElement;

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

laukti šio. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () =>

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

});

}

6 žingsnis: „Conclusão“

Ao reproduzir esse instructables, será possível realizar detecção de comandos de voz utilizando alguma placa com or Windos IoT Core instalado. Basta criar o arquivo de gramática com os comandos desejados.

Autoriai: Egon Patrick Marques Silva

Frederico Clarkas

Rekomenduojamas: