INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Wird der "print"-Befehl auch ohne Zugriff über Konsole abgearbeitet?
16.06.2014, 18:14
Beitrag #1
Wird der "print"-Befehl auch ohne Zugriff über Konsole abgearbeitet?
Hallo,

ich habe eine kurze Frage.
Zur Kontrolle und Fehlerbehebung habe ich mein Skript mit "print"-Befehlen ausgestattet.

Werden diese auch abgearbeitet und belasten das System, wenn kein Zugriff über Konsole (im richtigen Betrieb) besteht?

Sollte ich also diese Befehle auskommentieren? Ich weiß, dass Platz im Speicher belegt wird und ich arbeite bereits mit print(f, aber darum geht es hier nicht.

Vielen Dank
itsy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.06.2014, 21:35 (Dieser Beitrag wurde zuletzt bearbeitet: 16.06.2014 21:36 von rkuehle.)
Beitrag #2
RE: Wird der "print"-Befehl auch ohne Zugriff über Konsole abgearbeitet?
Hallo itsy,
Zitat:ich habe eine kurze Frage.
Kurze Antwort: Ja Big Grin
Ne im Ernst, print (egal ob auf LCD oder Serial or what ever) läuft asynchron.
Bedeutet print wartet auf den Ready-Status des TX Kanals,schiebt ein Byte raus, wartet wieder auf Ready, schiebt das nächste Byte raus usw.
Daher kann es zB. bei niedriger Baudrate und Serial.print() in einer Schleife sein, dass die Schleife längst abgearbeitet ist, auf dem Monitor jedoch noch nicht alle Zeichen zu sehen sind.
Eine Möglichkeit den Status abzufragen bieten zB. if(Serial) oder while(Serial).
Das Problem: Ausser bei fehlender USB - Verbindung (die nutzt ja auch Serial) beim Leonardo bringt Serial immer den Status Ready. Daher wird print auch immer abgearbeitet (ausser eben beim Leo und fehlender USB-Verbindung)
Irgendwann ist der Puffer voll, dann wird er halt gelerrt von vorn gefüllt.
Ergo: Wer Speed haben möchte sollte, wenn print nicht genutzt wird, dies auch aus dem Code entfernen.
Hope it helps!

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.06.2014, 17:15
Beitrag #3
RE: Wird der "print"-Befehl auch ohne Zugriff über Konsole abgearbeitet?
Hallo Ricardo,

hab vielen Dank für Deine Antwort.

So ganz habe ich es immer noch nicht verstanden ;-)

Zitat:Das Problem: Ausser bei fehlender USB - Verbindung

Das bedeutet, wenn bei Systemen (außer Leonardo) keine USB-Verbindung besteht, dann wird es nicht abgearbeitet?

"if(Serial)" müsste ich sonst theoretisch immer vor jedem "print" schreiben (was den Code nicht besser macht)?

Ist es generell am Besten mit der Höchsten Baud-Rate zu arbeiten?

Vielen Dank
itsy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.06.2014, 18:41
Beitrag #4
RE: Wird der "print"-Befehl auch ohne Zugriff über Konsole abgearbeitet?
Hallo itsy,
Zitat:Das bedeutet, wenn bei Systemen (außer Leonardo) keine USB-Verbindung besteht, dann wird es nicht abgearbeitet?
Nein, umgedreht wird ein Schuh daraus. If(Serial) wird immer true ergeben, es sei denn es gibt Probleme mit der USB-Verbindung bei einen Arduino Leonardo. Bei allen anderen Typen des Arduino wird if(Serial) immer true ergeben, egal unter welchen Bedingungen. Da also immer true herauskommt werden die print - Befehle auch immer abgearbeitet. Daher sollten diese Befehle dann aus dem Code raus. Möchtest du die print Befehle im Code drin lassen (weil du vllt. irgendwann doch nochmal mit dem Monitor arbeitest), sollte, wie du rcihtig erkannt hast, Serial.begin() mit der höchstmöglichen Baudrate gesetzt werden.

War das verständlich Huh

Grüße RK

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.06.2014, 18:55
Beitrag #5
RE: Wird der "print"-Befehl auch ohne Zugriff über Konsole abgearbeitet?
Hallo Ricardo,

alles klar - jetzt habe ich es verstanden :-) Bis alles läuft wird auf die höchste Baudrate gesetzt!

Vielen Dank
itsy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.06.2014, 19:13 (Dieser Beitrag wurde zuletzt bearbeitet: 17.06.2014 19:13 von ArduTux.)
Beitrag #6
RE: Wird der "print"-Befehl auch ohne Zugriff über Konsole abgearbeitet?
Hallo itsy
Zitat:"if(Serial)" müsste ich sonst theoretisch immer vor jedem "print" schreiben (was den Code nicht besser macht)?

