- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 6 von 6

Thema: mehrfaches Auswerten einer IF/Then Bedingung verhindern

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    49
    Beiträge
    381

    mehrfaches Auswerten einer IF/Then Bedingung verhindern

    Anzeige

    Powerstation Test
    Hallo,
    und wieder ich!
    Hat jemand eine Idee wie man auf einfachster Art und ressourcensparend bei eine If/Then Anweisung ein mehrmaliges durchlaufen verhindern kann?

    If Timecount = 10 Or Timecount = 26 Or Timecount = 50 Then 'sendet aller 10sec den Temperaturwert mit Adresse 6A
    Slave_adress = &H6A 'Sendeadresse
    Send_byte = 5 ' zu sendene Bytes
    Sub_adr = 3 'Subadresse entspricht der Herkunft der Daten
    Call Master_transmit(slave_adress , Send_byte , Temperaturbyte(1)) 'Aufruf der Callprozedur mit der Adresse und der zu übergebenen Adresspointer
    Twi_sr_cntr = 0

    leider wird in dem Fall innerhalb einer sek. öfters die if/then Anweisung durchlaufen und somit auch mehrmals hintereinander ein Wert über TWI verschickt. Das will ich vermeiden, hat jemand ne Idee wie?

    MAT

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Setze jede Sekunde (oder alle 10 sec) ein Flag (Send_flag=1) und frage dies mit ab.
    Code:
    If Timecount = 10 Or Timecount = 26 Or Timecount = 50 Then 'sendet aller 10sec den Temperaturwert mit Adresse 6A
       If Send_flag=1
          Send_flag=0
          'dein restlicher Code zum Senden
       End If
    End If

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Wenn die "if" frage mehrmals in der sekunde durchlaufen wird, wird sie auch jedesmal den Flag neu setzen.
    Ich würde mir den Timecount, bei dem ich gerade sende, merken, und nur wieder senden, wenn der neue Timecount verschieden ist.
    Code:
    DIM oldtime AS BYTE
    
       If Timecount = 10 Or Timecount = 26 Or Timecount = 50 Then 
                If oldtime <> Timecount then 
                           ' -----senden ------------
                            oldtime = Timecount 
                end if
       End If
    End If
    Irgendeine art "hab ich schon" wirst du brauchen
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    49
    Beiträge
    381
    Auch hier wieder DANKE

    MAT

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von PicNick
    Wenn die "if" frage mehrmals in der sekunde durchlaufen wird, wird sie auch jedesmal den Flag neu setzen.
    Gesetzt wird das Flag doch woanders, hier wird es zurückgesetzt.

    Zitat Zitat von PicNick
    Irgendeine art "hab ich schon" wirst du brauchen
    Send_flag ist meine freie Übersetzung von "hab ich schon".

    Gruß

    Rolf

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    49
    Beiträge
    381
    Guten Morgen!
    Ich habe zwei Timecounter mit unterschiedlichem Sekundenabstand und in dem einem Setze ich das Flag und in dem anderem setze ich es zurück. Indem passt das von Rolf sehr gut und funktioniert genauso wie ich es wollte.
    Danke nochmal
    MAT

Berechtigungen

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

Labornetzteil AliExpress