Բովանդակություն:

Espelho Mágico: 6 քայլ
Espelho Mágico: 6 քայլ

Video: Espelho Mágico: 6 քայլ

Video: Espelho Mágico: 6 քայլ
Video: Mirror Cubes are too easy #shorts 2024, Նոյեմբեր
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 seja o projeto de um espelho, não houve como utilizar um devido a contratempos.

Քայլ 1: Սարքավորումներ

Սարքավորումներ
Սարքավորումներ

Dragonboard 410c

Աուդիո միջնահարկ տախտակ

Քայլ 2:

Պատկեր
Պատկեր

Visual Studio Community 2017 – ի և լեզվական լեզվի օգտագործման համար օգտագործվող ծրագրերի օգտագործման համար: Ինտերֆեյս, որն օգնում է օգտագործել XAML- ը Visual Studio- ի խմբագրիչի համար:

Քայլ 3. Programação - Detecção De Voz

O Primeiro passo, foi trabalhar com a detecção de voz: Ձայնային միջահարկային տախտակ կարող եք օգտագործել միկրոֆոնների ինտեգրադ, որոնք օգտագործվում են հայտնաբերման համար: Առանց Visual Studio- ի, օգտագործեք biblioteca Windows. Media. SpeechRecognition- ի ապակոդավորման համար:

Foi utilizado o método encontrado aqui para a inicialização da detecção de voz, que is the mostrado também abaixo:

private async void InicializaVoz () {var idioma = new Windows. Globalization. Language ("en-US"); SpeechRecognizer ճանաչող = նոր SpeechRecognizer (իդիոմա); ճանաչող. StateChanged += RecognizerStateChanged; ճանաչող. ԿոնտինարՌեկոգնիոնՍեսիան. ՌեսուլտԳեներացվել += RecognizerResultGenerated; string fileName = String. Format (SRGS_FILE); StorageFile grammarContentFile = սպասել Package. Current. InstalledLocation. GetFileAsync (ֆայլի անուն); SpeechRecognitionGrammarFileConstraint grammarConstraint = նոր SpeechRecognitionGrammarFileConstraint (grammarContentFile); ճանաչող. Սահմանափակումներ: Ավելացնել (grammarConstraint); SpeechRecognitionCompilationResult compilationResult = սպասել ճանաչողին. CompileConstraintsAsync (); եթե (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Արդյունք." + compilationResult. ToString ()); սպասել ճանաչողին. ԿոնտինարՌեկոգնիոնՍեսիան. ՍթարթԱսինքս (); } else {Debug. WriteLine ("Կարգավիճակ." + compilationResult. Status); }}

Օգտագործելով Reconhecimento, կամ մեթոդը RecognizerResultGenerated recebe os comandos que foram interpretados e compara com os comandos com os que 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 utilisados foram show (mostrar) e hide (esconder) e o que deve ser mostrado կանխատեսում (կանխատեսում) և նորություններ (տեղեկություններ):

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

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

// Ստուգեք տարբեր պիտակների առկայությունը և նախաստորագրեք փոփոխականները

Լարային թիրախ = args. Result. SemanticInterpretation. Properties. ContainsKey («թիրախ»): args. Result. SemanticInterpretation. Pro Properties ["target"] [0]. ToString (): "";

String cmd = args. Result. SemanticInterpretation. Properties. ContainsKey («cmd»):

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

Լարային սարք = args. Result. SemanticInterpretation. Properties. ContainsKey («սարք»):

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

// Նախ ստուգեք, թե որ սարքին է վերաբերում օգտվողը

եթե (սմ. հավասարումներ («ցույց տալ»))

{

if (device. Equals («կանխատեսում»)) {Consulta_previsao (); } else if (device. Equals («նորություններ»)) {Consulta_noticias (); } else {//Debug. WriteLine(" Անհայտ սարք "); }

} else if (cmd. Equals («թաքցնել»))

{

if (device. Equals («կանխատեսում»)) {//Tempo. Text = ""; սպասեք սա: = ""; this. Min. Text = ""; this. Max. Text = ""; this. Img_Tempo. Source = new BitmapImage (նոր Uri ("ms-appx: ///Images/blank.png"));

});

}

else if (device. Equals («նորություններ»)) {սպասեք սա. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Սա այժմ աշխատում է, քանի որ այն աշխատում է UI թելում. սա. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = "";}); } else {// Debug. WriteLine («Անհայտ սարք»); }} else {//Debug. WriteLine(" Անհայտ հրաման "); }

}

Քայլ 4: Programação - Exibir Previsão Do Tempo

Oուցադրման կանխատեսման համար անհրաժեշտ է պարզել, թե ինչպես է անհրաժեշտ Consulta_previsao- ն պահանջել HTTP կամ CPTEC կայքէջը կատարել INPE, որը պահանջում է արագություն 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.

