Header Datei im Programm öffnen

Hallo Zusammen,

ich bin Einsteiger nicht mehr der jüngste und habe ein kleines Problem. Ich habe eine CPP Datei und die dazugehörende Bibliotheksdatei erstellt und beide Funktionieren ohne Mangel. Im Arduino Programm sollen die .h und die Datei.cpp in eigen Tab`s Dargestellt werden. Ich habe bis jetzt noch nicht herausgefunden was da einzustellen bzw. wie man Vorgehen muss. Für eine Hilfe bin Ich Dankbar Gruss Neues kleines Problem. Suche einen Befehl der es Erlaubt direkt an beliebiger Stelle im Sketch das Programm zu Beenden. Nicht über eine Bedingung Gibt es so was für den UNO REV 3?

Die IDE baut alle Tabs zu einem Projekt zusammen und erwartet die Dateien im gleichen Verzeichnis. Mit Library Dateien ist das weder möglich noch sinnvoll. Wenn du Libraries editieren willst würde ich dir Notepad++ empfehlen.

hi,

ich weiß, daß das mit alten versionen nicht ging, aber ich hab’s jetzt mit der 1.6.4 probiert.
wenn ich da eine .ino öffe, gehen in den tabs auch .h und .cpp-dateien, die sich im gleichen verzeichnis befinden auf.

Zwischenablage01.gif

zu beachten natürlich, daß man die library dann anders einbinden muß, wenn sie im sketch-ordner liegt.

gruß stefan

Hallo, erst einmal Danke für den Hilfeversuch.

Ich Erlaube mir auf folgendes Hinzuweisen :Es ist Möglich die Library Dateien Datei.h und Datei.cpp in eigenen Tabs zu Öffnen. Habs dann doch noch rausgefunden. Man muss im Menü Sketch nur "Datei hinzufügen.." wählen und dann die gewünschte Datei hochladen.

Das erzeugt eine lokale Kopie, willst du das wirklich?

Hallo Whandall,

habe bei mir keine Lokale Kopie entdecken können. Gruss

Dann mach mal Ctrl-K bzw. Sketch / Sketch-Ordner anzeigen.

Da stehen die Kopien.

Und ich habe es jetzt selbst getested. (1.6.5/Nano/Win7)

Ich habe in einem leeren Sketch #include <Bounce2.h>eingefügt, die Library Dateien wie von dir vorgeschlagen (h und cpp) mit “Datei hinzufügen” ‘angesehen’.
Das gefällt dem Compiler überhaupt nicht.

C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp\Bounce2\Bounce2.cpp.o: In function `Bounce::Bounce()':
D:\Work\Arduino\libraries\Bounce2/Bounce2.cpp:15: multiple definition of `Bounce::Bounce()'
C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp\Bounce2.cpp.o:C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp/Bounce2.cpp:15: first defined here
C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp\Bounce2\Bounce2.cpp.o: In function `Bounce::Bounce()':
D:\Work\Arduino\libraries\Bounce2/Bounce2.cpp:15: multiple definition of `Bounce::Bounce()'
C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp\Bounce2.cpp.o:C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp/Bounce2.cpp:15: first defined here
C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp\Bounce2\Bounce2.cpp.o: In function `Bounce::Bounce()':
D:\Work\Arduino\libraries\Bounce2/Bounce2.cpp:15: multiple definition of `Bounce::attach(int)'
C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp\Bounce2.cpp.o:C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp/Bounce2.cpp:15: first defined here
C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp\Bounce2\Bounce2.cpp.o: In function `Bounce::Bounce()':
D:\Work\Arduino\libraries\Bounce2/Bounce2.cpp:15: multiple definition of `Bounce::attach(int, int)'
C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp\Bounce2.cpp.o:C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp/Bounce2.cpp:15: first defined here
C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp\Bounce2\Bounce2.cpp.o: In function `Bounce::Bounce()':
D:\Work\Arduino\libraries\Bounce2/Bounce2.cpp:15: multiple definition of `Bounce::interval(unsigned int)'
C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp\Bounce2.cpp.o:C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp/Bounce2.cpp:15: first defined here
C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp\Bounce2\Bounce2.cpp.o: In function `Bounce::Bounce()':
D:\Work\Arduino\libraries\Bounce2/Bounce2.cpp:15: multiple definition of `Bounce::update()'
C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp\Bounce2.cpp.o:C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp/Bounce2.cpp:15: first defined here
C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp\Bounce2\Bounce2.cpp.o: In function `Bounce::Bounce()':
D:\Work\Arduino\libraries\Bounce2/Bounce2.cpp:15: multiple definition of `Bounce::read()'
C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp\Bounce2.cpp.o:C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp/Bounce2.cpp:15: first defined here
C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp\Bounce2\Bounce2.cpp.o: In function `Bounce::Bounce()':
D:\Work\Arduino\libraries\Bounce2/Bounce2.cpp:15: multiple definition of `Bounce::rose()'
C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp\Bounce2.cpp.o:C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp/Bounce2.cpp:15: first defined here
C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp\Bounce2\Bounce2.cpp.o: In function `Bounce::Bounce()':
D:\Work\Arduino\libraries\Bounce2/Bounce2.cpp:15: multiple definition of `Bounce::fell()'
C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp\Bounce2.cpp.o:C:\Users\Sven\AppData\Local\Temp\build4494975296306760089.tmp/Bounce2.cpp:15: first defined here
collect2.exe: error: ld returned 1 exit status
Fehler beim Kompilieren.

Ebenso verhält sich#include "Bounce2.h"

Wenn man nur die .h Datei so ‘betrachtet’ kommt man damit durch, bei Bounce2.

Jetzt ergibt sich eine Anhängigkeit von der Schreibweise

#include "Bounce2.h" // verwendet die lokale Kopie
#include <Bounce2.h> // verwendet das Original

Ich halte die Tab/Library Datei Methode für wenig sinnvoll.

hi,

daß man in der cpp und der h-datei dann die pfade auch auf lokal ändern muß, habe ich oben schon erwähnt.

ob man es als sinnvoll erachtet, hängt von der betrachtungsweise ab. entweder ist eine library für einen etwas "unveränderliches", das man halt benutzt und nicht antastet, oder es ist eine "veränderliche", die ich an meine bedürfnisse anpasse.

falls zweiteres, will ich das original nicht antasten, sondern eine kopie verändern. dann kann ich entweder eine kopie im libraries-ordner erstellen (und muß dann genausoviel anpassen wie bei einer "lokalen" kopie), oder ich stell' es in den sketch-ordner und fuhrwerke gleich dort, wo ich es brauche.

ansichtssache.

nach dem kopieren in den lokalen ordner empfiehlt es sich, den original-ordner im libraries-ordner wegzukopieren, bis es keine compiler-fehler mehr gibt. dann kann man sicher sein, nur noch lokal zu arbeiten.

gruß stefan

Piloni: Im Arduino Programm sollen die .h und die Datei.cpp in eigen Tab`s Dargestellt werden.

