Sadržaj:

Espelho Mágico: 6 koraka
Espelho Mágico: 6 koraka

Video: Espelho Mágico: 6 koraka

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

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

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

Korak 1: Hardver

Hardver
Hardver

Dragonboard 410c

Audio međuspratna ploča

Korak 2:

Image
Image

Kako biste koristili program Visual Studio Community 2017, jezički c#. Grafičko sučelje za upotrebu u uređivaču XAML do Visual Studio.

Korak 3: Programiranje - Detecção De Voz

O primeiro passo, foi trabalhar com a detecção de voz. Placa Audio Mezzanine Board nudi integraciju mikrofona, za korištenje i otkrivanje. Nema Visual Studio, koristi biblioteku Windows. Media. SpeechRecognition za dekodiranje u vozilu.

Foi utiado o método encontrado aqui para a inicialização da detektira voz, que é mostrado também abaixo.

private async void InicializaVoz () {var idioma = novi Windows. Globalization. Language ("en-US"); SpeechRecognizer prepoznavač = novi SpeechRecognizer (idioma); prepoznavač. StateChanged += RecognizerStateChanged; prepoznavač. ContinuousRecognitionSession. ResultGenerated += RecognizerResultGenerated; string fileName = String. Format (SRGS_FILE); StorageFile grammarContentFile = await Package. Current. InstalledLocation. GetFileAsync (ime datoteke); SpeechRecognitionGrammarFileConstraint grammarConstraint = novi SpeechRecognitionGrammarFileConstraint (grammarContentFile); prepoznavač. Constraints. Add (grammarConstraint); SpeechRecognitionCompilationResult compilationResult = čekati prepoznavača. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Rezultat:" + compilationResult. ToString ()); čekati prepoznavač. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Status:" + compilationResult. Status); }}

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

Kako ne biste mogli koristiti insenziju o idiomskim portugalskim jezicima, koristite komande za prikaz emisije (mostrar) i sakriti (esconder) e o que deve ser mostrado prognozu (previsão) i vijesti (notícias).

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

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

// Provjerite različite oznake i inicijalizirajte varijable

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

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

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

String device = args. Result. SemanticInterpretation. Properties. ContainsKey ("uređaj")?

args. Result. SemanticInterpretation. Properties ["uređaj"] [0]. ToString (): "";

// Prvo provjerite na koji uređaj se korisnik poziva

if (cmd. Equals ("show"))

{

if (device. Equals ("prognoza")) {Consulta_previsao (); } else if (device. Equals ("news")) {Consulta_noticias (); } else {//Debug. WriteLine("Unknown Device "); }

} else if (cmd. Equals ("hide"))

{

if (device. Equals ("prognoza")) {//Tempo. Text = ""; čekajte this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Ovo sada radi, jer radi na niti korisničkog sučelja: this. Max_tit. Text = ""; this. Min_tit. Text = ""; this. Min. Text = ""; this. Max. Text = ""; this. Img_Tempo. Source = nova BitmapImage (novi Uri ("ms-appx: ///Images/blank.png"));

});

}

else if (device. Equals ("news")) {čekaj ovo. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Ovo sada radi, jer radi na niti korisničkog interfejsa: this. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = "";}); } else {// Debug. WriteLine ("Nepoznat uređaj"); }} else {//Debug. WriteLine("Nepoznata komanda "); }

}

Korak 4: Programiranje - Exibir Previsão Do Tempo

Komando za otkrivanje emisije za prognozu emisije, za konsultacije Consulta_previsao sa zahtjevima HTTP -a ili CPTEC -a na INPE -u, retorizirajte i uskladite tempo u arquivo xml. Após a leitura do xml, image imagem é mostrada na tela de acordo com a previsão e também são mostradas as temperaturas máxima e mínima.

private async void Consulta_previsao () {

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

previsao. LoadXml (respbody. Result);

XmlElement root = previsao. DocumentElement;

XmlNodeList čvorovi = root. GetElementsByTagName ("tempo");

string prevtempo = (nodes. Item (0). InnerText);

string prevtempo1 = (nodes. Item (1). InnerText); string prevtempo2 = (nodes. Item (2). InnerText); string prevtempo3 = (nodes. Item (3). InnerText); čvorovi = root. GetElementsByTagName ("minima"); string tempmin = (nodes. Item (0). InnerText); čvorovi = root. GetElementsByTagName ("maksimumi"); string tempmax = (nodes. Item (0). InnerText);

string rsultado_previsao = "";

prekidač (prevtempo)

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

}

čekajte this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Ovo sada radi, jer radi na niti korisničkog sučelja: this. Max_tit. Text = "Máxima"; this. Min_tit. Text = "Mínima"; this. Min. Text = tempmin + "°"; this. Max. Text = tempmax + "°"; this. Img_Tempo. Source = nova BitmapImage (novi Uri ("ms-appx: /// Slike/" + rsultado_previsao));});

}

Korak 5: Programiranje - Exibir Notícias

Za otkrivanje vijesti o emisijama, o Consulta_noticias -u o zahtjevu HTTP -a ili feedu za BBC, referenciranom u XML -u. Kao cinco primeiras notícias são exibidas na tela em tekstualne blokove.

private async void Consulta_noticias () {

HttpClient httpcliente2 = novi HttpClient ();

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

resp2. EnsureSuccessStatusCode (); var respbody2 = resp2. Content. ReadAsStringAsync (); Noticia XmlDocument = novi XmlDocument ();

noticia. LoadXml (respbody2. Result);

XmlElement root2 = noticia. DocumentElement;

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

čekajte ovo. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () =>

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

});

}

Korak 6: Zaključite

Ao reproducira ove instrukcije, a moguće je realizirati otkrivanje komandi za upotrebu korištenja alguma placa na Windos IoT Core instalaciji. Basta criar o arquivo de gramática com os comandos desejados.

Autores: Egon Patrick Marques Silva

Frederico Clark

Preporučuje se: