Realtidsplottande diagram

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Tottish
Inlägg: 847
Blev medlem: 30 juni 2007, 19:11:37
Ort: Oslo, Norge

Realtidsplottande diagram

Inlägg av Tottish »

Hallå kära EFare!

Jag håller på att utveckla en applikation där jag i Excel får en del data inmatade och vill åskådliggöra dessa data i realtid på ett linjediagram. Tänk klassisk Seismograf på film, typ. Uppdateringsfrekvensen bör vara typ 2Hz.

Kort beskrivning av det jag redan provat men som gått i stöpet: (Kan hoppas över för den som har bråttom och har en färdig lösning på tungan)
Har gjort lite olika varianter utan att helt lyckas med det jag vill åstadkomma.
1. Provade att göra ett diagram i Excel, helt sonika, men det blinkade när det uppdaterades.
2. Provade att göra en separat UserForm (eget fönster) med VBA och ritade upp ett diagram med Chart 11.0 från Microsoft Office Web Components där uti men fick samma problem. Det blinkade till ibland (ofta) när det uppdaterades vilket blir väldigt tröttsamt och titta på om man ska sitta och glo en stund.
3. Exporterade aktuell data till .CSV-fil och tittade på det med LiveGraph (OpenSource Java-program för grafritning). Såg bra ut men här kom jag inte på något vettigt sätt att få grafen att "rulla med" eller ens att från Excel/VBA kunna rensa grafen vilket också kunde ha varit en acceptabel lösning.

Så min fråga är då:
Någon som har någon idé på hur jag ska plotta min graf? Sitter nu och funderar på en lösning i C#/VB.NET (express) och jag tror att jag börjar gå den vägen om inte någon här har en bättre idé. Saken är att jag inte vet om även dessa .NET diagram blinkar till när de uppdateras så det är rätt mycket jobb för att prova då jag verkligen inte är vass på VS Express...
Krav på lösningen som efterfrågas:
1. Minst 1Hz uppdateringsfrekvens
2. Flimmerfritt
3. Se skaplig ut. Gärna lite flashigare än bara en svart, 1px bred linje på en vit bakgrund.
4. Gratis/billigt. (Innehar redan office licens)

Tack så mycket för ordet, kära vänner! Ha en strålande dag!
MVH
/Tottish
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: Realtidsplottande diagram

Inlägg av JimmyAndersson »

Hei!

Ett oscilloskop? :)

Jag skulle nog ha valt 2'an ändå och försökt lösa blinkningarna.
Hur man löser det beror lite på hur du ritar/rensar fönstret.

Om bilden ritas upp samtidigt som man tittar på den, sedan rensas det och ritas upp igen så kan man göra så att bilden ritas upp i bakgrunden och sedan visar den, samtidigt som en ny bild börjar ritas upp i bakgrunden.
Tyvärr har jag för lite VBA i huvudet nu för att komma ihåg exakt hur man gör.

Annars kan man kanske låta bli att rensa fönstret mellan varje uppdatering och istället rita den förra kurvan med
bakgrundsfärgen samtidigt som den nya kurvan ritas. X blir alltså samma för "förra kurvan" och "nya kurvan".
Förra kurvans Y läses från en buffer (med gamla värdena) och ritas med bakgrundsfärgen, samtidigt som den
nya kurvan får sin Y från de nya mätningarna och ritas med förgrundsfärgen.
Så brukar jag lösa det i QBasic och i grafiska displayer. :)
Tottish
Inlägg: 847
Blev medlem: 30 juni 2007, 19:11:37
Ort: Oslo, Norge

Re: Realtidsplottande diagram

Inlägg av Tottish »

Lite taskig samplingsfrekvens för att var ett skop, va? :)

Hmmm... Angående 2an.
Jag har en spreadsheet komponent (också den från OWC-paketet) och en Chart-komponent. När jag uppdaterar så gör jag helt enkelt så att jag kopierar innehållet från databladet i Excel in i spreadsheet-fönstret på userform:en (som ligger osynligt i bakgrunden) och sedan använder jag .Refresh-kommandot på chartkomponenten. Vet inte om det är meningen att det ska gå men jag får i alla fall inte till det så att diagrammet hämtar värdena direkt från excelbladet, därför använder jag spreadsheet:et som mellansteg.
Är inte säker på hur jag ska implementera det som du beskriver men det är inte en bild som jag ritar upp utan det är alltså ett "riktigt" diagram, men det kanske du förstått redan? :)

Tack för responsen Jimmy!
/Tottish
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: Realtidsplottande diagram

Inlägg av JimmyAndersson »

det är inte en bild som jag ritar upp utan det är alltså ett "riktigt" diagram, men det kanske du förstått redan?

Jodå, jag skrev bara "bild" för att det blev så långt att skriva "ritandet av diagrammet" hela tiden. :)
Det låter som att du gör som jag tänkte med det första förslaget, bortsett från mellanlandningen i spreadsheet-fönstret.
Minns tyvärr inte om det finns någon färdig komponent som gör att mitt andra förslag går att utföra. (Går iofs att göra själv om man vill, men det kanske finns en smidigare väg.)

Jag har ingen konkret idé just nu, så jag får överlämna till de som vet. :)

Några frågor förresten:
Hur kommer datan in i Excel?
Måste Excel vara inblandat i den slutliga lösningen?
Tottish
Inlägg: 847
Blev medlem: 30 juni 2007, 19:11:37
Ort: Oslo, Norge

Re: Realtidsplottande diagram

Inlägg av Tottish »

...skriva "ritandet av diagrammet" hela tiden...
OK, ville bara klargöra eftersom jag sett att vissa faktiskt ritar upp bilder till dylika ting. :)

Tyvär så måste nog Excel vara med i den slutgiltiga lösningen då insticket "problemlösaren" (SOLVER.XLAM) används för att analysera den inkommande datan och det är väl ett ganska avancerat numeriskt lösnings-verktyg som man kanske inte kan implementera hur som helst... Men kanske, kanske skulle det kunna tänkas att XLAM-modulen kan användas direkt från t.ex. VB.NET? Då skulle man ju faktiskt slippa Excel. Tål att kollas upp.

Tack för förslagen Jimmy. Ska kika lite mer på det med att "rita upp i bakgrunden" och se om jag kan få bort blinket.

Ha det bra!
/Tottish
sm4rpq
Inlägg: 19
Blev medlem: 14 november 2009, 09:03:48
Ort: Karlskoga

Re: Realtidsplottande diagram

Inlägg av sm4rpq »

För vissa komponenter i Delphi brukar det vara så enkelt att man sätter ett DoubleBuffer-property till true.
Tottish
Inlägg: 847
Blev medlem: 30 juni 2007, 19:11:37
Ort: Oslo, Norge

Re: Realtidsplottande diagram

Inlägg av Tottish »

Tack för det tipset sm4rpq men det verkar tyvärr inte finnas någon sådan funktion för chart-objektet...
/Tottish

Edit: Hehe, blir nog någon form av manuell dubbelbuffer. Lägger två grafobjekt som jag visar/döljer om vartannat och det verkar faktiskt funka. :lol:
Inte så snyggt men om någon har ett bättre förslag så är jag all ears, annars får det nog bli så här tattigt.

God kväll, gott folk!
/Tottish
xxargs
Inlägg: 10189
Blev medlem: 23 september 2006, 14:28:27
Ort: Södertälje

Re: Realtidsplottande diagram

Inlägg av xxargs »

ojojoj, här sitter folk och önskar 1-2 uppdateringar i sekunden på datorer som går i flera GHz och kanske dubbel-core och mer än det.

kommer ihåg att man under linux runt 1997 kunde köra xspectrum i den obuffrade läget med 120 utritade uppdateringar av FFT-diagrammet per sekund på en 133 MHz dator ( jepp den ritade ut digrammet, rensade och ritade ut igen per CRT frame uppdatering och då är det ändå skickat som X-windows kommandon mellan klienten och X-servern i en grafisk desktopmiljö och inte någon eget jox att skriva direkt i videominnet och liknande).

vart är vi på väg med vår datakraft egentligen - sport att bränna så mycket mips som möjligt på att göra så lite det går??
Tottish
Inlägg: 847
Blev medlem: 30 juni 2007, 19:11:37
Ort: Oslo, Norge

Re: Realtidsplottande diagram

Inlägg av Tottish »

Instämmer helt xxargs. (sitter faktiskt t.om. på en i7 quadcore med hyperthreading :oops: )

Är inte så hemma på det här med processorarkitetektur och dylikt men det känns ju fullkommligt beffängt att detta ska behöva utgöra någon som helst svårighet att åstadkomma. Men det är väl så när man lockas in under MS/.NET-flaggan i hopp om att det ska gå fort att slänga ihop något enkelt. :D

Ha det fint grabs and girls!
/Tottish
Skriv svar