Hey, ich benötige unbeding Hilfe bei einem laufenden Projekt. Zum Projekt: Ich entwickle einen Prüfcomputer welcher Kabel, auf richtiger Verbindung, prüfen soll. Mann kann über ein Tochdisplay ein Kabel auswählen und daraufhinn startet der µC seine Prüfung (welche auf das Kabel zugeschnitten ist). Mein Problem: Ich habe in Visualstudio 7 ein Programm geschrieben wo ich meine Probleme über Vektoren löse und die Ausgabe der Ergebniss über Streams löse. Jetzt wollte ich in Atmel Studio alles einbinden und auf den µC ummünzen jedoch kann ich hier keine vektoren anlegen. Und jetzt habe ich gelesen das C++ wohl nicht empfehlenswert für µC sei???? Ich würde mich sehr freuen wenn mir jemand Helfen kann. Mit freundlichen Grüßen Dennis
Dennis T. schrieb: > auf den µC ummünzen jedoch kann ich hier keine vektoren anlegen. Warum nicht? Welche Fehlermeldung bekommst du mit welchem Code?
Das ist ein Problem der eingebundenen Bibliothek, nicht der Sprache. Die Behauptung, C++ sei nicht empfehlenswert ist somit falsch. Nicht empfehlenswert für ein Target mit so wenig Flash ist - das einbinden von iostream - die Nutzung von Vektoren, die ihren Element Typ am Heap anlegen Mich wundert ehrlich gesagt, dass das compilierte Binary mit iostream überhaupt in den Mega reinpasst?
Dennis T. schrieb: > Mein Problem: > Ich habe in Visualstudio 7 ein Programm geschrieben wo ich meine > Probleme über Vektoren löse und die Ausgabe der Ergebniss über Streams > löse. Jetzt wollte ich in Atmel Studio alles einbinden und auf den µC > ummünzen jedoch kann ich hier keine vektoren anlegen. Und jetzt habe ich > gelesen das C++ wohl nicht empfehlenswert für µC sei???? Du hast für die Plattform avr keine Standard-C++-Bibliothek zur Verfügung! Je nach Anforderung ist das aber schnell selbst gemacht ... Zum Thema C++/C eine persönliche Meinung: C++ ist m.E. grundsätzlich besser geeignet, ob µC oder nicht spielt keine Rolle - denn es ist eine multi-Paradigmen-Sprache: man sucht sich das Passende aus ;-)
Dennis T. schrieb: > geschrieben wo ich meine Erstmal deutsch schreiben lernen. Dennis T. schrieb: > Jetzt wollte ich in Atmel Studio alles einbinden und auf den µC > ummünzen jedoch kann ich hier keine vektoren anlegen. Und jetzt habe ich > gelesen das C++ wohl nicht empfehlenswert für µC sei???? Stimmt nicht. Bei Vektoren musst du halt aufpassen was du machst, nicht das du auf einmal aufm Heap zu viel Speicher allokierst.
Dennis T. schrieb: > Und jetzt habe ich gelesen das C++ wohl nicht empfehlenswert für µC > sei???? Was man nicht alles liest... Aber der Witz ist eher: dein schnuckeliger µC hat gerade mal 8kByte Arbeitsspeicher, wogegen dein PC gut zweihunderttausendmal mehr davon hat (und den dann bei Bedarf auch noch virtuell erweitern könnte). Du erkennst das Problem?
:
Bearbeitet durch Moderator
Vielen Dank für die schnellen Antworten. Ich merke gerade das bei mir wohl noch sehr viel Wissen fehlt. Leider habe ich nur einen Crashkurs in C/C++ bekommen und µC habe ich mir selber ein wenig beigebracht.
Kommt jemand aus dem Norddeutschen Raum und könnte mir eventuell hier eine Hilfestellung sein??? Da ich nicht so richtig weis wie ich jetzt am besten weiter arbeiten kann. Ich würde gerne den Prüfcomputer (Hardware) vorstellen, mit erstellten Platinen (Überspannungschutz Optokoppler, Spannungsversorgung...). und meinen Gedachtenverlauf zur Fertigstellung des Prüfcomputers.
Dennis T. schrieb: > Ich würde gerne den Prüfcomputer (Hardware) vorstellen, mit erstellten > Platinen (Überspannungschutz Optokoppler, Spannungsversorgung...). und > meinen Gedachtenverlauf zur Fertigstellung des Prüfcomputers. Kannst Du das nicht einfach auf einen Raspi portieren?
Dennis T. schrieb: > Kommt jemand aus dem Norddeutschen Raum und könnte mir eventuell hier > eine Hilfestellung sein??? Da ich nicht so richtig weis wie ich jetzt am > besten weiter arbeiten kann. du kannst auch gerne dein C++ Programm einfach anhängen. Wenn das nicht geht, dann lass doch den Vektor und stream mal weg und stell uns konkrete frage wie man es ohne umsetzen kann. Was sollte dann der µC überhaupt machen?
Dennis T. schrieb: > Und jetzt habe ich > gelesen das C++ wohl nicht empfehlenswert für µC sei???? Da sind die Meinungen gespalten; um die Diskussion darüber jetzt hier nicht ausarten zu lassen, daher nur die Fakten. 1) wenn man C++ auf µC verwenden will, dann muß man sich überlegen, welche Untermenge von C++ dafür geht. Es gibt etliche Leute, die eigentlich nur "C+" wirklich verwenden, also C mit Klassen. 2) C++ hat den Grundsatz, daß Du nicht bezahlst, was Du nicht benutzt. Allerdings bezahlst Du sehr wohl das, was Du benutzt. 3) manche der Features von C++, die über C hinausgehen, kosten auf dem Target gar nichts, weil das alles zur Compilezeit aufgelöst wird. Diese Features sind das Hauptargument, wieso Leute C++ auf µC verwenden, ohne daß sie Ressourcenprobleme kriegen. 4) das gilt aber nicht für alle Features, besonders nicht, wenn man auch STL und Boost verwendet. Je nachdem, was man da verwendet, kann das mit wenigen Zeilen einen Riesenbatzen nach sich ziehen - genau diese Abstraktion ist schließlich der Sinn dahinter. 5) Schlußfolgerung: um mit C++ auf µC zu programieren, reicht es nicht aus, wenn man weiß, wie man was benutzt. Man muß zusätzlich auch wissen, was im Hintergrund dann abläuft. Die Abstraktion, die C++ bietet, dient zwar der Bequemlichkeit im Programmieren, aber nicht der Bequemlichkeit im Erlernen. Blackbox-Programmierung funktioniert mit C++ nicht auf µC.
Auch für den Raspberry fehlen mir leider die Grundlagen. Ich versuche mal das Problem zu schildern: Meine Absicht ist es verschiedene Bauteile auf Funktion zu prüfen. Die Bauteile sind in Handarbeit verdrahtet worden und haben leider des öfteren Fehler in der Verdrahtung, welche ich feststellen muss. Ich habe einen Arduino Mega 2560 und ein Nextion Display zur Verfügung gestellt bekommen womit ich das Problem meiner Techniker Abschlussarbeit lösen soll. Denn C-Code habe ich angehängt. Mit der von mir ausgelagerten Define Header. Vielen Dank für Eure Mühe Dennis
Dennis T. schrieb: > Vielen Dank für Eure Mühe warum schreibt du C++ code in TXT Dateien? Hängt doch bitte die echte Endung an, dann kann man den code auch schön sehen.
ich finde gar nichts mit Vektor?`
1 | void loesch( int kreuztest_array [],int verbidung_array [],int ergebnis_messung_array[]) // Löscht alle Arrays |
2 | {
|
3 | verbidung_array [29]; |
4 | ergebnis_messung_array[28]; |
5 | }
|
das macht nichts sinnvolles
Dennis T. schrieb: > Hier die richtige Datei hoffe ich nein, der Inhalt war richtig nur der Dateiname ist falsch.
Die habe ich wieder rausgenommen. Ich stelle mein aktuelles Projekt gleich online.
Hier ist der Code welcher ohne vektoren erstellt ist. Jetzt wollte ich die Arrays eigentlich gegen Vektoren austauschen damit sie wie in der Funktion loesch(); nicht neu auf null Initialisiert werden muss, sondern das ich sie einfach löschen kann. Und in der Laufzeit möchte ich gerne die Array's in der Größe anpassen.
Dennis T. schrieb: > Jetzt wollte ich die Arrays eigentlich gegen Vektoren austauschen damit > sie wie in der Funktion loesch(); nicht neu auf null Initialisiert > werden muss, sondern das ich sie einfach löschen kann. das macht überhaupt keinen sinn. lösche sie mit memset und gut ist. > Und in der > Laufzeit möchte ich gerne die Array's in der Größe anpassen. nein, was willst du nicht wirklich auf einem µC machen. Welchen Grund gibt es dafür das du die größe anpassen willst? Auch sollte du deine Stringverarbeitung überdenken, die ist viel zu fehleranfällig. Srings ende bei C auf 0 und nicht auf \n.
Erster Eindruck (sorry): Kraut und Rüben Bitte vernünftige und einheitliche Bezeichner, also z.B. "loesch" loescheArrays "Ausgang_high/low" setzeAusgang(X,HIGH/LOW) vielleicht englische Bezeichner? setPort(...) Ist ueblicher und meist kürzer. Warum gibt es kein getPort(...) statt dieser endlosen if verzweigungen. Warum kein case? Sinnvolle Kommentare beschreiben warum etwas gemacht wird aber nicht nochmal mit Worten was der Quelltext tut: while ((zeichen!='#')||(i==25)); // Zeichen ungleich # oder i =25 Magic numbers überall, was ist hier z.B. 25. Sieht man das auf den ersten Blick ...
Ja ich habe schon verstanden das ich da sehr viele Probleme habe. Nur finde ich keinen guten Leitfaden wo ich mich entlangarbeiten kann. Ich hatte gedacht wenn ich einen Manuellen Test eingeben wollte also zum Beispiel 5 Adern überprüfen möchte das ich das Array auf die Anzahl der Adern einstellen kann.
Dennis T. schrieb: > Ich hatte gedacht wenn ich einen Manuellen Test eingeben wollte also zum > Beispiel 5 Adern überprüfen möchte das ich das Array auf die Anzahl der > Adern einstellen kann. warum? Wenn es maximal 10 Adern gibt, dann legt man das Array mit 10 Elementen an, wenn davon nur 5 für einen Test genutzt werden ist doch auch alles gut.
get port(); set port(); sind mir keine Begriffe gewesen, als ich angefangen habe. Naja und jetzt kommen immer andere Ideen doch leider komme ich so nicht weiter bzw zum Abschluss. Weshalb ich Hilfe suche die mich auf einen richtigen Weg leiten kann. Muss ja auch nicht alles gratis passieren.
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.