Ich bezog das auf Library-Dateien, die nicht geändert werden sollen.

Zum Betrachten Kopien von etwas zu erzeugen, das gerade zur Vermeidung solcher Kopien in einer Library gelandet ist, erscheint mir widersinnig.

hi,

warum? selbst wenn es nur zum "betrachten" ist (oder auch gerade dann), isses ja noch einfacher.

dann braucht dann nichts anzupassen, kann aber schauen, was die library eigentlich macht. mich interessiert das schon oft.

gruß stefan

Wenn der Sketch - wie empfohlen - #include <DateiName.h> verwendet, sieht man nicht einmal das was wirklich benutzt wird.

Jeder wie er mag.

Bei lokalen Sachen wäre auch #include “DateiName.h” sinnvoller ( statt der )
Und danach die IDE zu machen, und Ordner TEMP\buildxxx.tmp löschen. Irgendwie muss er ja vergessen, was an .cpp Library-Dateien mal zu deinem Projekt gehört hat. ( Einer der großen Zaubertricks der IDE :wink: )


Externe Sachen (Libraries) in der IDE in Tabs anzuzeigen ist mir nicht gelungen. Das ist dann eher was für VisualStudio mit VisualMicro plugin. ( Wo man auch viel leichter sehen kann, wo was herkommt. )

michael_x: Externe Sachen (Libraries) in der IDE in Tabs anzuzeigen ist mir nicht gelungen.

Weil du den Thread nicht gelesen hast?

Piloni: Man muss im Menü Sketch nur "Datei hinzufügen.." wählen und dann die gewünschte Datei hochladen.

Diese Technik habe ich kommentiert.

whandall: Ich halte die Tab/Library Datei Methode für wenig sinnvoll.

Ich stimme dir zu, gerade wegen der dadurch erzeugten lokalen Kopie. Die Anzeige einer externen Library in der IDE ist also definitiv (zur Zeit) nicht möglich. Ob es sinnvoller ist, eine Datei, mit der man in der IDE arbeitet, als lokale Kopie zu verwenden, ist eine andere Frage.

Weil du den Thread nicht gelesen hast?

OK, hätte mir meinen Senf sparen können, da du das auch so ähnlich geschrieben hattest. (Wenn ich alles aufmerksam in der richtigen Reihnfolge nachvollziehe)

Mir hat die IDE zu wenig Funktionen um sinnvoll größere Mengen Kode zu bearbeiten.

Notepad++ macht da einen besseren Job. Aber ist halt alles Geschmackssache.

Whandall hat Recht es wird eine Lokale Kopie angelegt. Ist aber nicht Schlimm , Verwende und Bearbeite bis ein Projekt fertig ist die Kopie. Wenn Fertig wird die Änderung der h und CPP in die Orginale Übernommen. Nochmals Danke für die Vielen Anmerkungen. Gruss

Unabhängig von Arduino, Librariey etc, teste mal Notepad++. ;)

Hmm, lokale Kopien sind eigentlich ganz gut, wenn man (wie so oft) die Bibliotheken mit #defines anpassen muß. Nur von Bibliotheks-Updates kriegt die Kopie dann nichts mehr mit.

hi,

klar, in der original-bibliothek herumfuhrwerken will man meist eher nicht.

Nur von Bibliotheks-Updates kriegt die Kopie dann nichts mehr mit.

muß nicht schlecht sein. wenn das programm mal fertig ist und ich nichts erweitern will, brauch' ich auch keine updates mit neuen, oder, weit schlimmer, geänderten funktionen.

gruß stefan