Sisukord:

Espelho Mágico: 6 sammu
Espelho Mágico: 6 sammu

Video: Espelho Mágico: 6 sammu

Video: Espelho Mágico: 6 sammu
Video: 6. Easter Island - Where Giants Walked 2024, November
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, ilma et oleksite saanud kasutada devido ja contratempos.

Samm: riistvara

Riistvara
Riistvara

Dragonboard 410c

Audio Mezzanine Board

2. samm:

Pilt
Pilt

Programmi Visual Studio Community 2017 programmide kasutamiseks ja keeleks c#. Graafiline kasutajaliides ja XAML -i redigeerija Visual Studio jaoks.

3. samm: Programação - Detecção De Voz

O primeiro passo, trabalhar com a detecção de voz. Plats Audio Mezzanine Board on integreeritud mikrofonide integreeritud mikrofon, mis on ette nähtud kasutamiseks. No Visual Studio, kasutage Windowsi biblioteeki. Media. SpeechRecognition dekodeerib 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 ("en-US"); SpeechRecognizeri äratundja = new SpeechRecognizer (idioom); tunnistaja. StateChanged += RecognizerStateChanged; tunnistaja. JätkuvRecognitionSession. ResultGenerated += RecognizerResultGenerated; string fileName = String. Format (SRGS_FILE); StorageFile grammatikaContentFile = ootama Package. Current. InstalledLocation. GetFileAsync (failinimi); SpeechRecognitionGrammarFileConstraint grammatikaConstraint = new SpeechRecognitionGrammarFileConstraint (grammatikaSisufail); äratundja. Piirangud. Add (grammatikaPiirang); SpeechRecognitionCompilationResult compilationResult = ootab äratundjat. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Result:" + compilationResult. ToString ()); oota äratundja. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Olek:" + compilationResult. Status); }}

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

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

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

// Kontrollige erinevaid silte ja lähtestage muutujad

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 seade = args. Result. SemanticInterpretation. Properties. ContainsKey ("seade")?

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

// Esmalt kontrollige, millisele seadmele kasutaja viitab

kui (cmd. Võrdsed ("näita"))

{

if (device. Equals ("prognoos")) {Consulta_previsao (); } else if (device. Equals ("news")) {Consulta_noticias (); } else {//Debug. WriteLine("Tundmatu seade "); }

} muu if (cmd. Equals ("peida"))

{

if (device. Equals ("prognoos")) {//Tempo. Text = ""; oodake seda. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// See töötab nüüd, kuna see töötab kasutajaliidese lõimes: 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, () => {// See töötab nüüd, kuna see töötab kasutajaliidese lõimes: see. Uudised1. Tekst = ""; see. Uudised2. Tekst = ""; see. Uudised3. Tekst = ""; see. Uudised4. Tekst = ""; see. Uudised5. Tekst = "";}); } else {// Debug. WriteLine ("Tundmatu seade"); }} else {//Debug. WriteLine("Tundmatu käsk "); }

}

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

Näidake prognooside jaoks kommentaare, mis on ette nähtud, 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 e também são mostradas as temperaturas máxima e mínima.

private async void Consulta_previsao () {

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

previsao. LoadXml (respbody. Result);

XmlElemendi juur = previsao. DocumentElement;

XmlNodeList sõlmed = root. GetElementsByTagName ("tempo");

string prevtempo = (sõlmed. Item (0). Sisemine tekst);

string prevtempo1 = (sõlmed. Item (1). Sisemine tekst); string prevtempo2 = (sõlmed. Item (2). Sisemine tekst); string prevtempo3 = (sõlmed. Item (3). Sisemine tekst); sõlmed = root. GetElementsByTagName ("miinimumid"); string tempmin = (nodes. Item (0). InnerText); sõlmed = root. GetElementsByTagName ("maxima"); string tempmax = (nodes. Item (0). Sisemine tekst);

string rsultado_previsao = "";

lüliti (eelnev)

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

}

oodake seda. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// See töötab nüüd, kuna see töötab kasutajaliidese lõimes: this. Max_tit. Text = "Máxima"; this. Min_tit. Tekst = "Mínima"; this. Min. Text = tempmin + "°"; this. Max. Text = tempmax + "°"; this. Img_Tempo. Source = new BitmapImage (new Uri ("ms-appx: /// Pildid/" + rsultado_previsao));});

}

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

Vaadake saateuudiste avastamiseks kommentaare, vaadake Consulta_noticias envia uma nõutavat HTTP -d, mis on ette nähtud BBC BBC -le, et saada XML -i. Nagu cinco primeiras notícias são exibidas ja tela em textblocks.

private async void Consulta_noticias () {

HttpClient httpcliente2 = uus HttpClient ();

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

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

noticia. LoadXml (respbody2. Result);

XmlElementi juur2 = noticia. DocumentElement;

XmlNodeList sõlmed2 = root2. GetElementsByTagName (@"title");

oodake seda. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () =>

{this. News1. Text = (sõlmed2. Item (2). Sisemine tekst); this. News2. Text = (nodes2. Item (3). Sisemine tekst); this. News3. Text = (nodes2. Item (4). Sisemine tekst); this. News4. Text = (nodes2. Item (5). Sisemine tekst); this. News5. Text = (nodes2. Item (6). Sisemine tekst);

});

}

6. samm: 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 või arquivo de gramática com os comandos desejados.

Autorid: Egon Patrick Marques Silva

Frederico Clark

Soovitan: