Verschiedenes > MySensors
[gelöst]Probleme mit receive (alte Daten werden geladen)
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