Obsah:

Espelho Mágico: 6 kroků
Espelho Mágico: 6 kroků

Video: Espelho Mágico: 6 kroků

Video: Espelho Mágico: 6 kroků
Video: Pracuji v Soukromém muzeu pro bohaté a slavné. Hororové příběhy. Hrůza. 2024, Listopad
Anonim
Image
Image

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

Embora se může podílet na dalším vývoji, jako je například využití devido a contratempos.

Krok 1: Hardware

Hardware
Hardware

Dragonboard 410c

Zvuková mezipatro

Krok 2:

obraz
obraz

Je to program a použití aplikace Visual Studio Community 2017, a linguagem c#. Hlavní rozhraní pro použití editoru XAML do Visual Studio.

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

O hlavní passo, foi trabalhar com a detecção de voz. Zvukové mezaninové desky, které mám, jsou vybaveny integrovanými mikrofony, které mohou používat a detekovat. Žádné Visual Studio, použití a biblioteca Windows. Media. SpeechRecognition para decodificar a voz.

Využití a další zpracování vodních par a inicializace a detekce vozů, que é mostrado também abaixo.

private async void InicializaVoz () {var idioma = new Windows. Globalization. Language ("en-US"); SpeechRecognizer rozpoznávač = nový SpeechRecognizer (idioma); rozpoznávač. StateChanged += RecognizerStateChanged; recognitionnizer. ContinuousRecognitionSession. ResultGenerated += RecognizerResultGenerated; řetězec název_souboru = String. Format (SRGS_FILE); StorageFile grammarContentFile = čekejte Package. Current. InstalledLocation. GetFileAsync (název_souboru); SpeechRecognitionGrammarFileConstraint grammarConstraint = nový SpeechRecognitionGrammarFileConstraint (grammarContentFile); rozpoznávač. Constraints. Add (grammarConstraint); SpeechRecognitionCompilationResult compilationResult = čekejte na rozpoznávač. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Výsledek:" + compilationResult. ToString ()); čekejte na rozpoznávač. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Status:" + compilationResult. Status); }}

Počáteční inicializace nebo opětovné rozpoznání Výsledek generovaného generování přijímaných záznamů umožňuje provádět různé interpretace a porovnávání různých formátů, které mohou být konfigurovány v různých velikostech xml, což znamená, že je možné vkládat na solução.

Nejčastěji se vyskytují různé idiomy, které mohou obsahovat různé formáty show (většina) a skrytí (esconder) e o que deve ser mostrado předpovědi (předchozí) novinky a poznámky (noticas).

soukromá asynchronní neplatná RecognizerResultGenerated (relace SpeechContinuousRecognitionSession, SpeechContinuousRecognitionResultGeneratedEventArgs args) {

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

// Vyhledejte různé značky a inicializujte proměnné

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

Řetězec cmd = args. Result. SemanticInterpretation. Properties. ContainsKey ("cmd")?

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

Řetězcové zařízení = args. Result. SemanticInterpretation. Properties. ContainsKey („zařízení“)?

args. Result. SemanticInterpretation. Properties ["zařízení"] [0]. ToString (): "";

// Nejprve zkontrolujte, na které zařízení se uživatel odkazuje

if (cmd. Equals ("show"))

{

if (device. Equals ("předpověď")) {Consulta_previsao (); } else if (device. Equals ("novinky")) {Consulta_noticias (); } else {//Debug. WriteLine("Neznámé zařízení "); }

} else if (cmd. Equals ("skrýt"))

{

if (device. Equals ("prognóza")) {//Tempo. Text = ""; čekejte toto. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// To nyní funguje, protože běží na vlákně uživatelského rozhraní: 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, () => {// Nyní to funguje, protože běží na vlákně uživatelského rozhraní: toto. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = "";}); } else {// Debug. WriteLine ("Neznámé zařízení"); }} else {//Debug. WriteLine("Neznámý příkaz "); }

}

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

Detekovat můžete například předpověď počasí, například Consulta_previsao envia uma requisição HTTP ao site CPTEC do INPE, que retorna a previsão do tempo em um arquivo xml. 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.

soukromá asynchronní neplatná 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ýsledek; resp. EnsureSuccessStatusCode (); var respbody = resp. Content. ReadAsStringAsync (); XmlDocument previsao = nový XmlDocument ();

previsao. LoadXml (respbody. Result);

XmlElement root = previsao. DocumentElement;

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

řetězec prevtempo = (uzly. Item (0). InnerText);

řetězec prevtempo1 = (uzly. Item (1). InnerText); řetězec prevtempo2 = (uzly. Item (2). InnerText); řetězec prevtempo3 = (uzly. Item (3). InnerText); uzly = root. GetElementsByTagName ("minima"); řetězec tempmin = (uzly. Item (0). InnerText); uzly = root. GetElementsByTagName ("maxima"); řetězec tempmax = (uzly. Item (0). InnerText);

řetězec rsultado_previsao = "";

přepínač (předchozí teplota)

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

}

čekejte toto. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// To nyní funguje, protože běží na vlákně uživatelského rozhraní: 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

Detekovat můžete například zpravodajské zprávy, nebo více informací o službě HTTP a dalších zdrojích pro BBC, kde můžete stahovat XML. Vzhledem k tomu, že hlavní poznámky mohou mít textové bloky.

soukromá asynchronní neplatná Consulta_noticias () {

HttpClient httpcliente2 = nový HttpClient ();

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

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

noticia. LoadXml (respbody2. Výsledek);

XmlElement root2 = noticia. DocumentElement;

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

čekejte toto. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () =>

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

});

}

Krok 6: Conclusão

Ao reproduzir ese instructables, será possível realizar detecção de comandos de voz use use 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

Doporučuje: