- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Bacom FOR NEXT mit GOSUB Fehler?

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.09.2006
    Alter
    35
    Beiträge
    841
    Blog-Einträge
    1

    Bacom FOR NEXT mit GOSUB Fehler?

    Anzeige

    Powerstation Test
    Hallo,

    ich hab folgenden code:

    Code:
    do
    
    gosub trigger
    
    For I = 0 To 2
    
    Gosub 10
    Gosub 0
    Gosub 01
    Gosub 1
    
    Next I
    
    loop
    der geht nicht....die for next schleife wird nicht wiederholt...sondern nur einmal ausgeführt...(quasi ohne for next schleife)


    ziel ist, dass

    Code:
    Gosub 10
    Gosub 0
    Gosub 01
    Gosub 1
    mehrfach ausgeführt wird.

    warum gelingt das nicht?

    die subs sind korrekt mit "label:" und "return"

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Mach mal das Do und das Loop weg. Wenn die Schleife nur von 0-2 laufen soll ist es bischen unnütz diese 3 Schleifendurchläufe dann in eine Endlosschleife zu packen oder?

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.09.2006
    Alter
    35
    Beiträge
    841
    Blog-Einträge
    1
    das do loop ist die hauptschleife...


    das in der for next schleife wird eine präambel, also eine zeit lang der gleiche code....


    danach folgt ein anderer indvidueller code, dass ganze wiederholt sich dann....

    for next wird am ende ca. 600 erreichen...

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Code:
    Dim I As Byte
    do
    
    gosub trigger
    
    For I = 0 To 2
    
    Gosub 10
    Gosub 0
    Gosub 01
    Gosub 1
    
    Next I
    
    Loop
    
    10:
    Print "10"
    Return
    
    0:
    Print "0"
    Return
    
    01:
    Print "01"
    Return
    
    1:
    Print "1"
    Return
    
    Trigger:
    Print "trigger"
    Return
    Dies läuft bei mir im Simulator.

  5. #5
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Eventuell liegt der Fehler bei dir in einer der Unterprogramme. Weil die For-Next Schleife sieht soweit in Ordnung aus.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    benutzt Du die Variable "I " auch in einer Subroutine?
    Wenn ja hängts daran, dass dort der Wert gesetzt
    wird und die for-Next dann aufgrund des neuen Wertes
    verlassen wird.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    53
    Beiträge
    765
    Da wird wohl I in einer der Subs benutzt.

    Eine weitere Möglichkeit:

    Code:
    do
    
       gosub trigger
       gosub VierSubs
       gosub VierSubs
       gosub VierSubs
    
    
    loop
    end
    
    VierSubs:
       Gosub 10
       Gosub 0
       Gosub 01
       Gosub 1
    
    return
    edit:

    @Vitis: gleicher Gedanke...
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Bist du sicher, dass er z.B. bei GOSUB 0 den Label anspringt und nicht die Adresse 0

    Oder ist das ein "O" ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    53
    Beiträge
    765
    Stimmt, ist mir gar nicht aufgefallen. Gosub 0 sollte man nicht verwenden. Überhaupt reine Zahlen...
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von PicNick
    Bist du sicher, dass er z.B. bei GOSUB 0 den Label anspringt und nicht die Adresse 0

    Oder ist das ein "O" ?
    Bascom verarbeitet das so wie es da steht. Auch das Label 0: wird angesprungen. Hatte ich doch oben geschrieben.
    Allerdings geht jetzt kein Goto 0 mehr, um einen Pseudo-Reset durchzuführen.
    Ansonsten ist das ja ganz normal, Labels als Zahlen zu haben.
    Ich wüsste keinen Grund, warum man das nicht machen sollte. Höchstens das Labels sinnhafte Namen haben sollten.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests