Archiv verlassen und diese Seite im Standarddesign anzeigen : Graphik Display als Schreiber verwenden
Hallo vielleicht hat ja jemand eine Idee,
versuch schon laengere Zeit einen Graphen zu prog. der wie ein einfacher Schreiber funktioniert.
Also aktueller Wert immer links, die alten werte sollen nach rechts verschoben werden.
Einen Graphen der von vorne nach hinten durchlaeuft und dann vorne wieder anfaengt ist kein problem, aber irgendwie fehlt es mir an der Intelligenz eine schreiber funktion zu verwirklichen.
Vielen Dank fuer eure Hilfe
Josef
Hallo bd239,
der wie ein einfacher Schreiber funktioniert.
beim dem das Blatt weiterläuft?
Ich hab es mal mit einem Array, daß so groß wie die Anzahl der X-Punkte war, gemacht.
Dann immer den ältesten Wert verworfen und den nächstjüngeren nach hinten kopiert. Der aktuelle Wert kommt dann ganz vorne rein.
Das Umkopieren kannst du auch mit einem Zeiger realisieren.
Gruß, Michael
Edit:
Ich hab einen alten Thread dazu gefunden:
http://www.elektronik-projekt.de/thread.php?threadid=3942
da gibt es auch ein Beispielprogramm.
Hallo Michael,
vielen Dank fuer deine Antwort.
Theoretisch hab ich mir das auch so gedacht, aber an der Umsetzung hapert's bei mir gewaltig.
"Dann immer den ältesten Wert verworfen und den nächstjüngeren nach hinten kopiert. Der aktuelle Wert kommt dann ganz vorne rein.
Den aeltesten verwerfen ist kein Problem, kann ich ja einfach ueberschreiben, den naechstjuengeren nach hinten kopieren da gehen meine Probleme los.
Vielleicht kannst du mir ja das noch genauer erklaeren
Vielen Dank
Josef
Hallo bd239,
les dir mal den Link durch, den ich oben noch angehangen habe.
Dort ist alles beschrieben, inkl. Beispielprogramm und Youtube-Video.
Gruß, Michael
Hallo Michael,
ich glaub da koennte das richtige dabei sein.
Muss alles noch in Ruhe durchgehen, aber erstmal
vielen, vielen Dank du hast mir durch deine freundliche Hilfe
sicher viel Aerger erspart.
ich melde mich nochmal ob,s geklappt hat.
=D> =D> =D>
Hessibaby
10.08.2007, 14:31
Die Hardwarelösung heißt Eimerkettenspeicher, d.h. bei jedem Clockpuls wird der Inhalt eines Registers einen Platz nach links verschoben.
Theoretisch gesehen brauchst Du also ein Byte- oder Wordweise organisiertes Schieberegister das Du intervallmäßig verschiebst, den Inhalt ausliest und visualisierst, verschiebst usw.
Gruß
Hallo Michael,
wahrscheinlich bin ich jetzt schon ganz bloed, aber ich kann deinen code
nicht runter laden.
Ich mein den ziemlich zum Schluss, mit dem Video.
Vielleicht kannst du nochmal schauen was los ist.
Danke Josef
Hallo bd239,
Vielleicht kannst du nochmal schauen was los ist.
stimmt, bei mir gab es auch eine fehlerhafte Datei.
Ich hab sie nochmal hochgeladen.
http://www.elektronik-projekt.de/thread.php?postid=34648
Gruß, Michael
Hallo Michael,
super kann was damit anfangen.
Obwohl ich das Program nicht ganz verstehe hab ich es so anpassen koennen dass es fuer mich verwendbar ist.
Was ich zum Beispiel nicht versteh ist diese Zuweisung
Temp3 = Werte(temp2)
Ich dachte das Array hat Nummern von z.B 1 - 100
Was fuer einen Wert lese ich durch diese Zuweisung aus? Auf was fuer eine Nummer greife ich da zu?
Hast mir sehr geholfen
nochmalsDanke
Josef
Hallo bd239,
zugegeben, Temp2 und Temp3 sind keine aussagekräftigen Variablen
Temp3 = Werte(temp2) ist aber aus dem Zusammenhang gerissen.
In der Zeile davor wird der aktuelle Schleifenzähler mit 1 addiert und in Temp2 gespeichert. Das dient nun als Arrayzeiger, während in Temp3 der aktuelle (Pixel-Y-)Wert steht.
Weiter unten wird dann die (alte) Linie mit
Line(i , Temp) -(temp2 , Temp3) , 0 gelöscht und mit
Line(temp1 , Temp) -(i , Temp3) , 1
neu geschrieben.
Ich dachte das Array hat Nummern von z.B 1 - 100
naja, in dem Fall werden nur die Werte von 100-199 genutzt, das ist dann gleich der X-Wert.
Was fuer einen Wert lese ich durch diese Zuweisung aus?
Der angezeigte Wert ist Y.
Einmal pro Durchlauf wird er verändert:
Y = Y + 1
If Y > 35 Then
Y = 15
End If
Da könnte dann auch die Ausleseroutine für den AD-Wandler stehen. Was halt angezeigt werden soll.
Gruß, Michael
Also, ist doch ganz einfach. man nehme einen Ringspeicher mit einem Pointer.
z.B.
dim werte(100) as byte für eben 100 werte.
dann nehme man einen Pointer oder halt Zeiger, der sagt wo der aktuell
gemessene Wert hin kommen soll
also
dim pointer as byte.
Nun programmiere man eine routine, die bei jedem Aufruf den pointer um 1 erhöht und den wert abspeichert. ist das Ende des Daenfeldes erreichst soll er wieder an den Anfang springen. also
incr pointer
if pointer>100 then pointer = 1
werte(pointer) = messwert
nun sollen diese daten klaro ja auch ausgegeben werden in chronologischer reihenfolge
also
for byte_xy= pointer+1 to 100
anzeige=werte(byte_xy)
next
dann:
for byte_xy = 1 to pointer
anzeige=werte(byte_xy)
next
so in ungefähr
Hallo Vitis,
Deine Eingabe kann ich folgen.
Aber die Ausgabe kann ich nicht Nachvollziehen.
Der Pointer zählt von 1 bis 100.
müsste jetzt nicht
Anzeige = Wert(Pointer) stehen?
Oder sollen mit jeden Pointer mehrere Werte ausgegeben
werden.
krieg das nicht zum laufen.
Wigbert
nö, der Wert direkt nach dem aktuellen zeiger ist ja automatisch der chronologisch älteste wert. von dem ausgehend dann halt einfach
bis zum ende hin die werte auslesen und dann vom anfang an bis zum aktuell letzten wert.
Hallo Vitis
jetzt beginne ich zu begreifen.
Du liest die Werte > Pointer <100 aus
und danach >1<= Pointer aus.
Ich dachte wenn ich ab Pointer+1 bis 100 hochzähle
findet die Ausgabe seinen Weg.
Wigbert
vorteil der methode ist halt, dass man nicht bei jedem neuen wert die ganze matrize shiften muss, das spart rechenzeit.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.