Difference between revisions of "Control6 (Deutsch)"

From Ethersex_Wiki
Jump to: navigation, search
 
(4 intermediate revisions by 2 users not shown)
Line 26: Line 26:
 
  C6_SOURCE = $(TOPDIR)/control6/erste-schritte.src
 
  C6_SOURCE = $(TOPDIR)/control6/erste-schritte.src
  
* [[:Kategorie:Control6 Examples|Control6 Beispielcode]]
+
* [[:Kategorie:Control6_Examples | Control6 Beispielcode]]
* [[PIN_Commands|Wie schreibe ich ein Control6 Skript]]
+
* [[PIN_Commands_(Deutsch) | Wie schreibe ich ein Control6 Skript]]
  
 
== Konzepte ==
 
== Konzepte ==
Line 37: Line 37:
  
 
* übergreifende Funktionen
 
* übergreifende Funktionen
** [[Global_Variables_(Deutsch)Globale Variablen]]
+
** [[Global_Variables_(Deutsch)|Globale Variablen]]
 
** [[PIN_Commands_(Deutsch)|Pin-Befehle]], Threading, Timer und Events
 
** [[PIN_Commands_(Deutsch)|Pin-Befehle]], Threading, Timer und Events
 
** [[Conditions_(Deutsch)|Bedingungen]]
 
** [[Conditions_(Deutsch)|Bedingungen]]
 
* Einzelaspekte, siehe
 
* Einzelaspekte, siehe
** [[ADC-Werte abfragen]]
+
** [[ADC_(Deutsch) | ADC-Werte abfragen]]
 
** [[Zugriff auf die Systemuhr]]
 
** [[Zugriff auf die Systemuhr]]
 
** [[Debug-Meldungen und SYSLOG]]
 
** [[Debug-Meldungen und SYSLOG]]
 
** [[ECMD-Befehle absetzen]]
 
** [[ECMD-Befehle absetzen]]
** [[Jabber]]
+
** [[Jabber_(Deutsch) | Jabber]]
 
** [[eMail versenden]]
 
** [[eMail versenden]]
** [[Dallas 1-wire Bus]]
+
** [[Onewire_(Deutsch) | Dallas 1-wire Bus]]
 
** [[KTY81]]
 
** [[KTY81]]
 
** [[Einfaches Menüsystem|TTY und Menü-System]]
 
** [[Einfaches Menüsystem|TTY und Menü-System]]
 
** [[IRMP_(Deutsch)|IR-Empfänger abfragen]]
 
** [[IRMP_(Deutsch)|IR-Empfänger abfragen]]
 
** [[TCP-Client als FRITZ!Box Call Monitor]]
 
** [[TCP-Client als FRITZ!Box Call Monitor]]
 
[[Kategorie:Ethersex]]
 
[[Kategorie:Control6]]
 

Latest revision as of 21:10, 30 January 2016

Control6
Status
Stable
menuconfig General Setup->Control6 script
Pinning no
Ecmd yes
Control6 yes
Uses Timer -
Depends on -
Requires -
Code https://github.com/ethersex/ethersex/tree/master/control6

Control6 ist eine auf Protothreads fußende Art von Skriptsprache, die ein wenig von Basic inspiriert ist. Control6 soll insbesondere dazu dienen, dass man die einzelnen Komponenten von Ethersex schnell zusammenfügen kann. Beispielsweise können in einer Endlosschleife die Temperaturen von KTY-Sensoren ausgelesen werden und in Abhängigkeit der Werte dann Pins geschaltet, SYSLOG-Nachrichten abgesetzt oder ECMD-Befehle versendet werden.

Die Skripte werden während des Kompiliervorgangs in C-Code übersetzt und letztlich mit in die Firmware einkompiliert. Sie sind somit statisch und nur durch Neuprogrammierung änderbar.

So fängt man an

Standardmäßig werden, wenn in Menuconfig die Funktion Control6 aktiviert wurde, die Instruktionen aus der Datei control6/control6.src in die Firmware eingebunden. Für Eigenentwicklungen, die nicht in die "Distribution" aufgenommen werden sollen, empfiehlt es sich separate Dateien in der Ethersex Ordnerstruktur anzulegen, sodass es zu keinen (oder zumindest seltener) zu Konflikten beim Update auf eine neuere offizielle Firmwareversion kommt.

Dazu einfach eine beliebige Datei im Stile der o.g. control6.src anlegen, zum Beispiel eine control6/erste-schritte.src und diese dem Makesystem bekannt machen. Letzteres durch folgenden Eintrag in der Datei config.mk im Hauptverzeichnis (wenn diese noch nicht existiert, einfach eine neue Datei anlegen und nur diese Zeile eintragen):

C6_SOURCE = $(TOPDIR)/control6/erste-schritte.src

Konzepte

  • Ein Control6-Skript wird immer von den Tags CONTROL_START und CONTROL_END umschlossen.
  • Mit THREAD resp. THREAD_END können leicht quasi nebenläufige Programmabschnitte erstellt werden. Dies ermöglicht mehrere Aufgaben, die miteinander nichts zu tun haben, auch getrennt voneinander im Control6-Code abzubilden.

Befehlssatz

Control6 ist momentan schon relativ mächtig und stellt durchaus eine Alternative zum Verfassen von C-Code dar. Es werden aber nachwievor nicht alle Aspekte von Ethersex auch in Control6 abgebildet und noch weniger werden hier im Wiki bislang thematisiert.