Ich bin zwar auch noch anfänger, aber ich versuche mich mal ...
Code:
if(Serial)
bedeutet doch das ich die Console gestartet habe?
Code:
if(!Serial)
bedeutet doch das ich keine Console gestartet habe?

Und zu der Frage ob auch ohne USB/Console die Serial Befehle trotzdem durchlaufen, dazu kan ich sagen das ich gerade keine Kombilierungsfehler bekommen habe.

Keine Ahnung, ich kämpfe gerade selbst etwas mit der Kommunikation SPI. Wie, Wo, Warum, Warum nicht, usw.

gruß

In unserer Gesellschaft ist das Gehirn am gerechtestesten Verteilt! Jeder glaubt, er habe genug davon.
Hardware: SainSmart Mega 2560 R3 + 3,2" LCD-Touch-Screen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.06.2014, 08:09
Beitrag #7
RE: Wird der "print"-Befehl auch ohne Zugriff über Konsole abgearbeitet?
Moin ArduTux,
Zitat:if(Serial)bedeutet doch das ich die Console gestartet habe?
Eindeutig: Jain! Nicht du hast was gemacht, sondern der Arduino.
Der Arduino hat ja einen UART Chip über den die serielle Kommunikation abgewickelt wird. Die Serial-Klasse setzt auf diese Hardware auf. Das "Serial" in "if(Serial)" ruft einfach den sog. Klassenkonstruktor der Serial-Klasse auf. Wenn der Aufruf "true" zurückgibt bedeutet dies nix anderes, als dass die UART-Hardware gemeldet hat "ich bin bereit".
In meinem 1. Post habe ich folgendes gesagt:
Zitat:print (egal ob auf LCD oder Serial or what ever) läuft asynchron.
Richtiger wäre vielleicht gewesen: der UART Chip arbeitet asynchron und daher laufen die Funktionen der Serial- Klasse asynchron.
Asynchron bedeutet ja, dass Eingabe- und Ausgabe von Daten unabhängig voneinander laufen. Um dies abzusichern haben UART-Chips immer einen Puffer als "ausgleichende" Komponente. Und weil das genau so ist, wird "if(Serial)" immer true liefern (außer beim USB / Leonardo - Thema), da über den Puffer immer abgesichert ist, dass Daten vom UART-Chip angenommen werden können.

Es geht also nicht darum ob der Monitor gestartet wurde, sondern darum ob der UART-Chip bereit ist Daten anzunehmen.

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.06.2014, 11:00
Beitrag #8
RE: Wird der "print"-Befehl auch ohne Zugriff über Konsole abgearbeitet?
... genau, sach ich doch Tongue

Ich finde das du hier wirklich gute Arbeit im Forum machst @rkuehle viele hätten an der Stelle wieder nur irgendein Link eingestellt. Dann noch auf das selber lesen Hinweisen und Fertig.

Gefällt mir das es hier nicht so gemacht wird. Manchmal hilft ja auch nur ein kleines anstupsen um auf den richtigen Weg zu kommen.

gruß

In unserer Gesellschaft ist das Gehirn am gerechtestesten Verteilt! Jeder glaubt, er habe genug davon.
Hardware: SainSmart Mega 2560 R3 + 3,2" LCD-Touch-Screen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Servo über Temperatur steuern querkopf71 3 68 Gestern 19:21
Letzter Beitrag: hotsystems
  avrdude: ser_open(): can't open device "\\.\COM5": Zugriff verweigert DL1AKP 6 150 24.11.2016 14:56
Letzter Beitrag: Bitklopfer
  Kommunikation über das WiFi-Shield Flap 3 234 07.11.2016 20:20
Letzter Beitrag: hotsystems
  Menü über Bluetooth Eingabe abwarten anwo 4 504 18.10.2016 08:59
Letzter Beitrag: Lolliball
  Daten über USB verarbeiten Felix91 10 325 12.10.2016 13:00
Letzter Beitrag: Tommy56
  Code mit Verifikation über Keypad & LCD machnetz 5 215 10.10.2016 15:01
Letzter Beitrag: torsten_156
  Speicher sparen bei serial.print?? DL1AKP 3 194 02.09.2016 13:32
Letzter Beitrag: hotsystems
  SD Karte wird nicht erkannt... Maxi290997 2 208 16.08.2016 14:36
Letzter Beitrag: Maxi290997
  Arduino Steuern über eigne Homepage b3ta 8 401 16.08.2016 11:07
Letzter Beitrag: Pit
  Arduino Uno R3 wird nicht erkannt feuerwehr 9 724 15.06.2016 20:38
Letzter Beitrag: feuerwehr

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste