PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einfacher Befehl um nach Variablenderung einmalig ausführen



mirco99
03.11.2008, 17:44
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.

CsT
03.11.2008, 18:53
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

PicNick
03.11.2008, 19:22
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 ?

for_ro
03.11.2008, 19:41
Ich habe eine Variable die nach 24 Stunden auf 1 gesetzt wird und danach muss ich mein Array mit nullen "löschen" beschreiben


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

Sauerbruch
03.11.2008, 19:43
...vielleicht verstehe ich das Problem nicht in seiner ganzen Komplexität, aber wie wär´s denn z.B. hiermit:



If Bit = 1 then
Bit = 0
Array = 0
(und was sonst noch alles...)
End if

Gruß & Co...

mirco99
04.11.2008, 08:14
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.

for_ro
04.11.2008, 19:29
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

mirco99
06.11.2008, 11:00
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