Оглавление:

Эспельо Магико: 6 шагов
Эспельо Магико: 6 шагов

Видео: Эспельо Магико: 6 шагов

Видео: Эспельо Магико: 6 шагов
Видео: ДЭУ ЭСПЕРО - КОЛЕСНИЦА БОГОВ 2! 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, на языке c #. Графический интерфейс для редактора XAML в Visual Studio.

Шаг 3: Programação - Detecção De Voz

O primeiro passo, foi trabalhar com Detecção de voz. Плата Audio Mezzanine Board с возможностью интеграции микрофонов, которая используется для детектирования. Нет Visual Studio, используется библиотека Windows. Media. SpeechRecognition для декодирования и воспроизведения.

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

private async void InicializaVoz () {var idioma = new Windows. Globalization. Language ("en-US"); Распознаватель SpeechRecognizer = новый SpeechRecognizer (идиома); распознаватель. StateChanged + = RecognizerStateChanged; распознаватель. ContinuousRecognitionSession. ResultGenerated + = RecognizerResultGenerated; строка fileName = String. Format (SRGS_FILE); StorageFile grammarContentFile = ожидание Package. Current. InstalledLocation. GetFileAsync (имя_файла); SpeechRecognitionGrammarFileConstraint grammarConstraint = новый SpeechRecognitionGrammarFileConstraint (grammarContentFile); распознаватель. Constraints. Add (grammarConstraint); SpeechRecognitionCompilationResult compilationResult = ожидание распознавателя. CompileConstraintsAsync (); если (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Результат:" + compilationResult. ToString ()); ждать распознавателя. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Статус:" + compilationResult. Status); }}

Após iniciar o reconhecimento, o método RecognizerResultGenerated Recebe os команд, которые используются для интерпретации и сравнения, для команд, которые являются конфигурацией их архива xml, который используется для критического и инсеридного решения.

Como não no foi Возможные вставки o idioma português, os comandos utilizados foram show (mostrar) e hide (esconder) e o que deve ser mostrado прогноз (previsão) и новости (notícias).

private async void RecognizerResultGenerated (сеанс SpeechContinuousRecognitionSession, аргументы SpeechContinuousRecognitionResultGeneratedEventArgs) {

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

// Проверяем наличие разных тегов и инициализируем переменные

Строка target = args. Result. SemanticInterpretation. Properties. ContainsKey ("target")? args. Result. SemanticInterpretation. Properties ["цель"] [0]. ToString (): "";

Строка cmd = args. Result. SemanticInterpretation. Properties. ContainsKey ("cmd")?

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

Строковое устройство = args. Result. SemanticInterpretation. Properties. ContainsKey («устройство»)?

args. Result. SemanticInterpretation. Properties ["устройство"] [0]. ToString (): "";

// Сначала проверяем, к какому устройству обращается пользователь

если (cmd. Equals ("показать"))

{

если (device. Equals ("прогноз")) {Consulta_previsao (); } else if (device. Equals ("новости")) {Consulta_noticias (); } else {//Debug. WriteLine("Неизвестное устройство "); }

} else if (cmd. Equals ("скрыть"))

{

if (device. Equals ("прогноз")) {//Tempo. Text = ""; await this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Теперь это работает, потому что выполняется в потоке пользовательского интерфейса: this. Max_tit. Text = ""; this. Min_tit. Text = ""; this. Min. Text = ""; this. Max. Text = ""; this. Img_Tempo. Source = new BitmapImage (новый Uri ("ms-appx: ///Images/blank.png"));

});

}

else if (device. Equals ("news")) {await this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Теперь это работает, потому что выполняется в потоке пользовательского интерфейса: this. 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

Эта команда для определения прогноза показа, или метод Consulta_previsao envia Uma Requisição HTTP, или сайт CPTEC do INPE, который возвращает предварительный просмотр темпа в 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 minima.

private async void Consulta_previsao () {

HttpClient httpcliente = новый 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; соответственноEnsureSuccessStatusCode (); var respbody = resp. Content. ReadAsStringAsync (); XmlDocument previsao = новый XmlDocument ();

previsao. LoadXml (respbody. Result);

XmlElement root = previsao. DocumentElement;

Узлы XmlNodeList = root. GetElementsByTagName («темп»);

строка prevtempo = (nodes. Item (0). InnerText);

строка prevtempo1 = (nodes. Item (1). InnerText); строка prevtempo2 = (nodes. Item (2). InnerText); строка prevtempo3 = (nodes. Item (3). InnerText); узлы = root. GetElementsByTagName («минимум»); строка tempmin = (nodes. Item (0). InnerText); узлы = root. GetElementsByTagName ("максимумы"); строка tempmax = (nodes. Item (0). InnerText);

строка rsultado_previsao = "";

переключатель (предтемпо)

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

}

await this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Теперь это работает, потому что выполняется в потоке пользовательского интерфейса: 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 (новый Uri ("ms-appx: /// Images / "+ rsultado_previsao));});

}

Шаг 5: Programação - Exibir Notícias

Эта команда обнаруживает новости шоу, метод Consulta_noticias envia Uma Requisição HTTP и поток новостей BBC, который возвращается в XML. Как 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/portugintage/rss.xml"). Result;

resp2. EnsureSuccessStatusCode (); var respbody2 = resp2. Content. ReadAsStringAsync (); XmlDocument noticia = новый XmlDocument ();

noticia. LoadXml (respbody2. Result);

XmlElement root2 = noticia. DocumentElement;

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

ждать this. 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: Заключение

Кроме того, можно воспроизвести инструкции, которые можно использовать для обнаружения команд, которые используются для установки Windows IoT Core. Basta criar o arquivo de gramática com os comandos desejados.

Авторес: Эгон Патрик Маркес Сильва

Фредерико Кларк

Рекомендуемые: