[Megoldva] gnuplot újrarajzoláskor ne vibráljon
Tudom, zavaros a cím, ezért elmondom. Valósidejű mérési adatokat szeretnék kirajzoltatni gnuplottal. Egy awk programban szerzem be a mérési eredményeket, majd írok tmpfs-re egy file-t, amelyik hízik mondjuk 100 mérési eredményig, aztán a 101. mérési eredmény megérkezte után az elsőt törlöm, tehát innentől kezdve a file mindig az utolsó 100 mérést tartalmazza. Van neki időbélyege, ez lesz az x tengelyen, illetve utána négy mérési pont ezek az y tengelyeken. Set multiplot layout 2,1-et használok, így két koordinátarendszer van egymás alatt, mindegyik koordinátarendszerben két-két időfüggvényt ábrázolok. A plot loop nem aszinkron, mert akkor előfordulhatna, hogy épp íródik az új adatfile, amikor olvassa a gnuplot. A szinkronizációt úgy oldom meg, hogy a
gnuplot -
parancsnak pipe-olom awk-ból a gnuplot scriptet azután, hogy a legutóbbi ideiglenes adatfile előállt. Mindig felülírom az ideiglenes adatfile-t, tehát abból csak egy van, de mindig más tartalommal.
A problémám az, hogy ez így villódzik, mert mindig újrarajzol mindent. Viszont újra is kell, mert az idő halad, tehát az x tengely felirata biztosan változik.
Hogyan lehet a gnuplot-ot dupla bufferelésre bírni? Az előző kép látszana, amíg az újat rajzolná, majd buffer cserével azonnal, flicker mentesen lenne ott az új kép.
Megoldás
Részint workaround. Nem használom a multiplotot. Két gnuplot processt futtatok, mindegyiket egy-egy wxt terminál ablakkal. Mindegyik ablakban két függvényt ábrázolok. A gnuplottal csak egyszer olvastatom fel a teljes scriptet, amikor 4 mérési pontom van. Ennyiből már illeszkedő görbét is tud rajzolni, ha szeretném. Bár most nem szeretném. :) Utána mérési pontonként újra generálom az adatfile-t, majd pipe-olom a gnuplot process-eknek az alábbiakat:
reread
replot
Más dolgom nincs vele, szépen rajzol, nem villódzik. 100 mérési pontig nő az adatfile-om, utána viszont mindig csak az utolsó 100 mérési eredmény van benne. Természetesen timestamp van a mérési pontokhoz.
- Tovább ([Megoldva] gnuplot újrarajzoláskor ne vibráljon)
- 297 megtekintés