Mục lục:

Espelho Mágico: 6 bước
Espelho Mágico: 6 bước

Video: Espelho Mágico: 6 bước

Video: Espelho Mágico: 6 bước
Video: ESPELHOS MÁGICOS / NAVES IMPERIAIS | MORADA (CLIPE OFICIAL) 2024, Tháng mười một
Anonim
Image
Image

Neste Sách hướng dẫn mostramos como criar um protótipo de um espelho inteligente que projeta Informações de clima e notícias, Pracizando comandos de voz.

Embora seja o projeto de um espelho, não bộ chó como useizar um devido a contratempos.

Bước 1: Phần cứng

Phần cứng
Phần cứng

Bảng rồng 410c

Bảng âm thanh tầng lửng

Bước 2:

Hình ảnh
Hình ảnh

Para a programmação foi useizado o Visual Studio Community 2017, e a linguagem c #. Một giao diện gráfica foi feita useizando o trình soạn thảo XAML do Visual Studio.

Bước 3: Programação - Detecção De Voz

O primeiro passo, foi trabalhar com a detecção de voz. Một Bo mạch Lửng âm thanh khác nhau já Kéui dois tích hợp các vi sóng, que foram useizados para a detecção. Không có Visual Studio, hãy sử dụng thư mục Windows. Media. SpeechRecognition para decodificar a voz.

Foi useizado 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"); Trình nhận dạng SpeechRecognizer = mới SpeechRecognizer (idioma); Recogzer. StateChanged + = RecognizerStateChanged; Recogzer. ContinuousRecognitionSession. ResultGenerated + = RecognizerResultGenerated; string fileName = String. Format (SRGS_FILE); StorageFile contextContentFile = await Package. Current. InstalledLocation. GetFileAsync (fileName); SpeechRecognitionGrammarFileConstraint contextConstraint = new SpeechRecognitionGrammarFileConstraint (contextContentFile); Recogzer. Constraints. Add (văn phạmConstraint); SpeechRecognitionCompilationResult compilationResult = await Recogzer. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Kết quả:" + compilationResult. ToString ()); đang chờ trình nhận dạng. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Trạng thái:" + compilationResult. Status); }}

Após iniciar o rechecimento, o método RecognizerResultGenerated Collectbe os comandos que forampretados 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 usedizados foram show (mostrar) e hide (esconder) e o que deve ser mostrado project (previsão) e news (notícias).

private async void RecognizerResultGenerated (phiên SpeechContinuousRecognitionSession, SpeechContinuousRecognitionResultGeneratedEventArgs args) {

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

// Kiểm tra các thẻ khác nhau và khởi tạo các biến

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

Chuỗi cmd = args. Result. SemanticInterpretation. Properties. ContainsKey ("cmd")?

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

String device = args. Result. SemanticInterpretation. Properties. ContainsKey ("thiết bị")?

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

// Đầu tiên hãy kiểm tra thiết bị mà người dùng đề cập đến

if (cmd. Equals ("show"))

{

if (device. Equals ("dự báo")) {Consulta_previsao (); } else if (device. Equals ("news")) {Consulta_noticias (); } else {//Debug. WriteLine(" Thiết bị không xác định "); }

} else if (cmd. Equals ("ẩn"))

{

if (device. Equals ("dự báo")) {//Tempo. Text = ""; Hãy chờ đợi điều này. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPainst. High, () => {// Tính năng này hiện hoạt động, vì nó đang chạy trên chuỗi giao diện người dùng: 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")) {đang chờ cái này. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPainst. High, () => {// Tính năng này hiện hoạt động vì nó đang chạy trên chuỗi giao diện người dùng: this. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = "";}); } else {// Debug. WriteLine ("Thiết bị không xác định"); }} else {//Debug. WriteLine(" Lệnh không xác định "); }

}

Bước 4: Programação - Exibir Previsão Do Tempo

Se o comando de voz Detado for show dự báo, o método Consulta_previsao envia uma suggestiçã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 = new 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 = new XmlDocument ();

previsao. LoadXml (respbody. Result);

XmlElement root = previsao. DocumentElement;

Các nút XmlNodeList = root. GetElementsByTagName ("nhịp độ");

string prevtempo = (node. Item (0). InnerText);

string prevtempo1 = (node. Item (1). InnerText); string prevtempo2 = (node. Item (2). InnerText); string prevtempo3 = (node. Item (3). InnerText); node = root. GetElementsByTagName ("minima"); string tempmin = (node. Item (0). InnerText); node = root. GetElementsByTagName ("maxima"); string tempmax = (node. Item (0). InnerText);

string rsultado_previsao = "";

chuyển đổi (trước đó)

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

}

Hãy chờ đợi điều này. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPainst. High, () => {// Tính năng này hiện hoạt động vì nó đang chạy trên chuỗi giao diện người dùng: 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: /// Hình ảnh / "+ rsultado_previsao));});

}

Bước 5: Lập trình - Exibir Notícias

Se o comando Detado for show news, o método Consulta_noticias envia uma suggestição HTTP ao feed de notícias da BBC, que também retorna um XML. Như cinco primeiras notícias são exibidas na tela em textblocks.

private async void Consulta_noticias () {

HttpClient httpcliente2 = new HttpClient ();

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

resp2. EnsureSuccessStatusCode (); var respbody2 = resp2. Content. ReadAsStringAsync (); XmlDocument Notesia = new XmlDocument ();

Notesia. LoadXml (respbody2. Result);

XmlElement root2 = Notesia. DocumentElement;

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

chờ đợi điều này. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPainst. High, () =>

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

});

}

Bước 6: Kết luận

Ao reproduzir esse Guidables, será possível realizar detecção de comandos de voz useizando alguma coroa com o Windos IoT Core instalado. Basta criar o arquivo de gramática com os comandos desejados.

Autores: Egon Patrick Marques Silva

Frederico Clark

Đề xuất: