Verschiedenes > MySensors

[gelöst]Probleme mit receive (alte Daten werden geladen)

<< < (4/4)

Beta-User:

--- Zitat von: frober am 10 Juli 2021, 09:18:43 ---Es gibt bestimmt Verbesserungspotential im Sketch, MySensors ist mein erstes Projekt mit der ArduinoIDE 8) , davor hatte ich nur mal einen kleinen Sketch mit Bascom geschrieben.

--- Ende Zitat ---
Für einen "Erstling" finde ich das ziemlich cool, und die "Kritik" ist auf eher hohem Niveau angesiedelt - ohne behaupten zu wollen, dass ich alles verstanden habe, was da vercoded ist...


--- Zitat von: frober am 10 Juli 2021, 09:18:43 ---Hmm, bin mir nicht sicher, was du damit meinst.
Ich setze doch einen Zähler, dieser wird, sobald die Nachricht eintrifft auf 0 gesetzt, ansonsten wird der Befehl neu gesendet.

--- Ende Zitat ---
Es geht nur um die "receive()"-Funktion, und das mit dem Zähler ist soweit klar.

Innerhalb der Funktion sind aber die Teile relativ weit hinten angesiedelt, die sich mit Ack-Nachrichten beschäftigen. Hat man keinen Zähler, ist man dann eigentlich schon fertig, hat man einen, könnte man die Ack-Behandlung innerhalb eines einzigen "if"-Zweiges (ggf. mit weiteren Unterscheidungen nach Typ etc. innerhalb dieses Zweiges) unterbringen - da wird ja jeweils nur der Zähler auf "0" (= ok) gesetzt...
Wäre m.E. übersichtlicher...

Pseudecode ist evtl. einfacher:

--- Code: ---void receive(const MyMessage &message) {
    if (message.isAck() ) {
        if (message.type == V_STATUS && Relays[message.sensor].relayAckCountR > 0) {
           [reset des zählers]
        }
       
        else if (...percentage...) {            [bla]
        }
    }
    else if ( [Behandlung der Nachrichten vom Controller] ...
--- Ende Code ---

(Wie gesagt: Gejammer auf hohem Niveau...)

frober:

--- Zitat von: Beta-User am 10 Juli 2021, 15:31:49 ---Für einen "Erstling" finde ich das ziemlich cool, und die "Kritik" ist auf eher hohem Niveau angesiedelt - ohne behaupten zu wollen, dass ich alles verstanden habe, was da vercoded ist...
Es geht nur um die "receive()"-Funktion, und das mit dem Zähler ist soweit klar.

Innerhalb der Funktion sind aber die Teile relativ weit hinten angesiedelt, die sich mit Ack-Nachrichten beschäftigen. Hat man keinen Zähler, ist man dann eigentlich schon fertig, hat man einen, könnte man die Ack-Behandlung innerhalb eines einzigen "if"-Zweiges (ggf. mit weiteren Unterscheidungen nach Typ etc. innerhalb dieses Zweiges) unterbringen - da wird ja jeweils nur der Zähler auf "0" (= ok) gesetzt...
Wäre m.E. übersichtlicher...

Pseudecode ist evtl. einfacher:

--- Code: ---void receive(const MyMessage &message) {
    if (message.isAck() ) {
        if (message.type == V_STATUS && Relays[message.sensor].relayAckCountR > 0) {
           [reset des zählers]
        }
       
        else if (...percentage...) {            [bla]
        }
    }
    else if ( [Behandlung der Nachrichten vom Controller] ...
--- Ende Code ---

(Wie gesagt: Gejammer auf hohem Niveau...)

--- Ende Zitat ---

Wow, danke für das Kompliment. :)
Bei Gelegenheit werde ich mir das nochmal ansehen.

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln