-         

Ergebnis 1 bis 5 von 5

Thema: Variablenschar als Schieberegister möglich??

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    18.05.2008
    Beiträge
    26

    Variablenschar als Schieberegister möglich??

    Anzeige

    Hallo!
    Ich brauche mal wieder etwas Hilfe, und zwar möchte ich 24 Speicherstellen (Variablen!?) deklarieren, die wie eine Art Schieberegister funktionieren: alle 10ms kommt ein neuer wert, der den vorigen wert eine stelle weiter schieben soll: der erste wert geht also in die erste speicherstelle, der zweite, nach 10ms, schiebt den ersten in die zweite speicherstelle und geht selbst in die erste, der dritte wert, nach weiteren 10ms, schiebt wieder alle eine stelle weiter hoch. nach 24 stellen fällt der erste wert am ende heraus und nach 10ms der zweite,.... dann möchte ich alle 10ms, nachdem jeweils ein neuer wert eingeschoben wurde, die aktuelle summe aller werte in den 24 speicherstellen für eine rechnung benutzen. die werte in den einzelnen speicherstellen sind immer ganze zahlen (eine anzahl von gemmessenen impulsen innerhalb der 10ms)
    Hat da jemand ne idee, wie ich das programmieren kann?
    Grüße christian

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    48
    Beiträge
    524
    Hallo,

    nimm ein Array mit mit 24 Feldern und und schiebe einen Zeiger von Feld zu Feld. Am Ende angekommen fängst du wieder von Vorne an. Dann können die Werte bleiben wo sie sind.

    Gruß

    Jens

    Edit: oh, sry hab mich ins Bascom Forum 'Verirrt', aber vielleicht ist das ja auch in Bascom so möglich

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    Suche mal nach "Ringpuffer".
    Man legt sich ein Array an, und einen Zeiger für die aktuelle Position.
    Wenn ein neuer Wert dazu kommt, wird der Zeiger eine Position weitergezählt, am Ende fängt man wieder von Vorne an.

    Für das auslesen legt man sich einen 2. Zeiger an, der auf den ältesten Wert zeigt. Dieser muss dann auch mitwandern, falls der Puffer "voll" ist, also die ersten Werte wieder überschrieben werden.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    43
    Beiträge
    377

    Re: Variablenschar als Schieberegister möglich??

    Zitat Zitat von drivepro82
    alle 10ms kommt ein neuer wert, der den vorigen wert eine stelle weiter schieben soll
    Hallo Christian!

    Eine Möglichkeit: http://paste.pocoo.org/show/87101/

    mfg
    Gerold
    :-)

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zitat Zitat von linux_80
    Für das auslesen legt man sich einen 2. Zeiger an, der auf den ältesten Wert zeigt.
    @Linux_80: Wofür brauchst du denn den zweiten Zeiger, der erste Zeiger steht doch genau auf der Position, die als nächstes überschrieben werden soll?

    @drivepro82: Für die Summe würde ich es nicht so machen, wie in dem Link von Gerold. Dort werden zum Ausdruck jedesmal alle 24 Werte addiert. Das kann man auch einfacher haben.
    Halte dir die Summe immer in einer Variable vor. Bevor du den neuen Wert ins Array ablegst, ziehst du erst den alten Wert an dieser Stelle von der Summe ab. Dann addierst du den neuen hinzu und überschreibst den alten Wert ins Array. Also etwa so:

    Dim Pointer as Byte
    Dim My_sum as Word 'falls nötig auch Long
    Dim My_array(24) as byte 'falls nötig Word
    Incr Pointer
    My_sum = My_sum - My_array(Pointer)
    My_sum = My_sum + Neuer_wert
    My_array(Pointer) = Neuer_wert

    Gruß

    Rolf

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •