Tartalomjegyzék:

Espelho Mágico: 6 lépés
Espelho Mágico: 6 lépés

Videó: Espelho Mágico: 6 lépés

Videó: Espelho Mágico: 6 lépés
Videó: MILENINHA FINGE BRINCAR DE PRINCESA 6 ❤ Chips e o Espelho Mágico que Muda o Rosto | Magic Chips 2024, November
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, ha nem tudja használni a devido -t és a contratempos -t.

1. lépés: Hardver

Hardver
Hardver

Dragonboard 410c

Audio Mezzanine Board

2. lépés:

Kép
Kép

Para a programção foi utilizado o Visual Studio Community 2017, e a linguagem c#. A kezelőfelület használható a XAML Visual Studio szerkesztőjében.

3. lépés: Programação - Detecção De Voz

O primeiro passo, foi trabalhar com a detecção de voz. A Placa Audio Mezzanine Board játssza a mikrofonokat, és használja a mikrofonokat. No Visual Studio, biblioteca Windows. Media. SpeechRecognition para decodificar a voz.

Foi utilizado o método encontrado aqui para in inicialização da detecção de voz, que é mostrado também abaixo.

private async void InicializaVoz () {var idioma = new Windows. Globalization. Language ("hu-US"); SpeechRecognizer felismerő = új SpeechRecognizer (idioma); felismerő.állapotChanged += RecognizerStateChanged; felismerő. ContinuousRecognitionSession. ResultGenerated += RecognizerResultGenerated; string fileName = String. Format (SRGS_FILE); StorageFile grammarContentFile = wait Package. Current. InstalledLocation. GetFileAsync (fájlnév); BeszédfelismerésGrammarFileConstraint grammarConstraint = new SpeechRecognitionGrammarFileConstraint (grammarContentFile); felismerő. Korlátozások. Add (grammarConstraint); SpeechRecognitionCompilationResult compilationResult = várja a felismerőt. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Result:" + compilationResult. ToString ()); várja a felismerőt. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Állapot:" + compilationResult. Status); }}

Após iniciar o reconhecimento, vagy met 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 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 prognosis (previsão) e news (notícias).

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

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

// Ellenőrizze a különböző címkéket, és inicializálja a változókat

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 ("device")?

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

// Először ellenőrizze, hogy a felhasználó melyik eszközre hivatkozik

if (cmd. Equals ("show"))

{

if (device. Equals ("előrejelzés")) {Consulta_previsao (); } else if (device. Equals ("news")) {Consulta_noticias (); } else {//Debug. WriteLine("Nem ismert eszköz "); }

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

{

if (device. Equals ("előrejelzés")) {//Tempo. Text = ""; várd meg ezt. = ""; 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 to this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Ez most működik, mert a felhasználói felületen fut: this. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = "";}); } else {// Debug. WriteLine ("Ismeretlen eszköz"); }} else {//Debug. WriteLine("Unknown Command "); }

}

4. lépés: Programação - Exibir Previsão Do Tempo

Az előrejelzések megjelenítéséhez kattintson a Consulta_previsao envia uma requisição HTTP ao 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 e também são mostradas as temperaturas máxima e mínima.

private async void Consulta_previsao () {

HttpClient httpcliente = új 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"). Eredmény; ill. EnsureSuccessStatusCode (); var respbody = resp. Content. ReadAsStringAsync (); XmlDocument previsao = new XmlDocument ();

previsao. LoadXml (respbody. Result);

XmlElement gyökere = previsao. DocumentElement;

XmlNodeList csomópontok = root. GetElementsByTagName ("tempo");

string prevtempo = (csomópontok. Item (0). Belső szöveg);

string prevtempo1 = (csomópontok. Tétel (1). Belső szöveg); string prevtempo2 = (csomópontok. Tétel (2). Belső szöveg); string prevtempo3 = (csomópontok. Tétel (3). Belső szöveg); csomópontok = root. GetElementsByTagName ("minimum"); karakterlánc tempmin = (csomópontok. Item (0). Belső szöveg); csomópontok = root. GetElementsByTagName ("maxima"); karakterlánc tempmax = (csomópontok. Item (0). Belső szöveg);

string rsultado_previsao = "";

kapcsoló (előzetes)

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

}

várd meg ezt. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Ez most működik, mert a felhasználói felületen fut: 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: /// Képek/" + rsultado_previsao));});

}

5. lépés: Programação - Exibir Notícias

Keresse meg a híreket a show -hírekhez, vagy mutasd ki a Consulta_noticias envia -t, mert meg kell követelnie a HTTP -t a BBC hírcsatornáiból, és töltse le az XML -t. Mint cinco primeiras notícias são exibidas és tela em textblocks.

private async void Consulta_noticias () {

HttpClient httpcliente2 = új HttpClient ();

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

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

noticia. LoadXml (respbody2. Result);

XmlElement root2 = noticia. DocumentElement;

XmlNodeList csomópontok2 = root2. GetElementsByTagName (@"title");

várjon erre. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () =>

{this. News1. Text = (csomópontok2. Item (2). Belső szöveg); this. News2. Text = (csomópontok2. Item (3). Belső szöveg); this. News3. Text = (csomópontok2. Item (4). Belső szöveg); this. News4. Text = (csomópontok2. Item (5). Belső szöveg); this. News5. Text = (csomópontok2. Item (6). Belső szöveg);

});

}

6. lépés: Conclusão

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

Autó: Egon Patrick Marques Silva

Frederico Clark

Ajánlott: