Zustandsabfragen der Pins am myEthernet
   
Im Einstiegsbeispiel wurden vorrangig Kommandos an den Webserver gesendet, welche nur die Ausgabe von Signalen steuern. Da aber auch die Zustände und Konfigurationen der Pins interessant sind, gibt es noch weitere Ersetzungen die mehr Details ausgeben.

Für die Pins 0 bis 23 existieren noch die Ersetzungen °v*° °c*° °C*°. Dabei kann der * als Parameter für alle Pins angegeben sein, es erfolgt dann eine Rückgabe von 24 Werten die mit einem Semikolon getrennt sind. Anstatt dem * ist es natürlich möglich, eine Zahl von 0 bis 23, entsprechend eines einzelnen Pins, zu benutzen.

Beispiel einer Rückgabe zum Parameter °v*° (Pin0 bis Pin23):
4;3;3;2;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;1;1;0;1

Beispiel einer Rückgabe zum Parameter °c20° und °c21°:
0x1 0x1 entspricht der aktuellen Konfiguration an Pin20 Pin21, hier "digital out"

Beispiel einer Rückgabe zum Parameter °C0°:
0x1C7 entspricht allen möglichen Konfigurationen an Pin0,
hier: "digital out", "digital in", "digital in mit Pullup", "analog input" sowie einige pinübergreifende Einstellungen

Rückgaben der Parameter c und C erfolgen hier hexadezimal und können dabei eine Kombination von Bitwerten darstellen.

Liste der Bitwerte und ihre Bedeutung:
    0x1 = "digital out"
    0x2 = "digital in" optional mit 0x100 = "Pullup"
    0x4 = "analog input"
    0x8 = "uart"
    0x10 = "twi"
    0x20 = "spi"
    0x40 = "ByteOut"
    0x80 = "ByteIn" optional mit 0x100 = "Pullup"
Wie kann jetzt in einer laufenden Webanwendung eine fortlaufende Ausgabe von Werten für z. B. analoge Signaleingänge realisiert werden?

Für diesen Anwendungsfall wird ein Aufbau des myEthernet mit dem myAVR Board MK2 wie im Menü der "Bsp-Anwendungen" der myEthernet-Webseite angenommen. Dort ist ein Potentiometer am Pin12/13 angeschlossen der manuell geregelt werden kann. Die Signalumwandlung geschieht mit einer Genauigkeit von 10bit. Der Eingangswert von 0V bis 5V wird dann auf einen digitalen Wert von 0 bis 1023 umgerechnet.

Das Grundprinzip der Datenaufnahme besteht im wiederholten Abfragen des myEthernet mit einer Webseite, welche eine Liste von Ersetzungen enthält. Die Webseite ("pin1213v.htm") besteht dabei nur aus folgenden Einträgen:

    PIN12=°v12° PIN13=°v13°
Wird jetzt die Webseite mit Hilfe des Ajaxprinzips im Hintergrund dynamisch nachgeladen, dann erhält man zu jeder Anfrage eine aktuelle Rückgabe von Wertlisten. Die hier dargestellten Zeilen würden nach einer Ersetzung etwa so aussehen:

    PIN12=180 PIN13=206
Per Javascript kann jetzt eine Aufteilungen in Variabeln erfolgen, die dann für die Ausgabe oder weitere Verarbeitung der Webanwendung zur Verfügung stehen. Die Abfrageintervalle sollten dabei nicht zu klein gewählt werden. Es bietet sich außerdem an, immer erst auf eine Rückgabe zu warten, bevor eine neue Anfrage an den myEthernet-Webserver geschickt wird. Die Umsetzung kann dabei mit der Javascriptfunktion "setTimeout()" geschehen, die nach jedem erfolgreichem Rückgabewert mit Ablauf eines Intervalls von z. B. 1000ms startet.

Die Ausgabe zur vollständigen Anwendung könnte so aussehen:



Der HTML- und Javascriptcode: