Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
pareri ipad 6-2018- flip

Cum au aparut supermarketurile in...

Campanii mincinoase Carrefour

Tv toshiba defect
 touchscreen navigatie stricat

bonsai - de unde?

Resetare Bonus Malus

Unitatea optica DVD-rw absenta pe...
 Problema configurare Wireguard

Dozatoare de apa, cu alimentare d...

Intarziere aterizare avioane

Accident masina reparata pe CASCO
 Probleme Ginseng Microcarpa

Un sunet pronuntat la BMW e90 318i

Caut sugestii pentru achizitionar...

Acest LNB......
 

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,067
  • Î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,067
  • Î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

Bun venit pe Forumul Softpedia!

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