մասնավոր async void Consulta_previsao () {

HttpClient httpcliente = նոր HttpClient ();

// HttpResponseMessage resp = httpcliente. GetAsync ("https://servicos.cptec.inpe.br/XML/cidade/222/previsao.xml"). Արդյունք; var resp = httpcliente. GetAsync ("https://servicos.cptec.inpe.br/XML/cidade/222/previsao.xml"). Արդյունք; resp. EnsureSuccessStatusCode (); var respbody = resp. Content. ReadAsStringAsync (); XmlDocument previsao = նոր XmlDocument ();

previsao. LoadXml (respbody. Result);

XmlElement արմատ = previsao. DocumentElement;

XmlNodeList հանգույցներ = root. GetElementsByTagName («տեմպ»);

string prevtempo = (հանգույցներ. Նյութ (0). InnerText);

string prevtempo1 = (հանգույցներ. Նյութ (1). InnerText); string prevtempo2 = (հանգույցներ. Նյութ (2). InnerText); string prevtempo3 = (հանգույցներ. Նյութ (3). InnerText); հանգույցներ = root. GetElementsByTagName («նվազագույն»); string tempmin = (հանգույցներ. Նյութ (0). InnerText); հանգույցներ = root. GetElementsByTagName ("առավելագույնը"); string tempmax = (հանգույցներ. Նյութ (0). InnerText);

տող rsultado_previsao = "";

անջատիչ (նախապես)

{case "ec": rsultado_previsao = "Chuvas_Isoladas.png"; ընդմիջում; գործ "ci": rsultado_previsao = "Chuvas_Isoladas.png"; ընդմիջում; գործ "c": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "in": rsultado_previsao = "Instavel.png"; ընդմիջում; գործ "pp": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "սմ": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "cn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; ընդմիջում; գործ "pt": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "pm": rsultado_previsao = "Chuvas_Isoladas.png"; ընդմիջում; գործ "np": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "հատ": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "pn": rsultado_previsao = "Nublado.png"; ընդմիջում; գործ "cv": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "ch": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "t": rsultado_previsao = "Tempestade.png"; ընդմիջում; գործ "ps": rsultado_previsao = "Sol.png"; ընդմիջում; գործ "ե": rsultado_previsao = "Sol_Encoberto.png"; ընդմիջում; գործ "n": rsultado_previsao = "Nublado.png"; ընդմիջում; գործ "cl": rsultado_previsao = "Sol.png"; ընդմիջում; գործ "nv": rsultado_previsao = "Nevoeiro.png"; ընդմիջում; գործ "g": rsultado_previsao = "Neve.png"; ընդմիջում; գործ "ne": rsultado_previsao = "Neve.png"; ընդմիջում; գործ "nd": rsultado_previsao = "na.png"; ընդմիջում; գործ "pnt": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; ընդմիջում; գործ "psc": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "pcm": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "pct": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "pcn": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "npt": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "npn": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "ncn": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "nct": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "ncm": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "npm": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "npp": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "vn": rsultado_previsao = "Instavel.png"; ընդմիջում; գործ "ct": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "ppn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; ընդմիջում; գործ "ppt": rsultado_previsao = "Chuva.png"; ընդմիջում; գործ "ppm": rsultado_previsao = "Chuva.png"; ընդմիջում;

}

սպասեք սա: Text = "Mínima"; this. Min. Text = tempmin + "°"; this. Max. Text = tempmax + "°"; this. Img_Tempo. Source = new BitmapImage (new Uri ("ms-appx: /// Պատկերներ/" + rsultado_previsao));}};

}

Քայլ 5: Programação - Exibir Notícias

Հաղորդագրություններ կատարեք շոուի նորությունների համար, կամ օգտագործեք Consulta_noticias Envia uma- ն, որը պահանջում է HTTP- ի կամ BBC- ի տեղեկությունների հոսք, ինչպես նաև XML- ի հետադարձ կապ: As cinco Primeiras notícias são exibidas na tela em textblocks.

private async void Consulta_noticias () {

HttpClient httpcliente2 = նոր HttpClient ();

var resp2 = httpcliente2. GetAsync ("https://feeds.bbci.co.uk/portuguese/rss.xml"). Արդյունք;

resp2. EnsureSuccessStatusCode (); var respbody2 = resp2. Content. ReadAsStringAsync (); XmlDocument noticia = նոր XmlDocument ();

noticia. LoadXml (respbody2. Result);

XmlElement root2 = noticia. DocumentElement;

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

սպասել այս. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () =>

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

});

}

Քայլ 6: Եզրակացություն

Կրկնվող հրահանգները կարող են օգտագործվել, քանի որ հնարավոր է, որ դրանք հայտնաբերվեն, երբ դրանք օգտագործվում են ՝ օգտագործելով Windos IoT Core- ի տեղադրումը: Basta criar o arquivo de gramática com os comandos desejados.

Հեղինակներ ՝ Էգոն Պատրիկ Մարկես Սիլվա

Ֆրեդերիկո Կլարկ

Խորհուրդ ենք տալիս: