Nodo-Domotica / Nodo-Core

Arduino based Domotica platform
http://www.nodo-domotica.nl
4 stars 8 forks source link

Delay verstuurt werking #176

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
een Delay 1 in de eventlilst zorgt ervoor dat verwerking gestopt wordt.
Deze eventlist:
15:17:56   Unit4.**************************************************
15:17:56   Unit4.EventList 1: (UserEvent 1, 9); (Sound 3, 0)
15:17:56   Unit4.EventList 2: (UserEvent 1, 9); (Delay 1)
15:17:56   Unit4.EventList 3: (UserEvent 1, 9); (Sound 4, 0)
15:17:56   Unit4.EventList 4: (UserEvent 1, 9); (Delay 1)
15:17:56   Unit4.EventList 5: (UserEvent 1, 9); (Sound 5, 0)
15:17:56   Unit4.**************************************************
Zorgt voor deze verwerking:
15:17:58   Serial Port: Write Data: UserEvent 1,9;
15:17:58   Unit4.**************************************************
15:17:58   Unit4.INPUT: Serial, Event, (UserEvent 1, 9)
15:17:58   Unit4.EventList 1: (UserEvent 1, 9); (Sound 3, 0)
15:17:58   Unit4.INTERNAL: EventList, Command, (Sound 3, 0)
15:17:59   Unit4.EventList 2: (UserEvent 1, 9); (Delay 1)
15:17:59   Unit4.INTERNAL: EventList, Command, (Delay 1)
15:17:59   Unit4.EventList 3: (UserEvent 1, 9); (Sound 4, 0)
15:17:59   Unit4.EventList 4: (UserEvent 1, 9); (Delay 1)
15:17:59   Unit4.EventList 5: (UserEvent 1, 9); (Sound 5, 0)
Sound 4 en 5 worden niet geproduceerd.

Deze eventlist:
15:18:12   Unit4.**************************************************
15:18:12   Unit4.EventList 1: (UserEvent 1, 9); (Sound 3, 0)
15:18:12   Unit4.EventList 2: (UserEvent 1, 9); (Sound 4, 0)
15:18:12   Unit4.EventList 3: (UserEvent 1, 9); (Sound 5, 0)
15:18:12   Unit4.**************************************************
levert dit:
15:18:14   Serial Port: Write Data: UserEvent 1,9;
15:18:14   Unit4.**************************************************
15:18:14   Unit4.INPUT: Serial, Event, (UserEvent 1, 9)
15:18:14   Unit4.EventList 1: (UserEvent 1, 9); (Sound 3, 0)
15:18:14   Unit4.INTERNAL: EventList, Command, (Sound 3, 0)
15:18:15   Unit4.EventList 2: (UserEvent 1, 9); (Sound 4, 0)
15:18:15   Unit4.INTERNAL: EventList, Command, (Sound 4, 0)
15:18:17   Unit4.EventList 3: (UserEvent 1, 9); (Sound 5, 0)
15:18:17   Unit4.INTERNAL: EventList, Command, (Sound 5, 0)
Sounds 3, 4 en 5 hoor ik nu goed.

Original issue reported on code.google.com by j.h....@hccnet.nl on 29 Dec 2010 at 2:21

GoogleCodeExporter commented 9 years ago
"verstuurt" in de titel van dit issue moet zijn "verstoort"

Original comment by j.h....@hccnet.nl on 29 Dec 2010 at 2:22

GoogleCodeExporter commented 9 years ago
weet niet of het gerelateerd is, maar ik krijg nu deze events terug, terwijl ik 
toch helemaal niks doe met variables:
15:18:55   Unit4.**************************************************
15:18:55   Unit4.INTERNAL: Variables, Event, (Variable 1, 0)
15:19:31   Unit4.**************************************************
15:19:31   Unit4.INTERNAL: Variables, Event, (Variable 1, 0)
15:19:32   Unit4.**************************************************
15:19:32   Unit4.INTERNAL: Variables, Event, (Variable 1, 0)
15:20:46   Unit4.**************************************************
15:20:46   Unit4.INTERNAL: Variables, Event, (Variable 1, 0)
15:21:22   Unit4.**************************************************
15:21:22   Unit4.INTERNAL: Variables, Event, (Variable 1, 0)
15:21:23   Unit4.**************************************************
15:21:23   Unit4.INTERNAL: Variables, Event, (Variable 1, 0)
15:21:59   Unit4.**************************************************
15:21:59   Unit4.INTERNAL: Variables, Event, (Variable 1, 0)
15:22:00   Unit4.**************************************************
15:22:00   Unit4.INTERNAL: Variables, Event, (Variable 1, 0)
15:22:37   Unit4.**************************************************
15:22:37   Unit4.INTERNAL: Variables, Event, (Variable 1, 0)
15:23:13   Unit4.**************************************************
15:23:13   Unit4.INTERNAL: Variables, Event, (Variable 1, 0)
15:23:14   Unit4.**************************************************
15:23:14   Unit4.INTERNAL: Variables, Event, (Variable 1, 0)
15:23:50   Unit4.**************************************************
15:23:50   Unit4.INTERNAL: Variables, Event, (Variable 1, 0)

Original comment by j.h....@hccnet.nl on 29 Dec 2010 at 2:24

GoogleCodeExporter commented 9 years ago

Original comment by P.K.Ton...@gmail.com on 29 Dec 2010 at 2:58

GoogleCodeExporter commented 9 years ago
Foutje met openen/sluiten van haakjes in de code. Queue vullen gaat hierdoor 
ook niet goed. Wordt vervolgd...

Original comment by P.K.Ton...@gmail.com on 29 Dec 2010 at 3:15

