Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: speichern Kategorie: Programmierung Basic (von das |_ Team - 6.11.2014 18:48)
 Als Antwort auf Re: speichern von Kevin K. - 6.11.2014 12:01
das |_ Team nutzt:  CC1-Unit V1.1, CC1-M-Unit V1.1, CC1-Station V1.1, Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Maxi, Open-Mini M-Unit, Open-Mini Station
Unser Tipp: Die Schreib- und Leseroutine zueinander komplementär gestalten.

Erklärung:
Die programmierte Funktion der Ausleseroutine (ab Zeile 28 bis Zeile 32) setzt voraus dass die ersten 3 Elemente der Datendatei die Werte fĂĽr "Rekord", "rekord2", "rekord3" enthalten.

Jedoch werden nur durch "#newrek" diese 3 Werte in der benötigten Reihenfolge in die Datendatei geschrieben. Die resultierenden Inhalte der Speicherelemente der Datendatei kann man sich danach wie folgt vorstellen:


[Element1] [Element2] [Element3] [Element4] ..... [Element n]
 
 Inhalt:    Inhalt:    Inhalt:    Inhalt:          Inhalt:

[Rekord]   [rekord2]  [rekord3]  [unbekannt] .... [unbekannt]



Die Unterroutine "#zweiter" hingegen schreibt nur 2 Werte in die Datendatei.

An dieser Stelle arbeiten Schreib- und Leseroutine nicht mehr komplementär - dies führt zur fehlerhaften Interpretation der Daten durch die Leseroutine:


[rekord2] [rekord3] [nicht verändert]


Die Unterroutine "#dritter" schreibt nur 1 Wert in die Datendatei:


[rekord2] [nicht verändert] [nicht verändert]




Lösungsansatz:

Versuch doch mal "#zweiter" und "#dritter" entsprechend abzuändern.


Tipp:

Mittels Zählschleife könnte man z.B. "#pauserek" kompakter gestalten:



DEFINE zaehler WORD

FOR zaehler = 1 TO 24
   schlag = ADEingang
   IF schlag > 10 THEN GOTO geschlagen
   PAUSE 6
NEXT



PS Hast du einen Link zu deinem Projekt?




> Hallo
>
> erstmal danke fĂĽr die schnelle Antwort.
> Ich habe es nun mit open for write und open for read gemacht.
> Problem ist nur das er wenn das programm länger läuft die rekorde auf einmal vertauscht bzw. sogar löscht.
> Hier ist mein Programm . . . Fällt ein fehler ins Auge ?
> Danke vielmals
>
>
>
> define Light             port[16]
> define musik             port[1]
> define Trommelwirbel     port[2]
>
> define ADEingang as        AD[2]
> define Rekord    as      word[1]
> define schlag    as      word[2]
> define i         as      word[3]
> define schlag2   as      word[4]
> define gemma     as      word[5]
> define spannung  as      word[6]
> define balken    as      word[7]
> define e         as      word[8]
> define rekord2   as      word[9]
> define rekord3   as      word[10]
>
>
>
>
> import "SHOW_BAR.blib"
>
>  #INIT
>  INITBAR()
>  Light=off
>  musik=on
>  Trommelwirbel = off
>
>  open for read
>   input# Rekord
>   input# rekord2
>   input# rekord3
>  close
>
>   do
>     #pausenrek3                                                              'Standard Display mit der Aufforderung zum Schlag und einer anzeige
>     LCD.INIT                                                                    'des momentanen Rekords
>     LCD.CLEAR
>     Light=off
>     LCD.Pos 1,2
>     LCD.Print "Hau den Lukas"
>     LCD.Pos 2,2
>     LCD.Print "Bitte Schlagen"
>     pause 50
>     goto pausehdl
>
>     #pausenhdl
>     LCD.CLR
>     LCD.Pos 1,2
>     LCD.Print "1. Platz"
>     LCD.Pos 2,4
>     LCD.Print Rekord
>     LCD.Print "Pkte."
>     goto pauserek
>
>     #pausenrek
>     LCD.CLR
>     LCD.Pos 1,2
>     LCD.Print "2. Platz"
>     LCD.Pos 2,4
>     LCD.Print rekord2
>     LCD.Print "Pkte."
>     goto pauserek2
>
>     #pausenrek2
>     LCD.CLR
>     LCD.Pos 1,2
>     LCD.Print "3. Platz"
>     LCD.Pos 2,4
>     LCD.Print rekord3
>     LCD.Print "Pkte."
>     goto pauserek3
>  loop                                                                           'dieser Standard Display wird angezeigt bis sich am Eingang etwas ändert
>                                                                                 'diese Ă„nderung muss jedoch größer als der Wert 10 sein
>
> #geschlagen
>  musik=off
>  Trommelwirbel = on
>  gemma = schlag*4
>  Schlag2=(gemma/3)*2
>  spannung = gemma - 15
>  i = 0
>  e = 0
>  LCD.CLR
>   DO
>   LCD.CLR
>    i=i+1
>    e=i/4
>    balken = e*80/255
>    SHOW_BAR(balken)                                                             'rauf zählen bis zum halben erreichten Wert(schnell)
>    LCD.POS 2,7
>    LCD.PRINT i
>   Loop until i=schlag2
> LCD.CLR
>   DO
>     LCD.CLR
>     i=i+1
>     e=i/4
>     balken = e*80/255
>     SHOW_BAR(balken)                                                            'rauf zählen bis zum erreichten Wert (langsamer)
>     LCD.POS 2,7
>     LCD.PRINT i
>     pause 2
>   Loop until i=spannung
>
> LCD.CLR
>
>   do
>     LCD.CLR
>     i=i+1
>     e=i/4
>     balken = e*80/255
>     SHOW_BAR(balken)
>     LCD.Pos 2,7
>     LCD.Print i
>     pause 15
>   loop until i=gemma
>
>   LCD.CLR
>   e=i/4
>   balken = e*80/255
>   SHOW_BAR(balken)
>   LCD.Pos 2,7
>   LCD.Print gemma
>   Light = on
>   pause 10
>   Light = off
>   pause 10
>   Light = on
>   pause 10
>   Light = off
>   pause 10
>   Light = on
>   pause 10
>   Light = off
>   pause 50
>   LCD.CLR
>
>   if gemma < rekord3 then goto tobad
>   if gemma < rekord2 then goto dritter                                          'zuordnen ob der erreichte Wert höher als der momentane Rekord ist
>   if gemma < Rekord then goto zweiter
>   if gemma > Rekord then goto newrek
>
> #newrek                                                                         ' Neuer Bestwert erreicht
> rekord3 = rekord2
> rekord2 = Rekord
> Rekord = gemma
>
> open for write
>  print# Rekord
>  print# rekord2
>  print# rekord3
> close
>
>
> LCD.POS 1, 2
> LCD.print Rekord
> LCD.Print " Punkte"
> LCD.POS 2, 2
> LCD.Print "reichen fuer"
> pause 150
> LCD.CLR
> LCD.Pos 1,2
> LCD.Print "Den neuen"
> LCD.Pos 2,4
> LCD.Print "Rekord!"
> pause 150
> LCD.CLR
> LCD.POS 1, 2
> LCD.Print "Herrzlichen"
> LCD.Pos 2, 3
> LCD.Print "Glueckwunsch"
> pause 200
> goto INIT
>
> #tobad
> LCD.CLR                                                                         ' Unter Bestwert
> LCD.Pos 1,2
> LCD.Print "Leider keine"
> LCD.Pos 2,5
> LCD.Print "Platzierung"
> pause 200
> goto INIT
>
> #zweiter
>
> rekord3 = rekord2                                                               'neuer 2.Platz
> rekord2 = gemma
>
> open for write
>  print# rekord2
>  print# rekord3
> close
>
> LCD.Pos 1,2
> LCD.Print rekord2
> LCD.Print " Punkte"
> LCD.Pos 2,2
> LCD.Print "reichen fuer"
> pause 150
> LCD.CLR
> LCD.Pos 1,2
> LCD.Print "Den neuen"
> LCD.Pos 2,4
> LCD.Print "2.Platz!"
> pause 150
> LCD.CLR
> LCD.POS 1, 2
> LCD.Print "Herrzlichen"
> LCD.Pos 2, 3
> LCD.Print "Glueckwunsch"
> pause 200
> goto INIT
>
> #dritter
>
> rekord3 = gemma
>
> open for write
>  print# rekord3
> close
>
> LCD.Pos 1,2
> LCD.Print rekord3
> LCD.Print " Punkte"
> LCD.Pos 2,2
> LCD.Print "reichen fuer"
> pause 150
> LCD.CLR
> LCD.Pos 1,2
> LCD.Print "Den neuen"
> LCD.Pos 2,4
> LCD.Print "3.Platz!"
> pause 150
> LCD.CLR
> LCD.POS 1, 2
> LCD.Print "Herrzlichen"
> LCD.Pos 2, 3
> LCD.Print "Glueckwunsch"
> pause 200
> goto INIT
>
>
>
>
> #pausehdl
>       schlag = ADEingang                                                        'abfragen ob geschlagen wurde und wenn ja sofort zur anzeige des
>     if schlag > 10 then goto geschlagen                                         'Schlages wechseln
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     goto pausenhdl
>
>
>  #pauserek
>     schlag = ADEingang                                                          'abfragen ob geschlagen wurde und wenn ja sofort zur anzeige des
>     if schlag > 10 then goto geschlagen                                         'Schlages wechseln
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     goto pausenrek
>
>
>     #pauserek2
>     schlag = ADEingang                                                          'abfragen ob geschlagen wurde und wenn ja sofort zur anzeige des
>     if schlag > 10 then goto geschlagen                                         'Schlages wechseln
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     goto pausenrek2
>
>     #pauserek3
>         schlag = ADEingang                                                          'abfragen ob geschlagen wurde und wenn ja sofort zur anzeige des
>     if schlag > 10 then goto geschlagen                                         'Schlages wechseln
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     schlag = ADEingang
>     if schlag > 10 then goto geschlagen
>     pause 6
>     goto pausenrek3

 Antwort schreiben

Bisherige Antworten:

Re: speichern (von Kevin K. - 7.11.2014 11:39)
    Re: speichern (von das |_ Team - 8.11.2014 1:20)