Πίνακας περιεχομένων:

Espelho Mágico: 6 βήματα
Espelho Mágico: 6 βήματα

Βίντεο: Espelho Mágico: 6 βήματα

Βίντεο: Espelho Mágico: 6 βήματα
Βίντεο: Экстра Блондин! Осветление волос Порошком | Уроки окрашивания волос Евы Лорман пошагово! 2024, Νοέμβριος
Anonim
Image
Image

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

Είμαστε έτοιμοι να προχωρήσουμε, και να χρησιμοποιήσουμε και να αντιμετωπίσουμε ένα αντίθετο.

Βήμα 1: Υλικό

Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα

Dragonboard 410c

Audio Mezzanine Board

Βήμα 2:

Εικόνα
Εικόνα

Για ένα πρόγραμμα χρήσης της Visual Studio Community 2017, και μιας γλώσσας c#. Μια διεπαφή για τη χρήση του προγράμματος επεξεργασίας XAML για το Visual Studio.

Βήμα 3: Programação - Detecção De Voz

O Primeiro passo, foi trabalhar com a detecção de voz. Μια πλατφόρμα Audio Mezzanine μπορεί να χρησιμοποιηθεί από μικροφωνικά στοιχεία, για χρήση από τον εντοπισμό. Χωρίς Visual Studio, χρησιμοποιήστε μια βιβλιοθήκη Windows. Media. SpeechRecognition για αποκωδικοποίηση ενός voz.

Χρησιμοποιείστε τη χρήση του μέτρου που συνδέεται με την είσοδο και την ανίχνευσή σας, που είναι πολύ πιο εύκολη.

private async void InicializaVoz () {var idioma = new Windows. Globalization. Language ("en-US"); Αναγνωριστής SpeechRecognizer = νέο SpeechRecognizer (ιδίωμα); αναγνωριστικό. StateChanged += RecognizerStateChanged; αναγνωριστικό. ContinuousRecognitionSession. ResultGenerated += RecognizerResultGenerated; string fileName = String. Format (SRGS_FILE); StorageFile grammarContentFile = αναμονή Package. Current. InstalledLocation. GetFileAsync (όνομα αρχείου); SpeechRecognitionGrammarFileConstraint grammarConstraint = νέο SpeechRecognitionGrammarFileConstraint (grammarContentFile); αναγνωριστής. Περιορισμοί. Προσθήκη (grammarConstraint); SpeechRecognitionCompilationResult compilationResult = αναμένουμε τον αναγνωριστή. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Result:" + compilationResult. ToString ()); αναμονή αναγνώρισης. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Κατάσταση:" + compilationResult. Status); }}

Αποκλείστε το reconhecimento, το método 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.

Έχουμε τη δυνατότητα να κατανοήσουμε τα ιδιώματα της πορτογαλίας, καθώς και να χρησιμοποιήσουμε για να παρουσιάσουμε (πιο πολύ) και να κρύψουμε (να συνοδεύσουμε) και να παραδεχτούμε την πρόβλεψη (πρόβλεψη) και ειδήσεις (ειδήσεις).

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

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

// Ελέγξτε για διαφορετικές ετικέτες και προετοιμάστε τις μεταβλητές

String target = args. Result. SemanticInterpretation. Properties. ContainsKey ("στόχος"); args. Result. SemanticInterpretation. Properties ["target"] [0]. ToString (): "";

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

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

String device = args. Result. SemanticInterpretation. Properties. ContainsKey ("συσκευή");

args. Result. SemanticInterpretation. Properties ["συσκευή"] [0]. ToString (): "";

// Πρώτα ελέγξτε σε ποια συσκευή αναφέρεται ο χρήστης

εάν (cmd. Equals ("εμφάνιση"))

{

if (device. Equals ("forecast")) {Consulta_previsao (); } else if (device. Equals ("ειδήσεις")) {Consulta_noticias (); } else {//Debug. WriteLine("Άγνωστη συσκευή "); }

} else if (cmd. Equals ("απόκρυψη"))

{

if (device. Equals ("forecast")) {//Tempo. Text = ""; περιμένετε αυτό. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Αυτό λειτουργεί τώρα, επειδή τρέχει στο νήμα UI: this. Max_tit. Text = ""; this. Min_tit. Text = ""; this. Min. Text = ""; this. Max. Text = ""; this. Img_Tempo. Source = νέο BitmapImage (νέο Uri ("ms-appx: ///Images/blank.png")) ?

});

}

else if (device. Equals ("ειδήσεις")) {περιμένετε αυτό. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Αυτό τώρα λειτουργεί, επειδή τρέχει στο νήμα διεπαφής χρήστη: αυτό. 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 και να χρειαστείτε HTTP ή έναν ιστότοπο CPTEC do INPE. Αποφασίζει για τη διαγραφή xml, για την εικόνα που χρησιμοποιείτε για την είσοδό σας σε μια προειδοποίηση και για την εξεύρεση των πιο δημοφιλών θερμοκρασιών.

private 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 root = previsao. DocumentElement;

Κόμβοι XmlNodeList = root. GetElementsByTagName ("tempo");

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);

string rsultado_previsao = "";

διακόπτης (prevtempo)

{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"; Διακοπή; θήκη "cm": 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"; Διακοπή; θήκη "pc": 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"; Διακοπή; περίπτωση "e": 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"; Διακοπή;

}

περιμένετε αυτό. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Αυτό λειτουργεί τώρα, επειδή τρέχει στο νήμα UI: 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: /// Εικόνες/" + rsultado_previsao));}};

}

Βήμα 5: Programação - Exibir Notícias

Απαιτείται εντοπισμός για ειδήσεις στην εκπομπή, καθώς και συμβουλές Consulta_noticias σε περίπτωση που χρειάζεστε 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/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 = (κόμβοι2. Στοιχείο (4). InnerText); this. News4. Text = (κόμβοι2. Στοιχείο (5). InnerText); this. News5. Text = (nodes2. Item (6). InnerText);

});

}

Βήμα 6: Συμπέρασμα

Μπορείτε επίσης να αναπαραγάγετε οδηγίες, μπορείτε να πραγματοποιήσετε εντοπισμό των υπηρεσιών σας και να χρησιμοποιήσετε την εγκατάσταση του Windos IoT Core. Basta criar o arquivo de gramática com os comandos desejados.

Autores: Egon Patrick Marques Silva

Φρειδερίκο Κλαρκ

Συνιστάται: