Sisällysluettelo:

Espelho Mágico: 6 vaihetta
Espelho Mágico: 6 vaihetta

Video: Espelho Mágico: 6 vaihetta

Video: Espelho Mágico: 6 vaihetta
Video: Airtouch самой себе в домашних условиях. Коррекция окрашивания аиртач. Тонирование волос. Пошагово. 2024, Marraskuu
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 tai projeto de um espelho, ei tarvitse käyttää hyödyksi devido ja contratempos.

Vaihe 1: Laitteisto

Laitteisto
Laitteisto

Dragonboard 410c

Audio Mezzanine Board

Vaihe 2:

Kuva
Kuva

Ohjelman käyttäminen Visual Studio Community 2017: ssä ja kielenkäyttö c#. Käyttöliittymä, joka on tarkoitettu käytettäväksi tai XAML -editori Visual Studioon.

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

O primeiro passo, trabalhar com a detecção de voz. Placa Audio Mezzanine Board -levyllä on integroidut mikrofonit, jotka voidaan käyttää hyväkseen. Ei Visual Studiota, joka käyttää Windows. Media. SpeechRecognition -kirjastoa.

Käytettävissäsi on metotodistus, joka on tarkoitettu aloitusviestille, joka on voidetussa tilassa, ja tämä on paras.

private async void InicializaVoz () {var idioma = new Windows. Globalization. Language ("en-US"); SpeechRecognizer -tunnistin = uusi SpeechRecognizer (idioma); tunnistin. StateChanged += RecognizerStateChanged; tunnistin. JatkuvaRecognitionSession. ResultGenerated += RecognizerResultGenerated; merkkijono tiedostonimi = Jono. Muoto (SRGS_FILE); StorageFile grammarContentFile = odota Package. Current. InstalledLocation. GetFileAsync (tiedostonimi); SpeechRecognitionGrammarFileConstraint kielioppiConstraint = new SpeechRecognitionGrammarFileConstraint (grammarContentFile); tunnistin. Rajoitukset. Add (kielioppirajoitus); SpeechRecognitionCompilationResult compilationResult = odottaa tunnistinta. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Result:" + compilationResult. ToString ()); odota tunnistinta. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Tila:" + compilationResult. Status); }}

Após iniciar o reconhecimento, or método 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 előre (previsão) e news (notícias).

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

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

// Tarkista eri tunnisteet ja alusta muuttujat

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

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

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

Merkkijonolaite = args. Result. SemanticInterpretation. Properties. ContainsKey ("laite")?

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

// Tarkista ensin, mihin laitteeseen käyttäjä viittaa

jos (cmd. Equals ("näytä"))

{

if (device. Equals ("ennuste")) {Consulta_previsao (); } else if (device. Equals ("news")) {Consulta_noticias (); } else {//Debug. WriteLine("Tuntematon laite "); }

} muu jos (cmd. Equals ("piilota"))

{

if (device. Equals ("ennuste")) {//Tempo. Text = ""; odota this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Tämä toimii nyt, koska se toimii käyttöliittymässä: this. Max_tit. Text = ""; this. Min_tit. Text = ""; this. Min. Text = ""; this. Max. Text = ""; this. Img_Tempo. Source = uusi BitmapImage (uusi Uri ("ms-appx: ///Images/blank.png"));

});

}

else if (device. Equals ("news")) {wait to this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Tämä toimii nyt, koska se toimii käyttöliittymässä: tämä. Uutiset1. Teksti = ""; tämä. Uutiset2. Teksti = ""; tämä. Uutiset3. Teksti = ""; tämä. Uutiset4. Teksti = ""; tämä. Uutiset5. Teksti = "";}); } else {// Debug. WriteLine ("Tuntematon laite"); }} else {//Debug. WriteLine("Tuntematon komento "); }

}

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

Jos haluat nähdä ennusteen komennon, voit kysyä tietoja Consulta_previsao envia uma requisição HTTP ao site CPTEC do INPE, que retorna a previsão do tempo em um arquivo xml. Após a leitura do xml, uma imagem é mostrada na tela de acordo com a previsão and também são mostradas as temperaturas máxima e mínima.

private async void Consulta_previsao () {

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

previsao. LoadXml (respbody. Result);

XmlElement root = previsao. DocumentElement;

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

merkkijono prevtempo = (solmut. Item (0). InnerText);

merkkijono prevtempo1 = (solmut. Item (1). InnerText); merkkijono prevtempo2 = (solmut. Item (2). InnerText); merkkijono prevtempo3 = (solmut. Item (3). InnerText); solmut = root. GetElementsByTagName ("minimit"); merkkijono tempmin = (solmut. Item (0). InnerText); solmut = root. GetElementsByTagName ("maxima"); merkkijono tempmax = (solmut. Item (0). InnerText);

merkkijono rsultado_previsao = "";

kytkin (aikaisempi)

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

}

odota this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Tämä toimii nyt, koska se toimii käyttöliittymässä: this. Max_tit. Text = "Máxima"; this. Min_tit. Teksti = "Mínima"; this. Min. Text = tempmin + "°"; this. Max. Text = tempmax + "°"; this. Img_Tempo. Source = new BitmapImage (new Uri ("ms-appx: /// Kuvat/" + rsultado_previsao));});

}

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

Nähdäksesi kommentoidaksesi show -uutisia, oi Consulta_noticias envia uma Requireção HTTP for a feed de notícias at BBC, que também retorna um XML. Cinco primeiras notícias são exibidas ja tela em textblocks.

private async void Consulta_noticias () {

HttpClient httpcliente2 = uusi HttpClient ();

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

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

noticia. LoadXml (respbody2. Result);

XmlElement root2 = noticia. DocumentElement;

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

odota tätä. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () =>

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

});

}

Vaihe 6: 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 tai arquivo de gramática com os comandos desejados.

Kirjailija: Egon Patrick Marques Silva

Frederico Clark

Suositeltava: