Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cum sterg mails din Promotions

Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Dupa 20 ani de facultate, am uita...
 Mobile.de ofera imprumut de bani ...

problema test grila

Digi24 a disparut de pe TV Lg

Drept de proprietate intelectuala...
 Jante noi shitbox

Trinitas TV 4K

Dacia 1316 cu 6 usi ...

Frecventa modificata radio
 Un nou pericol pt batrani

Ar trebui sa vindem imobiliarele ...

Dupa renuntarea la aparat dentar

pelerinaj in Balcik
 

Problemă loop c# Visual Studio

- - - - -
  • Please log in to reply
6 replies to this topic

#1
AktivShack

AktivShack

    New Member

  • Grup: Junior Members
  • Posts: 7
  • Înscris: 21.01.2018
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.
removed link, added code and tags


#2
mhanor

mhanor

    Senior Member

  • Grup: Senior Members
  • Posts: 2,019
  • Înscris: 12.01.2004
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
mhanor

mhanor

    Senior Member

  • Grup: Senior Members
  • Posts: 2,019
  • Înscris: 12.01.2004
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
AktivShack

AktivShack

    New Member

  • Grup: Junior Members
  • Posts: 7
  • Înscris: 21.01.2018

View Postmhanor, 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
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,039
  • Înscris: 24.02.2006
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
AktivShack

AktivShack

    New Member

  • Grup: Junior Members
  • Posts: 7
  • Înscris: 21.01.2018
@_Smiley_
Am incercat si doar prin microfon separat ca unica sursa de input.

View Post_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
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,039
  • Înscris: 24.02.2006
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

Second Opinion 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

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate