Seppi schrieb:
> Hallo,
>
> habe einen Webserver Arduino DUE mit Ethernet Shield.
> Der Webserver bekommt seine Daten über eine Serielleschnittstelle.
> Die Serielleschnittstelle läuft im Interrupt. Jetzt kann passieren wenn
> zwei auf den Webserver zugreifen das er da durcheinander kommt mit dem
> Abfragen der Daten über die Serielle schnittstelle. Ist es möglich den
> zweiten Teilnehmer kurze Zeit zu blockieren bis die Daten vom ersten
> Teilnehmer kommplett dargestellt sind (oder die Daten komplett Empfangen
> wurden über die Serielleschnittstelle).
Es gibt mehrere Möglichkeiten, wie du das Problem in den Griff kriegen
kannst.
Wenn es sich nur um relativ wenige mögliche Daten handelt, dann lässt du
gar nicht von der Web-Verbindung aus auf die Serielle zugreifen. Statt
dessen hast du einen Mechanismus, der ständig per Serieller die Daten
abfragt und die Ergebnisse in Variablen im Server vorhält. Eingehende
Web-Anfragen werden aus diesem Pool bedient.
Das geht natürlich nur, wenn per Serieller nicht tausende verschiedene
Werte abrufbar sind. Wenn wir aber von ein paar Temperaturen sprechen,
dann ist das ein gangbarer Weg.
Die andere Alternative ist deutlich aufwändiger und besteht darin zu
akzeptieren, dass die Serielle eine shared Resource darstellt. D.h. du
brauchst einen Mechanismus wie der Beginn des Zugriffs auf die Serielle
eine Blockade für andere Zugriffe errichtet, die erst wieder gelöst
wird, wenn der Zugriff abgeschlossen ist. Dazu müssen unter Umständen
auch Anfragen in einer Warteschlange zwischengespeichert werden, ehe sie
dann an die Reihe kommen.
Ich weiss jetzt auch schon, was als nächstes kommen wird. Du wirst mir
sagen, dass du ja kein gelernter Informatiker bist und davon eigentlich
keine Ahnung hast. Dann muss ich zurückfragen: Ja, wie hast du dir das
denn vorgestellt? Was glaubst du, warum ein Informatik Studium
mindestens 10 Semester dauert, wenn das im Prinzip jeder Metzger aus dem
Ärmel schütteln könnte? "Ich will" ist nun mal zu wenig. Du Frage ist
nicht, was du willst, sondern die Frage ist was du kannst.