serielle Datenübertragung
|
16.09.2014, 17:25
Beitrag #1
|
|||
|
|||
serielle Datenübertragung
Hallo,
ich möchte Schrittmotoren seriell ansteuern. Mit dem folgenden Sketch und dem seriellen Monitor habe ich die Übertragung getestet: Code: int zaehler =0; Wenn ich 50 Zeichen im seriellen Monitor eingebe und an den Arduino sende, kommen auch 50 Zeichen zum seriellen Monitor zurück. Aber gebe ich z.B. 200 Einsen ein, so kommen nur 118 wieder zum seriellen Monitor zurück. Ich habe Zeitverzögerungen eingefügt, Baudraten verändert und die Codezeile Code: while (!(Serial.available())){} Kann mir jemand helfen, die verlorenen Bytes zu finden? |
|||
16.09.2014, 18:18
Beitrag #2
|
|||
|
|||
RE: serielle Datenübertragung
Hi,
ich kann mir folgendes vorstellen: Der Puffer der seriellen Schnittstelle ist 64 Byte groß. 50 Byte empfangen ist also nie ein Problem. Wenn Du jetzt allerdings mehr Zeichen schickst und zwischendurch die Schnittstelle noch zum Schreiben benutzt, dann kann ich mir vorstellen, dass der Puffer überläuft. Versuch mal die empfangenen Daten in ein eigenes Array zu schreiben und nur Zeichen rauszuschieben, wenn gerade kein Zeichen available ist. Gruß, Thorsten Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen. |
|||
16.09.2014, 19:54
Beitrag #3
|
|||
|
|||
RE: serielle Datenübertragung
vielen Dank für die schnelle Antwort,
ich habe, statt die Daten zur Kontrolle an den Monitor zurück zu schicken, für jedes ankommende Zeichen einen Schrittmotor einen Schritt laufen lassen. Der Laufweg des Motors ist viel zu kurz. Es kommen also nicht alle Daten im Arduino an. Die Motoren sollen einen heißen Draht einer Styroporschneidemaschine bewegen. Die Daten müssen also kontinuierlich fließen. Gruß Thimo |
|||
16.09.2014, 21:45
Beitrag #4
|
|||
|
|||
RE: serielle Datenübertragung
(16.09.2014 19:54)Soma schrieb: ich habe, statt die Daten zur Kontrolle an den Monitor zurück zu schicken, für jedes ankommende Zeichen einen Schrittmotor einen Schritt laufen lassen. Der Laufweg des Motors ist viel zu kurz. Es kommen also nicht alle Daten im Arduino an.Hast Du da vielleicht irgendwelche delays drin? Ich Tippe auch hier auf einen Pufferüberlauf. Zitat:Die Motoren sollen einen heißen Draht einer Styroporschneidemaschine bewegen. Die Daten müssen also kontinuierlich fließen.Warum schickst Du dann nicht einfach die Anzahl der zu machenden Schritte? Dann brauchst Du nur ein oder zwei Bytes. Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen. |
|||
|
|
|
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste