Moin, wenn ich bei einem Arduino mit dem Befehl Serial.println(x) beispielsweise Daten ausgebe, dann schreibt der Arduino das ganze ja in einen Buffer, sodass die Vergangenheitswerte stets erhalten bleiben. Bspw. 1 2 3 4 5 usw. Gibt es die Möglichkeit das zu verhindern? Anstatt, dass der Arduino die alten Werte behält, soll er immer wieder alten Werte überschreiben, sodass ich quasi immer nur auf den aktuellsten Wert zugreifen kann.
Tut er nicht, das ist dein Programm welches du verwendest um dich per serieller Schnittstelle zum Arduino zu verbinden. Dieses Programm (Serial Monitor der Arduino IDE?) reiht die Ausgaben des Arduino aneinander. Das einzige was da die "Vergangenheitswerte" speichert ist die Textbox deines Serial Monitors. Und nein, kann man nicht verhindern. Du müsstest selber ein Programm schreiben, welches immer nur die letzte vom Arduino empfangene Zeile anzeigt.
Aber wenn ich auf die Daten der seriellen Schnittstelle zurückgreife und die Plots vom Arduino Plotter mit meinem Plotter aus Matlab vergleiche, dann sehe ich eine riesige Latenz zwischen den Veränderungen, wenn ich das Signal beispielsweise ändere. Im Arduino Plotter, sehe ich Veränderungen instantan und in Matlab dauert es ewig... Vielleicht liegt es dann an meiner Kommunikation bzw. dass die Bluetooth Kommunikation allgemein sehr langsam ist... Es wirkt nämlich so, wenn ich den Plotter neustarte in Matlab, dass dieser immer auf die ersten Werte vom Arduino zugreift, sprich immer weiter hinterhängt, je später ich die Kommunikation starte.
L. N. schrieb: > Und nein, kann man nicht verhindern. Du müsstest selber ein Programm > schreiben, welches immer nur die letzte vom Arduino empfangene Zeile > anzeigt. Warum soll man dafür ein eigenes Programm schreiben müssen. Jedes vernünftige Terminal Emulationsprogramm, dass zu Recht zu dieser Gattung zählt, verfügt über die Möglichkeit der Cursor Positionierung. Der µC muss lediglich die Positioniersequenzen in den mit Serial.print() erzeugten Datenstrom einfügen. Serial.println() ist dafür allerdings eher nicht geeignet, weil es <CR><LF>-Sequenzen einfügt, die man gerade nicht haben möchte.
Wolfgang schrieb: > Der µC > muss lediglich die Positioniersequenzen in den mit Serial.print() > erzeugten Datenstrom einfügen. Serial.println() ist dafür allerdings > eher nicht geeignet, weil es <CR><LF>-Sequenzen einfügt, die man gerade > nicht haben möchte. merkste selber, ne? :-D
Bei vielen Terminalprogrammen kann man die aktuelle Zeile so überschrieben: Serial.print("\r%d",x); Der serielle Monitor von der Arduino IDE kann das nicht, soweit ich weiß. Da musst du andere Software verwenden. Eventuell möchtest du die Ausgabe so formatieren, dass die Ausgabe immer gleich breit ist, so dass nicht ungewollt Überreste der vorherigen Zeile stehen bleiben: Serial.print("\r%6d",x); Siehe https://playground.arduino.cc/Main/Printf/
Absence schrieb: > Aber wenn ich auf die Daten der seriellen Schnittstelle zurückgreife und > die Plots vom Arduino Plotter mit meinem Plotter aus Matlab vergleiche, > dann sehe ich eine riesige Latenz zwischen den Veränderungen, wenn ich > das Signal beispielsweise ändere. Wenn das Problem mit dem Matlab-Plotter auftritt, nicht aber mit dem Arduino-Plotter, ist ja schon einmal klar, dass die Ursache nicht auf der Mikrocontrolleresite liegen kann. Absence schrieb: > Vielleicht liegt es dann an meiner Kommunikation bzw. dass die > Bluetooth Kommunikation allgemein sehr langsam ist Wenn du in beiden Fällen dieselbe Kommunikationsschnittstelle benutzt und der Matlab-Plotter dann immer noch langsamer ist, weißt du, dass es an der PC-seitigen Software liegen muss. Du schreibst "mit meinem Plotter aus Matlab": Hast du den selber geschrieben? Bist du sicher, dass er sich bzgl. Datenpufferung gleich verhält wie der Arduino-Plotter? Letzterer scheint die jeweils letzten n Werte in einem FIFO-Puffer zu speichern und den Inhalt dieses Puffers zu plotten, so dass die Messkurve horizontal durchgescrollt wird. Wenn dein Matlab-Plotter hingegen sämtliche Werte seit dem Programmstart speichert und plottet, wird die Anzeige mit wachsender Datenmenge logischerweise immer langsamer werden.
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.