- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 8 von 8

Thema: Einfacher Befehl um nach Variablenderung einmalig ausführen

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2005
    Ort
    NRW
    Alter
    48
    Beiträge
    142

    Einfacher Befehl um nach Variablenderung einmalig ausführen

    Anzeige

    Praxistest und DIY Projekte
    Hi,
    gibt es einen Befehl in Bascon wenn z.B eine Bit Variable von 0 auf 1 gesetzt wird eine Anweisung nur einmalig auszuführen?

    Ungefähr so

    If bit =1 then nur einmal
    array =0
    end if

    Ich habe eine Variable die nach 24 Stunden auf 1 gesetzt wird und danach muss ich mein Array mit nullen "löschen" beschreiben. Dann kommen neue Daten ( alle 5 Minuten ein Wert). Wenn ich in mein Diagramm Menü gehe wird ja das Ganze Array ausglesen. Dies kann ich auch Programmtechnisch nicht ändern, da sonst in anderen Menüs die Werte nicht gespeichert werden.

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    24.09.2006
    Beiträge
    84
    Noch eine Variable deklarieren, in der du speicherst, ob die Anweisung schon ausgeführt wurde oder nicht?
    Wenn ich dich richtig verstehe wohl das einfachste.

    Grüße

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Vielleicht steh' ich auch daneben:

    Hast du nicht in deinem Programm eine Stelle, wo du mit dem array-index wieder an den Anfang zurückspringst ?
    Wär das nicht eine gute Gelegenheit, das array zu löschen ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113

    Re: Einfacher Befehl um nach Variablenderung einmalig ausfüh

    Zitat Zitat von mirco99
    Ich habe eine Variable die nach 24 Stunden auf 1 gesetzt wird und danach muss ich mein Array mit nullen "löschen" beschreiben
    Code:
    If bit =1 Then
       bit=0     'hier löschen, an anderer Stelle setzen.
       array =0 'das geht so natürlich nicht, du musst jedes Element auf 0 setzen, z.B. in einer For-Schleife
    end if
    Meinst du so?

    Gruß

    Rolf

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    ...vielleicht verstehe ich das Problem nicht in seiner ganzen Komplexität, aber wie wär´s denn z.B. hiermit:

    Code:
    If Bit = 1 then
     Bit = 0
     Array = 0
     (und was sonst noch alles...)
    End if
    
    Gruß & Co...

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2005
    Ort
    NRW
    Alter
    48
    Beiträge
    142
    Moin,
    ich hatte die Hoffnung, das es einen einfachen Befehl dafür gibt. wie eine Flankenerkennung.
    Eine weitere Variable ist wohl die einfachste.
    Wenn ich die das Array lösche, wenn es an den Anfang gesetzt wird, kann ich mir das Diagramm nicht mehr anschauen.

    Also ich setzt ein Bit, wenn meine Solaranlage z.B. 300 mA liefert.
    Jetzt wird jede 5 Minuten in das Array geschrieben.
    Nach 12 Stunden Ist das Array voll.
    Wenn Die Sonne um 6 Uhr die 300 mA liefert, dann wäre um 18 Uhr das Array wieder gelöscht. Ich könnte nach der Arbeit also nicht sehen wieviel der Tag gebracht hat.

    Mein array startet mit einer If then Schleife. Wenn Strom größer 300 then...

    Dieses Bit kann ich nicht verwenden, sonst würde ich in jedem Programmlauf löschen, wenn die Sonne scheint.

    Okay dann werde ich noch eine neue Variable einbinden.

    Ich danke euch.

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von mirco99
    Nach 12 Stunden Ist das Array voll.
    Wenn Die Sonne um 6 Uhr die 300 mA liefert, dann wäre um 18 Uhr das Array wieder gelöscht.
    Warum hörst du dann nicht einfach auf zu schreiben, wenn das Array voll ist (der Zeiger auf der letzten Position steht)?

    Außerdem verstehe ich nicht, warum du das Array "löschen" musst. Kannst du nicht die Werte nur überschreiben. Wenn du die Werte dann anzeigen lassen willst, hörst du bei der letzten geschriebenen Position auf (falls du vor 18 Uhr nachschaust).

    Oder habe ich das jetzt wieder falsch verstanden?

    Gruß

    Rolf

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2005
    Ort
    NRW
    Alter
    48
    Beiträge
    142
    Hi for_ro,

    nein falsch verstanden hast du das nicht.
    Ich kann nur die Ganze Zeitspanne auslesen und auf das Display geben.
    Ich benutze 2 Zeigervariablen, die auch noch für andere dinge sind. Die gleiche Idee hatte ich auch schon.
    Es ist sehr unübersichtlich wenn das Diagramm sich mit alten Werten vermischt. Und da ich keine Uhr inplementiert habe, wird sich je nach Wetter und Jahreszeit der Aufzeichnungsbeginn verschieben.

    Aber ich nehme einfach noch ne Variable und dann ist der Programmteil fertig.
    Wollte nur nachfragen ob es auch mit einem einzelnen Befehl geht, den ich noch nicht kenne.

    Dank dir

Berechtigungen

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

12V Akku bauen