Office 2007- risanje grafov

Pomoč pri izdelavi makrov
Odgovori
Mitja
Prispevkov: 6
Pridružen: Po Avg 21, 2006 11:50 pm

Office 2007- risanje grafov

Odgovor Napisal/-a Mitja »

Matjaž pozdravljen,

pred kratkim sem si naložil Office 2007 in na njem preiskusil VBA kodo, ki sem jo naredil v Office-u 2003.
Kot izgleda je vse kompatibilno, na problem naletim le pri risanju grafa.
Program uporabljam za zajem temperature prek USB-ja, zato je potrebno sekundno osveževanje grafa.
Najprej se mi graf sploh ni izrisoval(šele ko sem dodal DoEvents- v 2003 to ni bilo potrebno), sedaj pa za osvežitev 1 grafa porabi približno 2 s(čeprav bi moral na 1 s), tako da vmes spušča podatke.
Da je problem v funkciji za risanje grafa sem se prepričal tako, da sem jo izločil- program je brez problema zajemal podatke na vsako sekundo.

Pa še to.. pustil sem ga delovati približno pol ure (z osveževanjem grafa)- po pol ure je bil sposoben osveževati samo še na 6 s(skupaj 300 vrstic po 8 stolpcev).

Vam je mogoče jasno, kaj bi bila rešitev problema?

Hvala za odgovor in lep pozdrav!
Mitja

Še koda:

cellRange = cellStart + CellEnd
Charts(1).ChartWizard Source:=Worksheets(1).Range(cellRange), Gallery:=xlLine, _
PlotBy:=xlColumns, Format:=2, CategoryLabels:=1, SeriesLabels:=1, HasLegend:=True, _
Title:=Comment.Text + Profile + ChartNo, CategoryTitle:="Time (s)", ValueTitle:="Temperature (°C)"

DoEvents 'test Office 2007



Pa vsa čast avtorju takega foruma!!!
admin
Site Admin
Prispevkov: 3691
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Vse kar pišete je povsem logično:
  1. Pisarna 2007 je še nekajkrat večja, bolj obsežna in bolj počasna od stare pisarne. Posledično to pomeni, da na istem računalniku pač nova pisarna teče počasneje
  2. Okna niso realno časovni operacijski sistem in zato v oknih ne morete doseči, da bi nekaj počela natanko vsako sekundo.. To preprosto ni mogoče. Če boste npr. v Oknih pognali kakšno dolgotrajno operacijo se bo tista pač izvajala in vaša aplikacija ne bo mogla brati podatkov vsako sekundo. No sicer pa to vidite tudi sami ;(
  3. Zakaj v stari pisarni ni bilo potrebno DoEvents ni najbolj jasno, saj to je ukaz, ki pravzaprav Excelu sploh omogoča, da zadiha in s tem osveži graf? Res čudno.
  4. Da so stvari vse počasnejše tudi ni popolnoma nič čudno, saj ima Excel na začetku 0 podatkov po pol ure pa že (30*60 = 1800) 1800 točk za izris.
REŠITEV??? Hm, vam je ne morem kar ponuditi na pladnu, saj Excel ni primeren za tovrstne naloge... Po moje boste morali pač pristati na to, da graf izrisujete na npr. 5 sekund in upoštevati tudi to, da je graf nesmiselno risati iz 1800 točk (po pol ure) saj se na omejeni površini ekrana ne vidi 1800 točk ==> predlagam da graf rišete iz manj točk.
lp,
Matjaž Prtenjak
Administrator
Mitja
Prispevkov: 6
Pridružen: Po Avg 21, 2006 11:50 pm

Odgovor Napisal/-a Mitja »

Pozdravljeni,

v tem času sem malo pregledal forume. Na Microsoftovi strani se precej uporabnikov pritožuje nad izredno počasnim izrisovanjem grafov, v kolikor se spreminjajo podatki po y osi- točno to, kar je v mojem programu(T je na y, t na x). Imajo Dual in Quad Cor-e z 4GB RAM-a,... na Office 2000 - 2003 pa jim stvar brez problema deluje.

V stari pisarni sem uporaljal DoEvents za osveževanje polj v oknih in izris grafa. V novem Office-u, pa sem moral dodati še enega, takoj za risanjem grafa.

Po pol ure ima excel za izris 300 točk (sekunde) x 8 (8 kanalni temperaturni zajem, torej 2400 točk. Če bi bilo vse v redu bi bilo teh točk res 1800x8, vendar pa zaradi 6s med dvema zajemoma teh podatkov dobi precej manj, in pride šele do 300 točk(sekund).

Na vsakih 500s(točk) trenutno izrišem nov graf, tako da se 1800 točk razdeli v 6 grafov, zaradi preglednosti, ki ste jo omenili.

Začasno sem sedaj rešil zadevo tako, da graf narišem šele ob koncu zajema, ob pritisku tipke STOP. Graf izriše v manj kot pol sekunde, tako da bi stvar še vedno morala delovati ob sekundnem zajemu. Izgleda je res tako, kot so omenili nekateri uprabniki, da se upočasni, ko na novo osvežuje podatke na osi. Za enkraten izris pa deluje.

Če bi zajem delal na 5s, bi še vedno izgubil 1 podatek na 5s, saj v teh 2 s, kar osvežuje graf, ne bi sprejel podatka.

Lep pozdrav,
Mitja
Odgovori