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
include abhängig von konstante "debug"
29.04.2016, 11:06
Beitrag #1
include abhängig von konstante "debug"
Hallo *
Ich möchte während der Entwicklungsphase meines tiny84 Programms Meldungen über den seriellen Monitor ausgeben und dazu so etwas machen:

const uint8_t debug = 1;

#if (debug != 0)
#include <SoftwareSerial.h>
#endif

void setup() {
if (debug != 0) {
SoftwareSerial mySerial(-1, 7); // RX, TX
mySerial.begin(9600);
}
}
void loop(){
if (debug != 0) {
Serial.println("irgendeine Meldung oder Variable ausgeben");
}
... weiterer Code ...
}

Den Schalter "debug" möchte ich vor der Compilierung einfach umstellen können. Allerdings meldet der Compiler unabhängig vom Wert in debug: 'SoftwareSerial' was not declared in this scope. Und weitere Kommandos die sich auf softSerial beziehen sind dann auch nicht vorhanden.

Wie kann man so etwas machen? Huh

Vielen Dank für Eure Hilfe.
LG, tiny85fan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.04.2016, 12:44
Beitrag #2
RE: include abhängig von konstante "debug"
(29.04.2016 11:06)tiny85fan schrieb:  Hallo *
Ich möchte während der Entwicklungsphase meines tiny84 Programms Meldungen über den seriellen Monitor ausgeben und dazu so etwas machen:

const uint8_t debug = 1;

#if (debug != 0)
#include <SoftwareSerial.h>
#endif

Den Schalter "debug" möchte ich vor der Compilierung einfach umstellen können. Allerdings meldet der Compiler unabhängig vom Wert in debug: 'SoftwareSerial' was not declared in this scope. Und weitere Kommandos die sich auf softSerial beziehen sind dann auch nicht vorhanden.

Wie kann man so etwas machen? Huh

Die Deklaration muss so

Code:
#define debug 1

#ifdef debug
#include <SoftwareSerial.h>
#endif

aussehen.

Und bitte zukünftig Code in Code-Tags (Schaltfläche #) posten.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.04.2016, 13:04
Beitrag #3
RE: include abhängig von konstante "debug"
Danke! Funktioniert!

code-tag wird künftig verwendet.
LG, tiny85fan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.04.2016, 13:08
Beitrag #4
RE: include abhängig von konstante "debug"
(29.04.2016 13:04)tiny85fan schrieb:  Danke! Funktioniert!

code-tag wird künftig verwendet.
LG, tiny85fan

Alles klar, danke für die Rückmeldung.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.04.2016, 13:48
Beitrag #5
RE: include abhängig von konstante "debug"
[quote='hotsystems' pid='29360' dateline='1461930256']

Die Deklaration muss so

Code:
#define debug 1

#ifdef debug
#include <SoftwareSerial.h>
#endif

wenn Du mit #ifdef abfragst ist der Inhalt egal, die 1 kann also auch noch weggelassen werden.

#define debug
abschalten, indem Du das #define auskommentierst:
//#define debug

Wenn Du mit 0 oder 1 aus- und einschalten willst, muß Du mit
#if debug == 1

auf den Inhalt von debug prüfen.

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.04.2016, 14:09
Beitrag #6
RE: include abhängig von konstante "debug"
@ amithlon :
Aha. Das gefällt mir besser! Jetzt empfinde ich den Code als lesbarer. Die #ifdef Direktive (hotsystems Vorschlag) ist knackiger aber für Anfänger vielleicht nicht so schnell durchschaubar. Und jetzt kann ich im setup()/loop() ganz konservativ auch schreiben:
Code:
if(debug == 1){ irgendeine Befehlskette; }

LG, tiny85fan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.04.2016, 14:17
Beitrag #7
RE: include abhängig von konstante "debug"
(29.04.2016 13:48)amithlon schrieb:  wenn Du mit #ifdef abfragst ist der Inhalt egal, die 1 kann also auch noch weggelassen werden.

#define debug
abschalten, indem Du das #define auskommentierst:
//#define debug

Wenn Du mit 0 oder 1 aus- und einschalten willst, muß Du mit
#if debug == 1

auf den Inhalt von debug prüfen.

Ja, OK...
Obiges Beispiel funktioniert jedoch auch prima.

Ist das grundsätzlich falsch, wenn es doch funktioniert?

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.04.2016, 15:19 (Dieser Beitrag wurde zuletzt bearbeitet: 29.04.2016 15:19 von amithlon.)
Beitrag #8
RE: include abhängig von konstante "debug"
Hallo,

(29.04.2016 14:17)hotsystems schrieb:  Ja, OK...
Obiges Beispiel funktioniert jedoch auch prima.

Ist das grundsätzlich falsch, wenn es doch funktioniert?

nö, ist nicht falsch, könnte nur die Vermutung aufkommen lassen, daß
#define debug 0
die Geschichte abschaltet, das würde es aber nicht und somit vielleicht irritieren.

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Probleme mit #include wetskindiver 2 799 03.04.2015 12:37
Letzter Beitrag: wetskindiver
  Anweisung "break" funktioniert nur mit direkter Abfrage der Konstante analogMensch 2 759 04.12.2014 11:53
Letzter Beitrag: Thorsten Pferdekämper
  #include <SoftwareSerial.h> tristan74656 5 2.250 07.04.2014 13:23
Letzter Beitrag: Bitklopfer

Gehe zu:


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