2016-04-21 7 views
0

Sorry für mein schlechtes Englisch zuerst.Kann ich Daten über mein Arduino-Ethernet senden, ohne meine Skizze zu "blockieren"?

Ich arbeite derzeit an einem Arduino-Projekt, das wirklich einfach ist.

Ich arbeite an einer Anwesenheitsliste für meine Schule, um zu wissen, wie viel Zeit die Schüler damit verbringen, zu studieren. Der RFID Reader Teil funktioniert gut. Wenn ein Tag erkannt wird, speichere ich den Wert und die Uhrzeit auf einer SD-Karte. Jede Stunde muss mein System die Protokolle an einen Webserver senden, um es in einer Datenbank zu speichern und hier kommt mein Problem. Ich kämpfe mit dem Ethernet-Teil.

In der Tat, wenn ich eine HTTP-Anfrage ausführen, ist meine Skizze "blockiert" und Schüler können das System nicht mehr verwenden. Es ist ein wirklich großes Problem, denn wenn es in meinen Protokollen 200 Zeilen gibt, dauert es sehr lange, diese durch eine Anfrage einzeln zu senden.

Mir ist bereits bekannt, Millis() verwenden, um "Multitasking" zu verwenden.

Ich habe absolut keine Ahnung darüber, wie man Anfragen sendet, ohne meine Skizze zu "blockieren". Ich suche nicht jemanden, der meine Skizze schreibt. Ich möchte nur wissen, ob es einen Weg gibt, den "blockierenden" Effekt des Ethernet-Shields zu vermeiden, wenn ich eine Anfrage mache.

Danke für Ihre Hilfe.

+0

Ich weiß nicht, wie Sie es eingerichtet haben, aber ich denke, die billigste, einfachste Lösung wäre, einen zweiten Arduino-Klon für zwei Dollar online zu bekommen. Man könnte RFID-Tags lesen und schreiben, während der andere sendet. – jDo

+0

Also korrigiere mich, wenn ich falsch liege, aber die Idee wäre, mein Ethernet-Schild mit einem Arduino und meinem RFID-Leser mit einem zweiten zu verbinden. Aber wie soll der zweite Daten an die SD-Karte des Ethernet-Shields senden? – Kairos

+0

Ja, stimmt. Ich habe mir irgendwie vorgestellt, dass beide Zugang zu den gleichen Speichermedien haben könnten, aber wenn es sich um eine SD-Karte auf einem Schild handelt, kann es einige Hacking/Löten erfordern.Wäre es möglich, stattdessen nach "eingehenden" Messwerten in der Übertragungsschleife zu suchen und daraus zu brechen, wenn jemand das Lesegerät benutzt, oder ist das die "eine Zeile nach der anderen" -Lösung, die Sie vermeiden möchten? – jDo

Antwort

0

Auch wenn Sie eins nach dem anderen senden, haben Sie keine Kontrolle über die Server-Seite. Sie haben keine Garantie, dass der Server immer Antwort innerhalb eines bestimmten Zeitrahmens ist. Wenn Ihr System sehr ausgelastet ist, ist dies möglicherweise nicht Ihre perfekte Lösung.

auf anderer Seite, nur einen Gedanke aber, (Ich habe nicht persönliche Erfahrung mit Ethernet-Schild.)

Sie Daten seriell von dem ersten Arduino zweiten ardiuno schicken könnten, einzeln, jedes Mal, RFID erkannt. Dies sollte nicht viel Zeit im Vergleich zu der Zeit, um 100 Zeilen von Protokollen zu senden. Nun, einer nach dem anderen, kann der zweite Ardiuno diese Daten in seinem Speicher speichern, bis er schließlich an den Server gesendet wird.

jetzt, wenn zweite Arduino ist beschäftigt, Daten an den Server zu senden, können wir einige dieser RFID-Lesung im ersten Arduino Speicher sammeln, und übergeben, wenn die Dinge mit dem Server fertig ist.

um zu überprüfen, ob das zweite Arduino bg ist, könnten wir einen Pin hoch im zweiten Arduino setzen, bis der Server fertig ist.

aber immer noch, ich sehe nicht, warum müssen Sie es jede Stunde senden. Ich nehme an, du hast deinen Grund.

Wenn Sie noch etwas Zeit sparen möchten, machen Sie eine parallele Datenübertragung zwischen zwei Arduino, anstatt seriell.

+0

Nun, Ihre Lösung könnte gut sein. Ich werde es versuchen. Und ich muss die Daten jede Stunde senden, weil die Schüler nicht den gleichen Zeitplan haben. (Ich fange zum Beispiel um 9 Uhr an, aber einer meiner Freunde beginnt um 10 Uhr). Da das System Informationen über die Anwesenheit von Studenten enthält, muss meine Datenbank so weit wie möglich aktualisiert werden. – Kairos