Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche

Willkommen! Melden Sie sich an oder registrieren Sie sich.

Um schreiben oder kommentieren zu können, benötigen Sie ein Benutzerkonto.

Sie haben schon ein Benutzerkonto? Melden Sie sich hier an.

Jetzt anmelden

Hier können Sie ein neues Benutzerkonto erstellen.

Neues Benutzerkonto erstellen
  1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forum
  4. Spenden
  • Anmelden
  • Registrieren
  • Suche
  1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forum
  4. Spenden
  1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forum
  4. Spenden
  1. Renaultforum.net
  2. Off Topic

C++

  • Basti
  • 11. Februar 2018 um 11:31
  • Geschlossen
  • Basti
    Administrator
    Reaktionen
    118
    Beiträge
    815
    • 11. Februar 2018 um 11:31
    • #1

    Helauuuuuuuu erstmal xD :beer:

    Gibts eigentlich Programmierer unter uns?! C++ zB. ?!

    • Zitieren
  • alex_h
    Profi
    Reaktionen
    88
    Beiträge
    1.084
    • 11. Februar 2018 um 14:12
    • #2

    programmiert haben wahrscheinlich schon einige. aber es kommt ja auf das Anliegen an.
    wirf ein paar Infos in die runde ... in der passenden Stimmung bist du ja schon Wink_Smiley

    Laguna 2 - Ph.I - Initiale - 2.0 IDE

    • Zitieren
  • Basti
    Administrator
    Reaktionen
    118
    Beiträge
    815
    • 11. Februar 2018 um 20:25
    • #3

    Ich muss in einem existierendem Open Source Project nen existierenden Timer auslesen, den Wert in eine Variable packen und mittels 2ten Timer ne Zeit messen.
    Wenn Zeit X >3Sec ist dann muss der Timer 1 resettet werden ansonsten mit der verbleibenden Zeit neu gefüttert und gestartet werden :)

    • Zitieren
  • alex_h
    Profi
    Reaktionen
    88
    Beiträge
    1.084
    • 12. Februar 2018 um 13:39
    • #4

    also von der Logik her klingt das jetzt nicht sonderlich kompliziert.
    der Teufel wird im Detail bzw. in den Rahmenbedingungen stecken.

    hast du mehr Details zum "existierende Timer"?
    also wie dieser initialisiert/gestartet wird.

    Laguna 2 - Ph.I - Initiale - 2.0 IDE

    • Zitieren
  • Basti
    Administrator
    Reaktionen
    118
    Beiträge
    815
    • 12. Februar 2018 um 14:45
    • #5

    Na klaro.....

    da wäre es aber am einfachsten wenn man das via Skype etc machen kann, weil die Zusammenhänge hier mal eben zu erklären wäre schwierig, das wäre via Skype 1000 mal einfacher, vor allem kannst Dich dann viel besser reindenken...

    • Zitieren
  • alex_h
    Profi
    Reaktionen
    88
    Beiträge
    1.084
    • 12. Februar 2018 um 17:14
    • #6

    oder, da es OpenSource ist, kannst auch einfach 'nen Link, Datei nennen.
    dann brauchst nicht jedem neu erklären und jemand anders könnte auch mal drauf schauen.
    und wenn dann noch Fragen sind, hier kurz klären und siehe Zeile 2 :)

    Laguna 2 - Ph.I - Initiale - 2.0 IDE

    • Zitieren
  • Basti
    Administrator
    Reaktionen
    118
    Beiträge
    815
    • 12. Februar 2018 um 17:34
    • #7

    https://github.com/sm0svx/svxlink


    https://github.com/sm0svx/svxlink…peaterLogic.cpp Zeile 166, 483....
    https://github.com/sm0svx/svxlink…Application.cpp
    https://github.com/sm0svx/svxlink…/AsyncTimer.cpp

    if (repeater_is_up)
    {
    if (is_open)
    {
    setIdle(false);
    }

    • Zitieren
  • Basti
    Administrator
    Reaktionen
    118
    Beiträge
    815
    • 12. Februar 2018 um 17:34
    • #8

    idle ist der up_timer

    • Zitieren
  • alex_h
    Profi
    Reaktionen
    88
    Beiträge
    1.084
    • 13. Februar 2018 um 00:29
    • #9

    wenn ich mich nicht irre, könnte das mit dem "ansonsten mit der verbleibenden Zeit neu gefüttert und gestartet werden" nicht so klappen wie gewünscht.
    weil die Zeitspanne des Timers dann dauerhaft verändert wird. das Timeout könnte dann zB. nur 1s anstatt den gedachten 30s lang sein.

    Laguna 2 - Ph.I - Initiale - 2.0 IDE

    • Zitieren
  • Basti
    Administrator
    Reaktionen
    118
    Beiträge
    815
    • 13. Februar 2018 um 08:24
    • #10

    Moin,

    der Timer wird per Default mit 30 Sekunden gefüttert wenn in der config nicht was anderes steht..
    siehe :
    int idle_timeout;
    if (cfg().getValue(name(), "IDLE_TIMEOUT", idle_timeout))
    {
    up_timer.setTimeout(idle_timeout * 1000);
    }

    Und time.h gibt irgendwo die Funktion her, das die restzeit des Timers ausgelesen werden kann, also könnte man ihn auslesen bevor man ihn killt und dann mit der restzeit füttern wenn man ihn neu startet.
    Oder meinste das geht nich ?!

    • Zitieren
  • alex_h
    Profi
    Reaktionen
    88
    Beiträge
    1.084
    • 13. Februar 2018 um 14:02
    • #11

    gehen tut's schon. ich kann eben nicht überprüfen ob das nicht blöde Nebeneffekte liefert. deswegen auch "nicht wie gewünscht".

    könnte schon mal so aussehen:

    C
    int timer1_value = up_timer.timeout();
    up_timer.setEnable(false);
    
    
    // TODO Timer2
    int timer2_time = 3;
    int timer2_value = ???;
    // TODO Timer2
    
    
    if(timer2_value > timer2_time){
      up_timer.reset();
    }
    else {
      up_timer.setTimeout(timer1_value);
    }
    Alles anzeigen


    fehlt noch der zweite Timer. soll das als Stoppuhr für zwischendurch ausgeführte Aufgaben dienen oder auf irgend etwas warten?

    Laguna 2 - Ph.I - Initiale - 2.0 IDE

    Einmal editiert, zuletzt von alex_h (13. Februar 2018 um 14:19)

    • Zitieren
  • Basti
    Administrator
    Reaktionen
    118
    Beiträge
    815
    • 13. Februar 2018 um 14:50
    • #12

    Hi Alex,

    der "eine" Timer existiert ja schon, das ist der up timer...
    von dem müsste man wenn is_open geschieht erst die restzeit auslesen dann idle auf false setzen die dauer von is_open auswerten und wenn >x sekunden is_open resetten oder halt mit der Restzeit füttern...
    Sag ja das hier so zu schreiben ist denk ich mal etwas umständlich...

    • Zitieren
  • alex_h
    Profi
    Reaktionen
    88
    Beiträge
    1.084
    • 13. Februar 2018 um 16:42
    • #13

    is_open ist aber nur ein wahr oder falsch Wert, kein Timer und daher keine Dauer auswertbar.

    Laguna 2 - Ph.I - Initiale - 2.0 IDE

    • Zitieren
  • Basti
    Administrator
    Reaktionen
    118
    Beiträge
    815
    • 13. Februar 2018 um 16:46
    • #14

    Deswegen der Timer um die Dauer von is_open auszuwerten...
    is_open ist der Squelch der vom Empfänger geöffnet ist...
    Wenn also jemand über das Relais spricht ist für die Dauer seines Sprechdurchgangs is_open auf true...

    • Zitieren
  • alex_h
    Profi
    Reaktionen
    88
    Beiträge
    1.084
    • 14. Februar 2018 um 10:40
    • #15

    ja und deswegen kann man is_open nicht resetten, sondern auf true oder false setzen.

    das was man daran an Zeitdauer auswerten könnte, wird mit bei RepeaterLogic::squelchOpen(bool is_open) ausgerechnet.

    bei is_open==true wird die Uhrzeit gespeichert: sql_up_timestamp

    bei repeater_is_up==true und is_open==false, wird wieder die Uhrzeit gespeichert: now
    eine Differenz ausgerechnet: now - sql_up_timestamp = diff_tv
    dann noch auf Millisekunden umgerechnet: diff_ms
    diff_ms wäre dann wohl die Dauer die man auswerten könnte oder das gleiche im Block bei setIdle(false); durchrechnen.

    Laguna 2 - Ph.I - Initiale - 2.0 IDE

    • Zitieren
  • Basti
    Administrator
    Reaktionen
    118
    Beiträge
    815
    • 14. Februar 2018 um 13:52
    • #16

    ja genau is_open is nur true oder false...
    Wie gesagt so gut kann ich nicht programmieren, als das ich das mit dem timer und auswerten hinbekommen könnte

    • Zitieren
  • alex_h
    Profi
    Reaktionen
    88
    Beiträge
    1.084
    • 15. Februar 2018 um 16:35
    • #17

    naja das Auswerten ist nicht das Problem, eher die vorgesehene Logik und dahinterstehende Protokoll nicht mit einem kleinen reset über den Haufen zu werfen.
    ich schau mir das heute noch mal an.

    Laguna 2 - Ph.I - Initiale - 2.0 IDE

    • Zitieren
  • Basti
    Administrator
    Reaktionen
    118
    Beiträge
    815
    • 15. Februar 2018 um 17:37
    • #18

    Ja das stimmt, das ganze ist recht komplex...
    Danke

    • Zitieren
  • alex_h
    Profi
    Reaktionen
    88
    Beiträge
    1.084
    • 15. Februar 2018 um 19:40
    • #19

    kann es evtl. direkt über die Konfiguration mit höherem OPEN_ON_SQL bzw. SQL_FLAP_SUP_MIN_TIME gelöst werden?

    Laguna 2 - Ph.I - Initiale - 2.0 IDE

    Einmal editiert, zuletzt von alex_h (15. Februar 2018 um 19:51)

    • Zitieren
  • Basti
    Administrator
    Reaktionen
    118
    Beiträge
    815
    • 15. Februar 2018 um 19:52
    • #20

    ne open on sql is dafür da das das relais einfach durch Squelch öffnen geöffnet werden kann, dann muss eine bestimmte Zeit der Squelch offen sein, dann aktiviert sich das Relais.
    Bei kürzeren Squelch öffnungen bleibt es deaktiviert.
    Man kann sich natürlich diesen Timer bzw diese Messmethode zu nutze machen.

    • Zitieren

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Spenden

Jährlich (2025)

17,5 %

17,5% (35,00 von 200 EUR)

Jetzt spenden

Benutzer online in diesem Thema

  • 1 Besucher
  1. Datenschutzerklärung
  2. Impressum
Community-Software: WoltLab Suite™