Einstieg in die Programmierung und Steuerung von Hardware.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Einstieg in die Programmierung und Steuerung von Hardware.

    Hallo Leute,

    für eine umfangreiche Projektarbeit im Rahmen meiner weiteren Ausbildung muss ich eine Mess-, Steuer- und Regelsoftware entwickeln.
    Es bleibt jedoch nicht nur bei der Software sondern es wird natürlich auch geprüft, ob es praktisch funktioniert. D.h. es wird einen Versuchsaufbau geben, der abgefragt und angesteuert werden muss bzw. auch auf Störungen von außen und auf Abweichungen reagieren muss. Leider erfahre ich erst in den nächsten Wochen, was detailliert gefordert wird. Zeitrahmen: 2 Jahre.

    Realisieren möchte ich das Ganze gerne mit einem Mac oder gar einem iPad. Bzgl. der benutzten Oberfläche, Mac oder PC, gibt es nämlich keine Vorgabe.

    Einzige Vorgabe ist hierbei, dass die entsprechenden Sensoren und Aktoren sowie deren Verbindung auf einer grafischen Oberfläche dargestellt sein müssen. Weiterhin soll man sehen können, in welchem Zustand sie sich befinden (also ein, aus, gestört usw.). D.h. z.B. ein Behälterfüllstand soll anhand einer Skala auf dem Bildschirm ersichtlich sein, eine laufende Pumpe soll grün (o.ä.) dargestellt werden, ein Ventil soll auf/zu anzeigen bzw. Öffnung in %. Wie gesagt, nur Beispiele... Hier muss ich also frei in der Gestaltung der optischen Oberfläche sein, da vermutlich vorgegebene Norm-Symbole zu verwenden sind.

    Nun zu meinen Fragen:

    Da ich bisher nicht viel mit Programmierung am Hut hatte suche ich nun a) die optimale Programmiersprache (wird ja wohl auf Objective-C rauslaufen...) und b) den richtigen Einstieg.
    Ich meine, soll ich mich vorher mit C oder C++ beschäftigen um dann in Objective-C einzusteigen oder ist das Quatsch? Brauche ich Objective-C womöglich gar nicht?

    Weiterhin stellt sich mir noch die Frage nach der Verbindung Rechnersteuerung (Software) und Hardware (anzusteuernde Sensoren und Aktoren). Gibt es hier entsprechende Adaptierungen um o.g. Hardwaresteuerungen/-abfragen durchzuführen?

    Um ehrlich zu sein, verzweifele ich gerade ein wenig an der gestellten Aufgabe. Ich habe die Befürchtung, dass es sehr knapp ist, das alles zu lernen und umzusetzen.
    Ich bin Euch sehr dankbar für jeden Tipp.

    Viele Grüße
    Tina
  • Für Deine Zwecke scheidet das iPad aus, weil Du ohne Teilnahme am kostenpflichtigen und mit weiteren Einstiegshürden versehenen MFi-Programm (Made For iPhone/iPod/etc.) nicht an den Dock-Connector kommst.

    Hier wird Dir sicher kaum jemand (vielleicht zerm ;) ) die Verwendung eines PC empfehlen. Grundsätzlich brauchst Du auf dem Mac nicht zwingend mit Objective-C arbeiten, Du kannst auch, vor allem wenn Du keine (überbordende) GUI benötigst, mit C++ und CoreFoundation-/et-al-Frameworks ordentliche Ergebnisse erzielen, die z.B. als Kommandozeilen-Applikation laufen. Aber Spaß macht das natürlich wenig. Und die meisten aktuellen Bücher zur Mac-Entwicklung stellen in großen Teilen auf Objective-C ab.

    Allerdings ist das alles eine ziemliche Aufgabe, vor der Du stehst: Keine Programmiererfahrung, dann auch gleich Ansteuerung von Hardware-Komponenten, das ist heftig. Schwierig, Dir da etwas zu raten. Vermutlich solltest Du Dich mal mit einem "Profi" zusammensetzen und im Gespräch mal versuchen, eine Strategie für die zu entwickeln.
  • Das klingt echt nach einem Haufen Arbeit und noch vielen Unbekannten.
    Für einen Anfänger halt ich das schon für ein sehr ambitioniertes Projekt.

    Bei Hardware-naher Programmierung wirst Du früher oder später kaum um C herum kommen.
    Dafür kannst Du das iPad erstmal in der Schublade lassen, denn dass macht es erstmal nicht einfacher.

    Finde erstmal heraus, welche Modelle/Serien von welchem Hersteller Du ansprechen sollst.
    Welche Protokolle diese beherrschen. Und welche Anschlussarten dafür angeboten werden.
    Dann kannst Du anfangen zu planen, was Du noch brauchst und wie es weiter geht.
    * Kann Spuren von Erdnüssen enthalten.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von NSObject ()

  • Hi,

    auch wenn ich es ungern tue, so würde ich in Deinem Fall wohl doch eher zum PC mit dem guten alten VisualBasic raten. Das ist noch am schnellsten zu erlernen und es gibt genug Schnittstellen um an die Hardware zu kommen. Beim Mac wird alleine das Lernen von Objekctive-C eine wesentlich größere Hürde und dann noch in der Treiberarmen Linuxwelt herum zu krabsen, ist wirklich harter Tobak.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Hi zusammen,

    schon mal vielen Dank für die Antworten. Auch wenn ich dadurch noch nicht so richtig ermutigt werde weiter zu machen. ;)

    Ok, also iPad streiche ich raus, weil ich mich sonst in die Entwicklersphären von Apple begeben muss. Ein Programm für den iMac zu schreiben ist aber ohne die Anbindung an das MFi-Programm möglich?

    Thallius schrieb:

    auch wenn ich es ungern tue, so würde ich in Deinem Fall wohl doch eher zum PC mit dem guten alten VisualBasic raten. Das ist noch am schnellsten zu erlernen und es gibt genug Schnittstellen um an die Hardware zu kommen. Beim Mac wird alleine das Lernen von Objekctive-C eine wesentlich größere Hürde und dann noch in der Treiberarmen Linuxwelt herum zu krabsen, ist wirklich harter Tobak.
    Ich bin in der Verlegenheit, ein Programmiersprache lernen zu müssen. Aus der Nummer komme ich nicht raus. Ist Objective-C denn eher nicht geeignet oder worauf bezog sich der Hinweis auf die treiberarme Linuxwelt?
    Da ich über einen iMac und ein MacBook Pro verfüge, würde ich auch damit gerne arbeiten. Einen PC und entsprechende Software müsste ich mir erst zulegen.

    Von unserem Institut bekomme ich leider nichts derartiges gestellt, da ich mir das Thema, mehr oder weniger, selber ausgesucht habe. Dort bekomme ich nur die technischen Komponenten, die man halt so dort hat. Und das liefe auf pure Mechanik und simple Steuerungstechnik raus. Grundlagentechnik eben. Allerdings weiß ich auch, dass ich eine gute Bewertung bekommen möchte. Und das geht nur, wenn man weiter denkt und handelt. Darum muss mein Ergebnis eben einen Wow-Effekt aufweisen.

    Damit es nicht zu irgendwelchen Missverständnissen kommt: Ich erwarte keine Komplettlösung. :) Ich möchte mir hier aber gerne Grundlagenwissen aneignen, damit ich nicht nach sechs Monaten feststelle, dass die Richtung völlig Quatsch war. Dass ich mir vieles auch selber erarbeiten muss, ist mir klar. Von daher danke ich Euch für jeden Hinweis.

    Liebe Grüße
    Tina
  • fwtag schrieb:

    Hier wird Dir sicher kaum jemand (vielleicht zerm ;) ) die Verwendung eines PC empfehlen.

    Korrekt :D

    Spass beiseite: Ich würde soetwas wirklich mit dem PC machen. Treiber und Support sind dafür in den meisten Fällen einfach leichter zu bekommen und zu benutzen. Natürlich kann man da dann nicht so einfach ganz schicke Animationen mit Reflektionen und schnick schnack machen. Dafür ist man mit der Kernfunktionalität schneller fertig. Neulich ein Gerät bekommen. Beispielcode für Windows gabs natürlich direkt auf der Webseite. In 10 Minuten hatte ich alles angepasst und ins Hauptprogramm eingebettet.
    C++
  • Sarah-Tina schrieb:

    Ok, also iPad streiche ich raus, weil ich mich sonst in die Entwicklersphären von Apple begeben muss.

    Nein. Das Problem ist die Anbindung deiner Komponenten ans iPad.

    Sarah-Tina schrieb:

    Ein Programm für den iMac zu schreiben ist aber ohne die Anbindung an das MFi-Programm möglich?

    Ja. Dafür musst man nicht im MFi sein.

    Sarah-Tina schrieb:

    Von unserem Institut bekomme ich leider nichts derartiges gestellt, da ich mir das Thema, mehr oder weniger, selber ausgesucht habe. Dort bekomme ich nur die technischen Komponenten, die man halt so dort hat. Und das liefe auf pure Mechanik und simple Steuerungstechnik raus. Grundlagentechnik eben.

    Wie gesagt, finde erstmal heraus, welche Geräte von welchem Hersteller Du ansprechen musst. Welche Protokolle diese beherrschen. Und welche Anschlussarten diese bieten.

    Vorher sind sämtliche Empfehlungen rein theoretischer Natur.

    Sarah-Tina schrieb:

    Damit es nicht zu irgendwelchen Missverständnissen kommt: Ich erwarte keine Komplettlösung.

    Niemand kann erwarten, dass Du in der Zeit eine Komplettlösung schaffst. Dafür wäre ein erfahrenes Team notwendig.
    * Kann Spuren von Erdnüssen enthalten.
  • Hi,

    NSObject schrieb:

    Für mich klingt das so, als wolle jemand eine "light"-Version von LabVIEW nachbauen.
    :) Dem Hinweis bin ich gerade einmal nachgegangen. Das geht in die Richtung. Nur ist es viel aufgeblasener als ich es brauche und zudem vermutlich unbezahlbar. 8)


    Nun, dann werde ich mal schauen, welchen Weg ich gehe. Vielleicht muss ich doch noch etwas zurückrudern, bevor die Projektphase startet. Denn dann zählen nur noch Ergebnisse.
    Aber soweit erstmal vielen Dank bis hierher.

    Liebe Grüße
    Tina
  • Für Programmierprojekte erst mal Hardware anschaffen müssen ist echt ne doofe Idee.
    Ich kann mir vorstellen, dass du da nur bedingt Lust zu hast.

    Und auch ich behaupte: das ist ein ehrgeiziges Projekt.

    So, genug gelabert. ;)

    Wenn du auf dem Mac entwickeln willst (und das willst du!), solltest du dich in die Apple-Entwicklersphären begeben.
    developer.apple.com/

    Diese sind, ohne Teilnahme am MFi und den iOS/Safari/Mac-Projekten, kostenlos.
    Ich sehe übrigens keinen Vorteil in irgend einer anderen Welt. Ob man sich jetzt mit Apple und Objective-C, MSDN und C# oder Mailinglists und GTK rumschlägt ist gehupft wie gesprungen.

    Tatsächlich würde ich aus eigener Erfahrung von C# abraten. Warum da ein 'C' im Namen ist habe ich bis heute nicht verstanden. Jedenfalls funktionieren rund 98% der Dinge, die C ausmachen, nicht mit C#.
    Da Hardwarenähe aber wie bereits von meinen Vorrednern erwähnt sehr häufig C bedeutet, sollte es auch C unterstützen.

    Informiere dich wirklich über die Art der Hardware, die dein Programm ansteuern und auswerten soll.
    Wenn alles RS232-gebunden ist und die Treiber nur als kompilierte C++-Windows-DLL vorliegen, dann ist ein Kampf gegen Windmühlen aussichtsreicher und du solltest gegebenenfalls über deine Hochschule ein Windows für dein Bootcamp erwerben.

    Ist es via USB oder Netzwerk angeschlossen und die Ansteuerung ist in vielen kleinen C-Quelltexten vorliegend, dann spricht alles für den bereits vorhandenen Mac.

    Wenn das alles so weit klar und eingerichtet ist, dann hilft leider nur noch eins: lesen. Viel, sehr viel lesen.
    Am Besten mit der Technology Overview, den Human Interface Guidelines und dem Cocoa Fundamentals Guide starten und dann zu den von dir ausgewählten Technologien vertiefend die weiteren Guides durcharbeiten.

    Bis du mit dem richtigen Projekt anfängst solltest du zumindest ein bis drei Kleinigkeiten erstellt haben, um ein Gefühl dafür zu entwickeln.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Der IO-Warrior ist schon mal ein passendes Spielzeug dafür.
    Von anderen Herstellern gibt's auch noch so einiges.

    Ans iPad/IPhone kannst du über den Kopfhöreranschluß. Da gibt's mehrere Ansätze im Web, finde es aber auf die Schnelle nicht. Im Prinzip haste einen Träger auf den irgendwie die digitalen Daten aufmoduliert werden. Im Prinzip ein Modem.

    Chris
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.
  • Hi,

    nachdem ich mir nun einmal diverse Infos und Unterlagen zum Thema C, C++ bzw. Objective-C angesehen habe bemerke ich echt, dass ich mir da wohl ganz schön was zumuten will.
    Ich weiß gar nicht, wo man da anfangen soll. Man wird mit so vielen Begriffen erschlagen und mit Dingen konfrontiert, die wie verschlüsselte Sätze ohne Zusammenhang aussehen. Ich dachte immer, moderne Programmiersprachen sind so gestaltet, dass man sie einfacher lesen/formulieren kann.....

    Wenn ich alleine lese: "NSString ist ein mächtiges Werkzeug, dessen Dokumentation bei Apple über 100 Seiten umfasst...". Nur dieses Eine... ;(
    Wie soll ich denn sowas in den Kopf bekommen?


    Liebe Grüße
    Tina
  • Sarah-Tina schrieb:

    Ich weiß gar nicht, wo man da anfangen soll. Man wird mit so vielen Begriffen erschlagen und mit Dingen konfrontiert, die wie verschlüsselte Sätze ohne Zusammenhang aussehen.

    Wenn Du einen medizinschen Artikel liest wird Dir das genau so gehen. Das ist beim Einstieg in jedem Fachgebiet so.

    Sarah-Tina schrieb:

    Wenn ich alleine lese: "NSString ist ein mächtiges Werkzeug, dessen Dokumentation bei Apple über 100 Seiten umfasst...". Nur dieses Eine... ;( Wie soll ich denn sowas in den Kopf bekommen?

    Das schlägt man bei Bedarf in der Dokumentation nach. Das muss man nicht alles im Kopf haben.


    Sarah-Tina schrieb:

    Ich dachte immer, moderne Programmiersprachen sind so gestaltet, dass man sie einfacher lesen/formulieren kann...

    Lerne die Sprache, dann lernst Du auch das zu lesen.

    Anm.: C wurde vor 40 Jahren veröffentlicht.
    * Kann Spuren von Erdnüssen enthalten.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von NSObject ()

  • Hi,

    NSObject schrieb:

    Lerne die Sprache, dann lernst Du auch das zu lesen.

    Ja, das kann ich natürlich nachvollziehen. Was ich halt meine ist, dass ich nicht weiß, wo und wie ich anfangen soll.
    Ok, dieses "Hallo Welt" ist natürlich ein Einstieg. Aber dadurch lernt man doch nichts. Denn in meiner Literatur wird in den nachfolgenden Übungsprogrammen plötzlich auf Dinge verwiesen, mit denen ich gar nichts anfangen kann.

    Beispiel:

    Quellcode

    1. - (NSString*)stringForObjectValue:(id)obj;
    2. - (BOOL)getObjectValue:(id*)obj forString:(NSString*)string errorDescription:(NSString**)error;
    3. - (bool)isPartialStringValid:(NSString*)partialString newEditingString:(NSString**) newString errorDescription:(NSString**)error;


    Das mag ja alles einen Sinn ergeben. Aber ich kann hier keine Befehle auseinanderhalten und verstehe nicht, warum da mal ein Sternchen und mal zwei dahinter sind. Warum ist das Wort "BOOL" mal groß und mal klein geschrieben usw.?

    Mir fehlt da so ein bisschen die Erklärung, welcher Befehl für was steht und was er tut. Stattdessen habe ich den o.g. Teil in einem Listing und es wird nur gesagt, mit dem Abschnitt wird dies und das erledigt. Aber wie soll man sowas mal selber programmieren, wenn man die einzelnen Schritte innerhalb des Abschnittes nicht versteht? Da hoffe ich halt, hier ein bisschen was zu finden, wie man die ersten Schritte optimal geht. Ich denke, vieles wird sich dann später einfacher auch selber erklären. Hoffe ich. ;)

    NSObject schrieb:

    Anm.: C wurde vor 40 Jahren veröffentlicht.

    Ja, dass der Ursprung schon lange her ist, habe ich gelesen. Auch interessant finde ich, dass Objective-C von Next entwickelt wurde und schon zu der Zeit wegweisend war und Strukturen verwendet, die noch heute unverändert aktuell sind. Wobei ich gestehen muss, dass ich die ganze Lebensgeschichte um Steve Jobs sehr interessant finde... Aber wir kommen vom Thema ab. :D

    Liebe Grüße
    Tina
  • robin_ schrieb:

    Lektürke


    Ein Mitbürger, türkischer Abstammung, der als Lektor arbeitet?

    SCNR
    Xcode 4 sucks – „,Multiple exclamation marks‘, he went on, shaking his head, are a sure sign of a diseased mind.‘“ (Terry Pratchett 1992: Eric)

    "Wir ordnen und befehlen hiermit allen Ernstes, dass die Advocati wollene schwarze Mäntel, welche bis unter das Knie gehen, unserer Verordnung gemäß zu tragen haben, damit man die Spitzbuben schon von weitem erkennt." (Friedrich Wilhelm I., Soldatenkönig)
  • Setz dich hin und leg los. Du hast 2 Jahre Zeit.
    Keine Ahnung ob du auf anderen Systemen fit bist, aber wen du neu anfängst ist es wurscht was für ein System du nimmst.

    Kauf die ein ordentliches Buch, das von Amin oder Hillegass.
    Lass die Finger von irgendwelchen Youtube Tutorials. Das sind in vielen Fällen irgendwelche Poser ohne großes Hintergrundwissen.

    Bei Fragen gibt's das Forum hier. Du bekommst meistens keine Rezepte sondern wirst zu Selbsthilfe geführt.

    Chris
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Chris ()