Waarom functie l ?

Alles wat betrekking heeft op dit Dutch boek. (DUTCH forum)
Post Reply
Tiz
Member
Member
Posts: 146
Joined: Tue May 19, 2009 12:21 pm
Location: Netherlands

Waarom functie l ?

Post by Tiz »

Tijdens het ontwikkelen van mijn software, was ik bezig om de situatie te programmeren die beschrijft wat er moet gebeuren zodra er een verandering in het netwerk plaatsvindt. In onderstaand schema zie je de stappen die ik bedacht had. Alleen vraag ik mij nu af wat het nut is van de functie l. Ik moet immers toch nog een byte inlezen van de status van sensoren/actoren/motoren en die vergelijken met de status voor de wijziging om te bepalen welke indiviuele input of output gewijzigd is. En dat moet ik wel weten om bijvoorbeeld een scenario af te lopen. Je ziet in het schema aan de rechterkant dan ook een andere optie, namelijk om bij de gewijzigde module, meteen maar te beginnen met alle bytes in te lezen en dan te vergelijken met de situatie ervoor. Ziet iemand hier iets raars in?
Image
Heino Peters
Member
Member
Posts: 75
Joined: Wed Jun 21, 2006 10:31 pm
Location: Netherlands

Waarom functie l ?

Post by Heino Peters »

Tiz,

Allereerst krijg ik het gevoel dat je er heel lekker mee bezig bent en dat doet me goed. Ik ben benieuwd naar de resultaten straks. De functie "i" (van "idee") vertelt je niet meer dan de huidige status van de 8 actoren op de geselecteerde IO-module. Je hebt deze functie nodig omdat je die status ook handmatig kunt flippen op de IO-module. Zoder de functie "i" kun je dan nooit met zekerheid zeggen wat de actuele status is.

Met de functie "l" (van "lucht") krijg je van de geselecteerde IO-module te weten of er iets gewijzigd is en wat dit dan is. Niet op detailniveau, maar je weet dan bijvoorbeeld wel of er bijvoorbeeld een actor handmatig is gewijzigd en je daarna de functie "i" moet aanroepen.

Ik zou dus in je software met het commando "F" (staat niet in het boek maar wel in de releasenotes op www.elektor.nl, zie hieronder voor de relevante alinea over dit commando) alle modules in de wacht-modus zetten en dan in je software wachten tot je een "X" terugkrijgt op je COM-poort. Dit gebeurt als er iets veranderd is (gewijzigde sensor of actor). Dan selecteer je met het commando "D" (of "E") de eerste module waar iets gewijzigd is (het kunnen er natuurlijk toevallig meerdere tegelijk zijn) en met de functie "l" kijk je dan wat er gewijzigd is. Op basis daarvan ga je dan naar bijv. de functie "c", "i", "j", of "k". Gegevens die niet gewijzigd zijn hoef je zo niet onnodig opnieuw in te lezen.

Met het commando F zet je de interface en alle modules in de wacht-modus. Je stuurt hiervoor eerst het startcommando FFh, krijgt daarna de netwerkstatus terug. Vervolgens stuur je een "F" en krijg je ter bevestiging deze "F" weer terug. Hierna blijft het helemaal stil, zowel op de COM-poort als op de domotica bus. Zodra er in je domotica installatie iets te melden is, dan krijgt de master een "X" door via de COM-poort, waarna je met het startcommando FFh nieuwe communicatie kunt starten, meestal gevolgd door commando D en functie "l". Je kunt dit wachten desgewenst eerder ook al onderbreken door gewoon een nieuw commando vanuit de PC te sturen, natuurlijk voorafgegaan door een nieuw startcommando (FFh). Commando "F" wordt ondersteund vanaf versie 2 van de software voor de interface en de IO modules.

Veel succes!

Heino
Tiz
Member
Member
Posts: 146
Joined: Tue May 19, 2009 12:21 pm
Location: Netherlands

Waarom functie l ?

Post by Tiz »

Heino,

bedankt voor de reactie met zeer duidelijke uitleg. Met name ook de verdere uitleg van commando F (wist niet dat ik op een X moest wachten) helpt me verder.
Ondertussen ben ik me ook in de broncode van het Router project aan het verdiepen. Samen met het UML diagram behorende bij het stage-verslag helpt mij dit stukken verder. Ik was namelijk een beetje aan het vastlopen op het aflopen van de scenario's. En ook al programmeer ik zelf in C#, dit helpt me snel op pad.

Mocht je het intressant vinden, mijn progressie probeer ik bij te houden op de volgende site: http://homepages.onsnet.nu/~vanSuilichem/
Heino Peters
Member
Member
Posts: 75
Joined: Wed Jun 21, 2006 10:31 pm
Location: Netherlands

Waarom functie l ?

Post by Heino Peters »

Hoi Tiz,

Leuk te zien hoe je er mee bezig bent. Het blijft ook voor mij steeds weer een kick om te zien dat iemand die mijn boek gekocht heeft daar ook mee aan de slag gaat en dan ook iets werkends krijgt. Het zijn een hoop stappen die je daarvoor hebt moeten doorlopen: boek kiezen en kopen, printjes bestellen, componenten bestellen, alles aansluiten, de PIC's programmeren, software schrijven enz. Bij ieder van die stappen kan er iets zo fout gaan dat je afhaakt. Het geeft mij dan waarschijnlijk net zo veel voldoening als jou te zien dat er een tekst op de LCD van een IO-module verschijnt. Succes verder!

Heino
Post Reply

Return to “Domoticaboek Heino Peters”