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
Programm lesbarer machen
18.10.2014, 20:34
Beitrag #1
Programm lesbarer machen
Ich will ein relativ grosses Programm lesbarer machen - das ständige scrollen nervt.
Sowohl die Daten als auch die Programmabschitte sind logisch eindeutig teilbar.
Als "Alter" COBOL und Assembleranwender denke ich vermutlich zu kompliziert.
Mit #include kann ich ja den Code entsprechend aufteilen. Aber der Compiler mag mich nicht. Ich bekomme immer Fehlermeldungen wie

lichtbereiche.cpp.oSad.bss.Licht4sensorValue+0x0): multiple definition of `Licht4sensorValue'
hellstenLichtpunktSuchen_141016.cpp.oSad.bss.Licht4sensorValue+0x0): first defined here

lichtbereiche sind meine Datenfelder die ich auslagern will.

C ist fast noch ein Fremdwort für mich. Mein Programmcode ist natürlich "Cobol/Assembler" in C. Ich kanns halt nicht besser

Danke für jegliche Hilfe

Eberhard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2014, 08:29
Beitrag #2
RE: Programm lesbarer machen
(18.10.2014 22:30)kurti schrieb:  Hallo,
wie wäre es mit einer Aufteilung auf Tabs.
( Oben rechts unter dem Serialmonitor auf das Dreieck klicken und Tab einfügen wählen )
Man kann dann Teile des Codes in die neuen Tabs auslagern.
Wenn man die Tabs sinnvoll beschriftet, findet man den Code schnell wieder.
Gespeichert werden die Tabs als eigene Dateien im gleichen Verzeichnis wie der Sketch.

Gruss
Kurti

Danke Kurti,

habe ich bereits gemacht, -ino wird nicht erkannt, umbenannt in -pps, -h angelegt
- nur was muss da rein. Und jetzt kommen diese Fehlermeldungen. Ich will die pps ja nur wie ein copy-statement in Cobol verwenden. Vielleicht noch eine Ahnung?

Danke Eberhard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2014, 09:01
Beitrag #3
RE: Programm lesbarer machen
schreib doch mal 1, 2 beispielhafte Funktionen hier rein, die du auslagern willst, dann kann man ja mal sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2014, 15:57 (Dieser Beitrag wurde zuletzt bearbeitet: 19.10.2014 15:59 von tito-t.)
Beitrag #4
RE: Programm lesbarer machen
Warum geht es nicht auch ohne tabs, so wie in normalen C Programmen auch, dass man einfach z.B. die Funktionen aus dem Hauptprogramm

Code:
// main file test.ino
void foo() { //...
}

void bas() { //...
}

void testfunc() {   // uses / refers to foo() and bas()
  foo();
  bas();
}

ausschneidet und in eine .h header lib Datei
foobas.h
rüberkopiert mit dem Inhalt

Code:
// header lib file foobas.h
void foo() { //...
}

void bas() { //...
}

und dann im geänderten Hauptfile (test.ino) einfach nur #included

Code:
// main file test.ino
#include "foobas.h"  // im selben directory

void testfunc() {   // uses / refers to foo() and bas() in header lib
  foo();
  bas();
}

:?:
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2014, 19:28
Beitrag #5
RE: Programm lesbarer machen
@kurti, @tito-t Vielen Dank.
@tito-t Deinen Vorschlag werde ich gerne annehmen, aber erst dann wenn ich in C laufen kann, im Moment kann ich ja nicht einmal krabbeln.

Ich interpretiere #include als preprocessor.

Es sieht so aus, als ob man globale Variable nicht per #include in einen sketch übernehmen (einkopieren) kann.
Ist diese Annahme richtig? oder gibt es eine Lösung für ein preprocessing?

Eberhard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2014, 20:00
Beitrag #6
RE: Programm lesbarer machen
(19.10.2014 19:28)basst_scho schrieb:  ...
Es sieht so aus, als ob man globale Variable nicht per #include in einen sketch übernehmen (einkopieren) kann.
...

Die Arduino IDE verhält sich schon etwas "eigenartig" wenn man andere Compiler-Software gewohnt ist.

Ich bin dazu übergegangen im linken Tab der IDE-Fensters alle globalen Variablen, alle #include <xxx> und loop(); unterzubringen. (hier muss man mit den Tabnamen spielen damit der Haupttab links bleibt)
Subroutinen können dann auf weitere Tab's aufgeteilt werden.
Ich lege auch für alle Subroutinen die in anderen Tabs stehen im Haupttab Funktionsprototypen an. Ich weiß nicht ob das zwingend notwendig ist, aber es erleichtert den Aufruf von Subroutinen weil man schnell mal die Parameter nachschauen kann.

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2014, 20:39
Beitrag #7
RE: Programm lesbarer machen
@ardu-arne IDE merkwürdig, ich unterschreibs.

Mein eigentlicher Fehler war:

Tabs dürfen nicht per #include aufgerufen werden!!!

bei allen mir bekannten preprocessoren muss man dies.

Wieder was gelernt.

@kurti jetzt funktionierts
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2014, 20:50
Beitrag #8
RE: Programm lesbarer machen
an aller Kenner / Könner:

klappt das mit dem #include denn jetzt hier überhaupt nicht ? Ich bin völlig perplex, mit gpp C/C++ klappt das #include ohne jedes Problem ... Confused

Ich habe es auch nicht hingekriegt, wenn ich .h files (foobas.h) in einen gleichnamigen Ordner (foobas) ins libraries Verzeichnis kopiere -
mit Standard libs geht es aber doch, was machen die anders?? Huh
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Fehler in meinem Programm Franz54 7 165 01.12.2016 23:58
Letzter Beitrag: hotsystems
  Selbstfahrender Roboter Programm änderung hilfe ? arekklone 11 551 06.07.2016 14:59
Letzter Beitrag: Binatone
  Werte an anderes Programm weiterleiten Typ 2 440 12.03.2016 23:28
Letzter Beitrag: Typ
  PWM schneller machen...? Maxi290997 6 497 01.02.2016 06:50
Letzter Beitrag: Binatone
  Programm Code Erweitern hugolost 8 664 01.01.2016 20:02
Letzter Beitrag: Bitklopfer
  Eingänge im Programm integrieren Phil94 21 1.851 06.12.2015 10:52
Letzter Beitrag: hotsystems
  Webserver abfragen mit einem Programm arduinofan 2 738 28.11.2015 15:54
Letzter Beitrag: arduinofan
  aus Arduino IDE Programm beim Upload starten PingPong 3 627 13.11.2015 15:38
Letzter Beitrag: PingPong
Brick Programm für Touchfeld als vereinfachtes Model mit Widerständen aufgebaut Jeff 1 421 08.11.2015 16:52
Letzter Beitrag: Jeff
  Graph-Programm arduinofan 3 544 31.10.2015 13:45
Letzter Beitrag: hotsystems

Gehe zu:


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