Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

windows forms i konstantno citanje podataka

[es] :: .NET :: .NET Desktop razvoj :: windows forms i konstantno citanje podataka

[ Pregleda: 2801 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

negative7
Ivan Raic

Član broj: 186110
Poruke: 151
*.st.cable.xnet.hr.



Profil

icon windows forms i konstantno citanje podataka18.02.2014. u 18:07 - pre 129 meseci
E ovako: Imam neki uredjaj iz kojeg trebam sto brze dobijati podatke. I to u console application radi. Svako 20ms uzmem podatak. Recimo neku bool vrijednost. Uglavnom je li nesto ukljuceno ili iskljuceno.
E sad ja trebam nesto crtati tj. mijenjati boje u ovisnosti je li nesto ukljuceno ili iskljuceno, tj. u ovisnosti o stanjima tih bitova(bool vrijednosti).
Problem je kad u windows forms pokusam citati te vrijednosti iz uredjaja program mi odma crash-a jer to moram da stavim u infinite loops(citam podatke recimo svako 100ms)..nesto tipa
Code:

While(1)
{
     citaj iz uredjaja....
pauza 100ms

}


Program odma puca cim stavim ovaku petlju u windows forms, cak i bez citanja iz uredjaja...pa se pitam kako mogu najbolje uzimati podatke iz uredjaja i uredjivati grafiku na windows forms o ovisnosti stanja iz uredjaja?
AKo treba mogu jos detaljnije objasniti problem.
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
..106.109.adsl.dyn.beotel.net.

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: windows forms i konstantno citanje podataka18.02.2014. u 18:13 - pre 129 meseci
Nikada, ni po koju cenu, nikada ne blokiraj glavnu nit sa mrtvom petljom ili nečim što se dugo izvršava (ili pauzom) - tvoj GUI će ti zablokirati. Najjednostavniji način ti je da napraviš tajmer koji će da okida na 20 ms. Međutim, moraš paziti na činjenicu da je rezolucija Windows.Forms.Timer-a 55 ms, pa će to možda biti previše sporo. Pogledaj ovo http://www.codeproject.com/Art...ia-Timer-for-the-NET-Framework ili http://stackoverflow.com/quest...s-forms-application-in-c-sharp

Ako ti je preciznost Windows.Forms.Timer-a dovoljna, onda pogledaj ovo http://www.youtube.com/watch?v=98c200lL-OY
 
Odgovor na temu

negative7
Ivan Raic

Član broj: 186110
Poruke: 151
*.st.cable.xnet.hr.



Profil

icon Re: windows forms i konstantno citanje podataka18.02.2014. u 18:29 - pre 129 meseci
OK, ako sam dobro razumio trebao bi napraviti neki timer da okida svako 55+ ms? da bi sve stimalo dobro?
55ms je dovoljno brzo, ali ajde kad si vec to spomenuo taj timer od windows forms...bili li bio veliki problem kad bi taj timer okidao svako 20ms a windows forms timer je 55ms?
tj bi li mi opet program pucao?

Hvala na brzom odgovoru
 
Odgovor na temu

Dusan Kondic
Programer
ZR "Parametar" Ljubovija
Ljubovija

Član broj: 49961
Poruke: 225
*.adsl-a-3.sezampro.rs.

Sajt: www.drinacoding.com


+14 Profil

icon Re: windows forms i konstantno citanje podataka18.02.2014. u 18:50 - pre 129 meseci
Ono što ti je Burgos rekao i što je suština je da taj posao prebaciš u drugi thread, različit od onoga u kome se iscrtava Form tvoje aplikacije (glavni thread). Dakle tvoj "glavni radnik" iscrtava ekran i prikazuje podatke iz uređaja koje prikuplja "drugi radnik".
System.Timers.Timer bi trebao da je bolji od onog u System.Windows.Forms.Timer. Davno sam ovo pročitao pa se ne sećam zbog čega ali ako te interesuje, izgoogle-uj.
Što se minimalnog vremena tiče ono nije konstantno. Evo jednog kratkog teksta o tome: "The default timer resolution on Windows 7 is 15.6 milliseconds (ms). Some applications reduce this to 1 ms, which reduces the battery run time on mobile systems by as much as 25 percent."
Pozdrav
 
Odgovor na temu

negative7
Ivan Raic

Član broj: 186110
Poruke: 151
*.st.cable.xnet.hr.



Profil

icon Re: windows forms i konstantno citanje podataka18.02.2014. u 19:05 - pre 129 meseci
ok, a jeli da radim da rastavim program na niti pa to u drugoj niti drzim ili da program skoci na neku funkciju svako X ms?
 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1199



+842 Profil

icon Re: windows forms i konstantno citanje podataka18.02.2014. u 19:18 - pre 129 meseci
Citat:
Dusan Kondic: System.Timers.Timer bi trebao da je bolji od onog u System.Windows.Forms.Timer. Davno sam ovo pročitao pa se ne sećam zbog čega ali ako te interesuje, izgoogle-uj.


Mislim, Windows.Forms timer okida UI event, a za non-UI thread System.Timers.Timer.
 
Odgovor na temu

Dusan Kondic
Programer
ZR "Parametar" Ljubovija
Ljubovija

Član broj: 49961
Poruke: 225
*.adsl-a-3.sezampro.rs.

Sajt: www.drinacoding.com


+14 Profil

icon Re: windows forms i konstantno citanje podataka18.02.2014. u 22:31 - pre 129 meseci
Timer podrazumevano radi u posebnom thread-u tako da je tvoj posao da u Timers_Elapsed kupiš podatke iz uređaja i upisuješ ih u npr. lokalne promenljive i to će, kao što rekoh, podrazumevano da se dešava u posebnom thread-u.
Osnovni thread treba da prikazuje te podatke na ekranu i pitanje je samo na koji način to treba da se izvede. Ako postaviš petlju u kojoj će neprekidno da se prikazuje trenutna numerička vrednost na ekranu, zbog brze promene vrednosti, neće moći da vidi ništa smisleno. Jedno rešenje je da trenutnu vrednost prikazuješ kao vrednost ProgressBar-a a drugo da ubaciš drugi timer koji će da prikazuje novu vrednost kao numeričku vrednost npr. svake sekunde.
Iznesi svoje zahteve a mi ćemo da predlažemo rešenja.
Pozdrav.
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: windows forms i konstantno citanje podataka

[ Pregleda: 2801 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.