German B4R Timer geht nicht

Discussion in 'German Forum' started by Zecke, Apr 13, 2019.

  1. Zecke

    Zecke Member Licensed User

    Hallo,

    Wenn keine Verbindung aufgebaut werden kann wollte ich eine LED blinken lassen. Der Timer wird aber nicht gestartet??

    Code:
    Sub Process_Globals
        
    'These global variables will be declared once when the application starts.
        'Public variables can be accessed from all modules.
        
        
    Public Serial1 As Serial
        
    Private Blinker As Timer
        
    Private StatusLEDpin As Pin
        
    Private wifi As ESP8266WiFi
        
    End Sub

    Private Sub AppStart
        Serial1.Initialize(
    115200)
        
    Log("AppStart")
        
        StatusLEDpin.Initialize(
    4,StatusLEDpin.MODE_OUTPUT)
        Blinker.Initialize(
    "Timer1_Tick"700
        
    End Sub


    Sub WIFIConnect(unused As Byte)

        
    If wifi.Connect2("SSID","PSSWD"Then 
            
    Log("Verbunden.")
            
    Log("ip: ", wifi.LocalIp)
        
    Else
            
    Log("Failed to connect. Try Again...")
            Blinker.Enabled = 
    True
            WIFIConnect(
    0)
            
    Return
        
    End If
        
        
    End Sub


    Private Sub Timer1_Tick

        
    Dim currentState As Boolean = StatusLEDpin.DigitalRead
        
    Dim NewState As Boolean = Not(currentState)
        StatusLEDpin.DigitalWrite(NewState)
        
    End Sub
     
  2. Kiffi

    Kiffi Well-Known Member Licensed User

    Code:
    Blinker.Initialize("Timer1"700)
     
  3. Zecke

    Zecke Member Licensed User

    hallo,

    ist doch initialisiert bei APPstart...
     
  4. thetahsk

    thetahsk Active Member Licensed User

    ..und jetzt muss der timer nur noch gestartet werden....
     
  5. Zecke

    Zecke Member Licensed User

    Ist er auch: Blinker.Enabled = True
     
  6. klaus

    klaus Expert Licensed User

    Siehst Du Failed to connect. Try Again... in den Logs?
    Wenn nein, wird der Timer nicht gestartet.
     
  7. Zecke

    Zecke Member Licensed User

    Ja sehe ich, habe extra den connect mit dem WLan verhindert.
    Mir scheint, "wifi.Connect2" verhindert den Start des Timers. Benutze ich den nicht, dann funktioniert Der BlinkTimer.
     
  8. Kiffi

    Kiffi Well-Known Member Licensed User

    ja, aber nicht richtig. Guck mal genau hin.

    Deins:
    Code:
    Blinker.Initialize("Timer1_Tick"700)
    Meins:
    Code:
    Blinker.Initialize("Timer1"700)
    ;)

    (es sei denn, B4R funktioniert anders als B4J)

    Grüße ... Peter
     
  9. klaus

    klaus Expert Licensed User

    Blinker.Initialize("Timer1_Tick", 700)
    Das ist richtig, B4R ist hier anders als die drei anderen Produkte.
     
    MarkusR likes this.
  10. Kiffi

    Kiffi Well-Known Member Licensed User

    achso! Na dann, nichts für ungut.
     
  11. Zecke

    Zecke Member Licensed User

    Kiffi likes this.
  12. MarkusR

    MarkusR Well-Known Member Licensed User

    wo/wie rufst Du die "Sub WIFIConnect" auf ?
    Im Fehler Fall rufst Due die gleiche Sub nochmal auf?
    Code:
    WIFIConnect(0)
    Ist das dann nicht quasi eine Endlosschleife?
     
  13. Zecke

    Zecke Member Licensed User

    Ja, ist ne Endlosschleife. Geht aber weil, wenn keine Verbindung hergestellt werden kann wifi.Connect2 nen Timeout hat. Aber selbst wenn ich den Timer vor dem ersten aufrufen von wifi.Connect2 auf Enabled schalte geht der Timer nicht weil dann wohl alles andere blockiert wird. Dachte dass Timer trotzdem weiter laufen.

    Wie kriege ich also ein Blinken hin, während versucht wird zu connecten... hmmm
     
  14. MarkusR

    MarkusR Well-Known Member Licensed User

    Also bei B4J oder B4A muss die Sub erst wieder verlassen werden damit die Ereignisse wieder abgearbeitet werden.
    Ich stelle mir das so vor das da auch eine Funktion/Sub ist die sich um alles kümmert.
    Und wenn die blockiert ist bzw. nicht durchlaufen wird kann die auch keine Methode wie diesen _Tick aufrufen.
    Tuh diese zwei Zeilen mal auskommentieren und provoziere einen Verbindungs Fehler.
    Code:
    WIFIConnect(0)
    Return
    Und wenn die Verbindung ok ist dort
    Code:
    Blinker.Enabled = False
    LedOff
    sonst Tickt / Blinkt der ja weiter. + die LED wieder aus.
     
    Last edited: Apr 14, 2019
  15. Zecke

    Zecke Member Licensed User

    Hatte ich zuvor auch schon probiert. Sobald ich wifi.Connect2 aufrufe stoppt der Blinktimer bzw, geht gar nicht erst an. Wenn jetzt keine Verbindung aufgebaut werden kann liefert wifi.Connect2 ein Timeout und die nächste Quellcodezeile wird ausgeführt. Jetzt fängt's auch an zu blinken, da der Timer nicht mehr blockiert ist. Aber ich muss ja jetzt wifi.Connect2 ja wieder ausführen lassen, um weiter eine Verbindungsherstellung zu versuchen. Daher die Endlosschleife. Denn wifi.Connect2 macht nur einen Versuch. Und der Blinker stoppt wieder.

    Mein Fazit ein Blinken während der Verbindungsversuche nicht möglich (jedenfalls nicht mit meinen beschränkten Fähigkeiten). Ich versuche es mal mit Arduino direkt...

    Grüsse..
     
  16. MarkusR

    MarkusR Well-Known Member Licensed User

    Dann würde ich die LED an machen vor dem Connect2 und danach wieder aus.
    Zumindest siehste dann wo es hängt.
    Ich vermute dieses wifi haste nur als Lib oder? Sonst könntest Du es ja umbauen.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice