Satura rādītājs:

Espelho Mágico: 6 soļi
Espelho Mágico: 6 soļi

Video: Espelho Mágico: 6 soļi

Video: Espelho Mágico: 6 soļi
Video: Espelhos Mágicos (Oficina G3) solo cover - LINE6 HELIX 2024, Novembris
Anonim
Image
Image

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

Embora seja o projeto de um espelho, nē, kad jūs varat izmantot devido un contratempos.

1. darbība. Aparatūra

Aparatūra
Aparatūra

Dragonboard 410c

Audio starpstāvu dēlis

2. darbība:

Attēls
Attēls

Para a programção foi utilizado o Visual Studio Community 2017, and a linguagem c#. Grafiskais interfeiss Visual Studio redaktors XAML.

3. darbība: Programação - Detecção De Voz

O primeiro passo, foi trabalhar com a detecção de voz. Placa Audio Mezzanine Board ir aprīkots ar mikrofoniem, kas ir integrēti, un to izmantošanas para un detekcijas. No Visual Studio, izmantojiet Windows biblioteka. Media. SpeechRecognition para decodificar a voz.

Ja izmantojat vai izmantojat 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 ("lv-ASV"); SpeechRecognizer atpazīšanas ierīce = jauns SpeechRecognizer (idioma); atpazinējs. StateChanged += RecognizerStateChanged; atpazinējs. ContinuousRecognitionSession. ResultGenerated += RecognizerResultGenerated; string fileName = String. Format (SRGS_FILE); StorageFile grammarContentFile = gaidīt Package. Current. InstalledLocation. GetFileAsync (faila nosaukums); SpeechRecognitionGrammarFileConstraint grammarConstraint = new SpeechRecognitionGrammarFileConstraint (grammarContentFile); atpazīšanas līdzeklis. Ierobežojumi. Pievienot (gramatikaContraint) SpeechRecognitionCompilationResult compilationResult = gaida atpazīšanu. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Rezultāts:" + compilationResult. ToString ()); gaidīt atpazīstamību. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Statuss:" + compilationResult. Status); }}

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

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

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

// Pārbaudiet dažādus tagus un inicializējiet mainīgos

String target = args. Result. SemanticInterpretation. Properties. ContainsKey ("mērķis")? args. Result. SemanticInterpretation. Properties ["target"] [0]. ToString (): "";

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

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

Stīgu ierīce = args. Result. SemanticInterpretation. Properties. ContainsKey ("ierīce")?

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

// Vispirms pārbaudiet, uz kuru ierīci lietotājs atsaucas

ja (cmd. Equals ("parādīt"))

{

ja (device. Equals ("prognoze")) {Consulta_previsao (); } cits if (device. Equals ("news")) {Consulta_noticias (); } cits {//Debug. WriteLine("Nezināma ierīce "); }

} cits if (cmd. Equals ("slēpt"))

{

if (device. Equals ("prognoze")) {//Tempo. Text = ""; gaidiet šo. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Tas tagad darbojas, jo tas darbojas lietotāja saskarnes pavedienā: 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 for this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Tagad tas darbojas, jo tas darbojas UI pavedienā: šis. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = "";}); } else {// Debug. WriteLine ("Nezināma ierīce"); }} else {//Debug. WriteLine("Unnown Command "); }

}

4. solis: Programação - Exibir Previsão Do Tempo

Skatiet prognozes šovā, lai uzzinātu, vai ir jākonsultējas ar iepriekšēju informāciju. 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 = jauns 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 = jauns XmlDocument ();

previsao. LoadXml (respbody. Result);

XmlElement sakne = previsao. DocumentElement;

XmlNodeList mezgli = root. GetElementsByTagName ("temps");

virkne prevtempo = (mezgli. Vienums (0). Iekšējais teksts);

virkne prevtempo1 = (mezgli. Vienums (1). Iekšējais teksts); virkne prevtempo2 = (mezgli. Vienums (2). Iekšējais teksts); virkne prevtempo3 = (mezgli. Vienums (3). Iekšējais teksts); mezgli = root. GetElementsByTagName ("minimums"); virkne tempmin = (mezgli. Item (0). InnerText); mezgli = root. GetElementsByTagName ("maxima"); virkne tempmax = (mezgli. Vienums (0). Iekšējais teksts);

virkne rsultado_previsao = "";

slēdzis (iepriekš)

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

}

gaidiet šo. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Tagad tas darbojas, jo tas darbojas UI pavedienā: this. Max_tit. Text = "Máxima"; this. Min_tit. Teksts = "Mínima"; this. Min. Text = tempmin + "°"; this. Max. Text = tempmax + "°"; this. Img_Tempo. Source = new BitmapImage (new Uri ("ms-appx: /// Attēli/" + rsultado_previsao));});

}

5. solis: Programação - Exibir Notícias

Skatiet ziņu šovus, lai uzzinātu par jaunumiem, vai arī konsultāciju ziņojumi, kas nepieciešami, lai pieprasītu HTTP, izmantojot BBC ziņu plūsmu, kā arī retrospektīvu XML. Kā cinco primeiras notícias são exibidas un tela em textblocks.

private async void Consulta_noticias () {

HttpClient httpcliente2 = jauns HttpClient ();

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

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

noticia. LoadXml (respbody2. Result);

XmlElement root2 = noticia. DocumentElement;

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

gaidiet šo. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () =>

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

});

}

6. solis: Conclusão

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

Autori: Egons Patriks Marks Silva

Frederiko Klārks

Ieteicams: