Archiv verlassen und diese Seite im Standarddesign anzeigen : Graph-Animation für Oszi möglich?
Hallo,
ich experimentiere gerade ein wenig mit Grafik-Displays und wollte eigenlich Werte graphisch darstellen, sozusagen eine Verlaufslinie wie man es vom Oszilliskop her kennt. Leider ruckelt bei mir alles, weil ich halt linie Zeichne, die Werte nach links verschiebe, neu zeichne und die alte Linie lösche.
Jetzt habe ich schon öfters viel flüssigere Animationen solcher Dinge im Netz gesehen - es geht also auch besser.
Hat einer eine Idee wie? Da wäre ich ihm sehr dankbar.
Gruß
Wenn du uns deinen Code zeigst, können wir dir besser helfen.
Gruß
Rolf
Glaube ich nicht, da es ja nicht um meinen Code geht, sondern um die allgemeine Vorgehensweise bei dieser Sache. Und was mein Code macht, habe ich ja schon geschrieben...
Im Allgemeinen werden LCD Routinen so in Bascom geschrieben das auch das lahmste LCD noch läuft.
Gento
Edit:Wenn Du 16 MHZ Quarz hast , schreibt in den Quell 1 MHZ (Wirkt oft wie ein Wunder)
keiner ein Beispiel von solchen Animationen?
also am pc wird ja meistens in einen (ram) puffer gezeichnet, und dieser dann in einem rutsch auf den bildschirm übertragen. das lohnt sich aber nur, wenn sich viel auf dem schirm ändert.
bei einem oszisignal hast du ja nur einen pixel pro spalte, den du setzen oder löschen musst. du könntest also mal einen puffer mit deinen [anzahl spalten] messwerten darstellen lassen, dann spalte für spalte diese pixel löschen und dafür andere pixel aus einem 2ten puffer darstellen. schneller wird es ohne trickserei in bascom nicht werden.
vielleicht kann man aber auch die zeichenroutinen noch optimieren, aber alle projekte in der art, die ich bisher gesehen habe (links habe ich grad leider keine) waren in c und die zeitkritischen stellen in asm umgesetzt.
üblich ist, dass man entweder auf das ready flag des displays wartet, bevor man das nächste datenbyte überträgt; oder einen festen zeitraum abwartet, der normal so gestaltet ist, dass auch das langsamste display mitkommt. letzteres ist meistens um einiges langsamer.
beispielcode wirst du wahrscheinlich keinen bekommen, wenn du es nicht für nötig hältst, deinen code zu posten.
gruesse
hat nichts mit nötig halten zu tun, eher damit, daß er - wie schon gesagt - keine rolle spielt.
bin mittlerweile etwas fündig geworden, allerdings ruckelt es da genau so wie bei mir. scheint wohl mit bascom (sind auch nur bascom-befehle) nicht anders zu gehen. schade eigentlich
peterfido
15.06.2008, 14:27
ohne Beispielcode ist es in der Tat etwas schwierig zu helfen. ASM lässt sich auch in Bascom einbinden. Je nach Displayart und Auflösung lässt sich hier und da etwas optimieren. Ich mache das meist, indem ich die Libs manuell anpasse. (Das Original natürlich vorher sichern)
Dann hast du da Beispiele, also Video's von? Mich würde erstmal das Ergebnis intressieren, bevor ich da anfange mit meinen kleinen Kenntnissen was zu biegen *g
stefan_Z
15.06.2008, 15:42
Finde raus, ob du das Display nur als Ganzes oder auch einzelne Pixel/Spalten/Felder steuern kannst.
Da du weder Code noch Displayart/-Treiber nennst, ist das alles fruchtlos...
Die Bacom-Routinen sind nicht immer optimal, mit nem eigenen Treiber ist das eventuell schneller.
Dazu suchste dir das Datenblatt des Controllers und programmierst es halt neu.
Leute, was habt ihr immer mit dem Code? Ich sage doch nun schon zum xten Mal das ich "weil ich halt linie Zeichne, die Werte nach links verschiebe, neu zeichne und die alte Linie lösche. "
Grafik-Display sind die KS108 und T6963C-Typen, also die üblichen Verdächtigen.
stefan_Z
15.06.2008, 16:40
Dann bau dir halt ne Routine, die immer nur einen Pixel löscht und neu zeichnet.
Habe ich auch schon überlegt. nur dafür müßte halt der Graph aus dem Zahlenarray in eine Tabelle oder so übertragen werden und diese dann sichtbar gemacht werden.
Aber angenommen es sind 200pixel breite mit 100 pixel höhe, das sind dann 20000 Bildpunkte/Tabelleneinträge etc - das ist doch bestimmt viel zu viel Arbeit für den Prozessor, oder?
ich habs so gemacht, dass ich nicht lösche, sonder einfach das
ganze Display neu beschreibe und dabei die alte Anzeige
einfach überschreibe, dann flackerts nämlich nicht.
neu beschreiben? ruckelt es da nicht noch mehr? Wie hast du denn das neuschreiben bzw. das löschen dazu gemacht?
wenn man den alten inhalt einfach überschreibt löscht der sich ja
auch ... bzw. die nicht verwendeten frames setz ich halt auf 0
Hört sich interessant an, wie machst du das code-technisch?
keine Antwort? das ist aber schade
neuer versuch
http://es.youtube.com/watch?v=EpT9n7I2YMI&feature=related
schaut euch mal das Video an....wie geht eine so klare und ruckelfreie Animation? Die Hälfte davon würde mir schon gefallen ;)
[Text entfernt, da keine Hilfe gewünscht wird]
mein code ist, wie schon mehrfach erwähnt, bascom linie zeichnen, neue linie zeichnen und alte linie löschen. also das normale, aber es ruckelt halt.
Ich suche halt code-vorlagen für eine solche flüssige Animation für ein Oszi . Gerne gegen Geld und via PM
[Text entfernt, da keine Hilfe gewünscht wird]
sorry, aber was soll das werden? sammelst du beiträge für irgendwas?
kennst du bascom? dann kennst du auch den line-befehl....und nu is gut!!!!
danke für deine aufmerksamkeit, aber wenn du nichts hast für mich, dann bitte platzmachen für die, die vielleicht eine idee haben bzw. sich etwas dazuverdienen wollen. danke :)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.