GoogleCodeExporter commented 9 years ago
Het wordt erg complex. Delay moet kunnen voldoen aan twee typen van gebruik:
1) als direct commando
2) in de eventlist

Normaliter zit er geen verschil tussen beide typen verwerking, probleem is 
echter dat er nu is ingebouwd dat tijdens een Delay er voorbij komende events 
worden geplaatst in een queue. Het is dus niet een traditionele delay waarbij 
niets wordt gedaan, maar een alternatieve werking van de hoofdloop. Voor 1) is 
dit geen probleem, voor 2) is dit lastig omdat ik dan binnen het mechanisme van 
nesting moet bijhouden of er een delay actief is.

Dit kan, maar:
1. vergt veel uitzonderingen en minder charmante programmering. Daar wil ik 
eigenlijk niet aan beginnen. 
2. Wellicht groter probleem is dat de Stack enorm veel meer ruimte vraagt omdat 
ik een volledig nieuwe instance van de hoofd-loop moet starten. Mijn vrees is 
dat we hier snel spijt van gaan krijgen. 
3. Omdat er achtergrondverwerking is (events scannen voor vullen queue) is de 
delay niet meer nauwkeurig.

Voorstel is om tijdens verwerking van een event door de Eventlist, het commando 
delay NIET de voorbij komende events in de queue te laten plaatsen. Dus:

a) delay met voorziening om de queue laten vullen als deze als direct als 
commando wordt aangeroepen, b.v. in opdracht van een centrale Nodo.

b) delay in de Eventlist een echte, ouderwetse, dode delay, met de kanttekening 
dat er na 60 seconden risico is dat er Clock-events gemist worden.

Eventueel kunnen a) en b) worden gespitst in twee separate commando's.

Original comment by P.K.Ton...@gmail.com on 29 Dec 2010 at 9:32

GoogleCodeExporter commented 9 years ago
Ik begrijp het.
Mijn voorkeur zou zijn:
1. delay laten bestaan in zijn oude glorie, dus als "dode periode" 
waarin Nodo zijn oogjes dichtdoet.
2. nieuw commando: freeze, waarin wel events worden ge-queued.
Syntax:
freeze n, waarbij n=1..255, en
freeze off, waarbij de freeze voortijdig wordt afgebroken.

Overigens moeten die spontane Variables events wel ergens vandaan 
komen. Na laden van een nieuwe build doe ik ALTIJD zelf ook nog een 
Reset, ook als hij automatisch na het laden gebeurt.
de Variables traden op in beide test Nodo's.

Hans

At 22:33 29-12-2010, arduino-nodo@googlecode.com wrote:

Original comment by j.h....@hccnet.nl on 29 Dec 2010 at 9:43

GoogleCodeExporter commented 9 years ago
Ok.

Splitsen dus. Nu vind ik 'freeze' de indruk wekken dat echt alles bevroren is. 
Wat vind je van:

- Hold
- Pause
- Stop
- QueueEvents
- Retain
- Endure

Original comment by P.K.Ton...@gmail.com on 29 Dec 2010 at 9:56

GoogleCodeExporter commented 9 years ago
Ik he het voor beide gevallen Delay gelaten. Eén commando dus. Die voor 
toelichting de command reference.

Original comment by P.K.Ton...@gmail.com on 29 Dec 2010 at 10:37

GoogleCodeExporter commented 9 years ago
Het zat toch nog wat te knagen:
- Het onderscheid tussen directe aanroep versus in een eventlist;
- In sommige gevallen is het juist de bedoeling dat er geen events worden 
opgepikt.

Ik het daarom nog wat aanpassingen gedaan:
- Alleen voorbij komende events in de queue plaatsen als Par2=On.
- Nu wordt ook als een Delay wordt uitgevoerd in de eventlist de voorbij 
komende events in een queue geplaatst.

Onderstaande de tekst voor de gebruiker:
================================================================================
Wacht het opgegeven aantal seconden met verwerking. Parameter-1 is de tijd in 
seconden. Als een delay actief is knippert de led snel om aan te geven dat er 
gewacht wordt. 

Met Par2 kan worden aangegeven of events die tijdens het wachten optreden in 
een wachtrij (queue) geplaatst moeten worden. Als dit het geval is worden deze  
alsnog verwerkt nadat de Delay tijd is afgelopen. Als de queue optie is 
ingeschakeld kan een delay vroegtijdig worden afgebroken met een 'Delay Off' 
commando.

LET OP: De queue heeft ruimte voor maximaal 15 events. Als de queue vol is 
wordt er een error-event gegenereerd.

LET OP: Met een Delay die langer duurt dan één minuut loopt u het risico dat 
Clock-events niet worden opgemerkt. Dit geldt niet als de queue optie is 
ingeschakeld en er ruimte in de queue is.

LET OP: Voor langere wachttijden wordt afgeraden het Delay commando te 
gebruiken. Gebruik in deze situatie bij voorkeur timers.

================================================================================

Original comment by P.K.Ton...@gmail.com on 2 Jan 2011 at 9:30

GoogleCodeExporter commented 9 years ago
getest

Original comment by j.h....@hccnet.nl on 4 Jan 2011 at 4:02

GoogleCodeExporter commented 9 years ago

Original comment by P.K.Ton...@gmail.com on 4 Jan 2011 at 9:54

GoogleCodeExporter commented 9 years ago
Released in versie V1.2.0

Original comment by P.K.Ton...@gmail.com on 1 Apr 2011 at 11:17

GoogleCodeExporter commented 9 years ago

Original comment by P.K.Ton...@gmail.com on 1 Apr 2011 at 11:18

GoogleCodeExporter commented 9 years ago

Original comment by P.K.Ton...@gmail.com on 1 Apr 2011 at 11:24