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). Die Webseiten liegen auf der Sd-Karte. Austausch von dem jeweiligen Zustand erfolgt über Ajax.
Seppi schrieb: > 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). ja. für mehr Infos muss man den code sehen.
Code wäre jetzt zu lange um den komplett zu senden. Ist so aufgebaut. Das Beispiel WEbserver. Die einzelnen Html Seiten je nach Anfrage geladen. Und über Ajax wird der jweielige Stauts zurückgegeben. Die Daten werden über die Serielle Schnittstelle übertragen. Wenn ich eine zweite verbindung aufbauen frägt er ja die Daten auch wieder ab je nach Webseite und dann kommt es zu schwierigkeiten auf der Seriellen Schnittstellt bzw. bei meinem Empfänger. Die Datenafrage erfolgt alle Sekunde.
Wie kann ich den 2 bzw 3 Teilnehmer kurze Zeit zu blockieren so das erst die eine Abfrage erfolgt dann für den nächsten Teilnehmer. Hat wer ein einfaches Beispiel. Danke
Seppi schrieb: > Code wäre jetzt zu lange um den komplett zu senden. Seppi schrieb: > Hat wer ein einfaches Beispiel. Einfaches Beispiel wäre jetzt zu lange um das komplett zu senden. Dein Stichwort lautet Mutex.
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.
danke für die Antworten. Ich bin kein Informatiker oder Metzger. Es sind leider nicht nur ein paar Temp werte. Hab ich mir schon gedacht das nur sowas wie die zweite möglichkeit in Frage kommt.
man mutex, man lock Beispielimplementierungen sucht das nette google für dich.
Personalrat a.D. schrieb: > man mutex, man lock > > Beispielimplementierungen sucht das nette google für dich. aber nicht auf einen Arduino DUE da reicht eine bool variable, die man abfragt.
> da reicht ...
Problem sind die Warteschlangen. Speicher rechnen die in Kilobyte. Da
muss man sich schon Gedanken machen, wie man mehrere Server-Anfragen in
den Speicher bekommt.
Noch einer schrieb: > Problem sind die Warteschlangen. Speicher rechnen die in Kilobyte. Da > muss man sich schon Gedanken machen, wie man mehrere Server-Anfragen in > den Speicher bekommt. die Frage ist wie überhaupt mehre anfragen gleichzeitig bearbeitet werden? ISR können nicht gleichzeitig laufen, und wenn es eine Warteschlange gibt erfolgt es der Reihenfolge nach. Aus dem Grund will ich erst mal den Code sehen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.