Second Opinion
Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale. Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit. www.neurohope.ro |
Problemă loop c# Visual Studio
Last Updated: Oct 13 2018 20:39, Started by
AktivShack
, Oct 13 2018 10:53
·
0
#1
Posted 13 October 2018 - 10:53
Bună ziua.
Știu că încerc să fac ceva ce-mi depășește nivelul, însă vă rog, răspundeți oricum daca puteți ajuta. Până acum în liceu am lucrat doar C++ -> Code::Blocks ca environment. Am început să mă interesez de C# și Visual studio acum puțin timp, proiecte micuțe, până acum; având o problemă cu ultimul. M-am legat de System Speech, System Speech Synthesis, Speech Recognizer și Process Start. Primele, Speech Synthesis cu informație introdusă de la tastatură merge fără probleme, însă am o problemă de loop la informația introdusă vocal. **Codul este atașat, pastebin. Am 2 cazuri. 1) Introduc vocal "hi"-> răspunde hi. 2)-||- "hello" -> -||- opening google și deschide pagina în browserul default. Asta dacă ar funcționa corect. Dacă introduc "hi", răspunde "hi" -> "opening google" + deschide pagina și o dă în loop aici (în continuu "opening google" și deschide pagini în continuu. Dacă introduc "hello", trece direct la acel loop. Am încercat anumite metode folosing break points, dar cum sunt începător îmi dă cu virgulă.
Spoiler
, mulțumesc.
Edited by MarianG, 13 October 2018 - 19:23.
|
#2
Posted 13 October 2018 - 15:18
Poți oricând să dai break din Visual Studio, după ce ai pornit execuția programului tău. Execuți liniile de cod, pas cu pas (cu step over) și observi condițiile care mențin bucla infinită. Poți comenta linia de cod care deschide pagina web, ca să nu te încurce, bucla tot va rula. Așa înveți.
|
#3
Posted 13 October 2018 - 16:22
Folosește step into ca să execuți linii de cod și intri în liniile de cod ale funcțiilor/metodelor. Folosești step over ca să execuți linia de cod, fără a intra în detaliu. În cazul tău, folosește step into (am greșit sus). De fiecare dată, înainte de a da din nou step into, trebuie să te întrebi ce trebuie să se întâmple mai departe. Dacă dai din nou step into și execuția ajunge într-un punct la care nu te aștepți (de exemplu, te trezești că programul începe să execute din nou o bucată de cod pe care nu ai nevoie să o execute din nou, așa cum se întâmplă cu o buclă), trebuie să te întrebi care este motivul/condiția pentru care execuția a continuat în acest mod. Trebuie să poți să faci asta, altfel nu vei scrie niciodată cod. Preferabil să continuam discuția aici, nu pe PM.
[ https://www.youtube-nocookie.com/embed/C0vDKXIq_9A?feature=oembed - Pentru incarcare in pagina (embed) Click aici ] Edited by mhanor, 13 October 2018 - 16:30. |
#4
Posted 13 October 2018 - 16:54
mhanor, on 13 octombrie 2018 - 16:22, said:
Folosește step into ca să execuți linii de cod și intri în liniile de cod ale funcțiilor/metodelor. Folosești step over ca să execuți linia de cod, fără a intra în detaliu. În cazul tău, folosește step into (am greșit sus). De fiecare dată, înainte de a da din nou step into, trebuie să te întrebi ce trebuie să se întâmple mai departe. Dacă dai din nou step into și execuția ajunge într-un punct la care nu te aștepți (de exemplu, te trezești că programul începe să execute din nou o bucată de cod pe care nu ai nevoie să o execute din nou, așa cum se întâmplă cu o buclă), trebuie să te întrebi care este motivul/condiția pentru care execuția a continuat în acest mod. Trebuie să poți să faci asta, altfel nu vei scrie niciodată cod. Preferabil să continuam discuția aici, nu pe PM. [ https://www.youtube-nocookie.com/embed/C0vDKXIq_9A?feature=oembed - Pentru incarcare in pagina (embed) Click aici ] Până la ultimul private void rulează bine; de acolo am impresia ca o ia puțin pe lângă. Cu step-into -> Ultimul pas înainte de a deschide ultimul void, funcția speech preia comanda vocală. Intră în void, a se inițializează, intră în switch. De aici... eu sunt pe lângă. Intră în cazul hello cu opening google, deschide pagină. Iese din switch(până la final de void, dar nu iese din void), intră din nou în switch, pe cazul Hi, iese din nou din switch, intră înapoi în switch pe cazul Hi, iese din nou, intră pe google... (asta însemnând ca dau step-into în continuu și dau de pașii ăștia); aici m-am oprit, am ieșit din debugging. Mă deranjează și că nu e constantă "eroarea". Uneori dacă introduc vocal Hi(la rulare), dă rezultat normal. Alteori dă buclă dupa. Alteori da buclă doar după vreo 3-4 ori. |
#5
Posted 13 October 2018 - 17:56
as zice ca acel s.SpeakAsync("hi") se aude in boxe, si SpeechRecognitionEngine-ul se sesizeaza si-l mai recunoaste o data. de aici bucla infinita (si motivul pentru care nu apare problema intotdeauna).
|
#6
Posted 13 October 2018 - 18:04
@_Smiley_
Am incercat si doar prin microfon separat ca unica sursa de input. _Smiley_, on 13 octombrie 2018 - 17:56, said:
as zice ca acel s.SpeakAsync("hi") se aude in boxe, si SpeechRecognitionEngine-ul se sesizeaza si-l mai recunoaste o data. de aici bucla infinita (si motivul pentru care nu apare problema intotdeauna). Edited by AktivShack, 13 October 2018 - 18:04. |
#7
Posted 13 October 2018 - 20:39
incearca sa afisezi un mesaj in consola in loc de s.SpeakAsync
ps: inca ceva: in codul tau "SpeechRecognitionEngine reco" e o variabila locala din constructor, deci nu te prea poti baza pe ea in afara acestuia. in practica o sa functioneze, pentru ca te-ai legat de un eveniment si GC-ul o sa o lase in pace, dar nu-i ok ce faci acolo. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users