Anfänger Fragen: Welche Sprache für Aufgabe

  • Hi,


    Ich möcht mit meinem PI folgendes realisieren:


    Über GPIO einen Schalter und ein LED - das habe ich bereits gebaut und funktioniert.
    Wenn der Schalter(Taster) gedrückt wird soll der PI ein Wake on Lan Paket senden (bash befehl 'wakeonlan [mac adresse]')


    2. Funktion soll eine Schleife/Daemon o.Ä. sein die im 10 Sec Takt versucht eine IP zu Pingen und bei Erfolg das LED anschaltet.
    Die LED soll also zeigen ob ein bestimmter Rechner läuft und der Schalter soll ihn per Netzwerk starten können.


    Meine Frage ist nun folgendes:
    Wie bzw in welcher Sprache realisiere ich das ganze am besten?
    Wie reagiere ich auf den Schalter?
    Wie kann ich immer wieder einen Ping ausführen und mit dem Ergebnis die LED schalten?


    danke
    Lunex

    Edited once, last by Lunex ().


  • Wie bzw in welcher Sprache realisiere ich das ganze am besten?


    Ich würde sowas in C machen aber man sollte das auch in Brainfuck hinbekommen (http://de.wikipedia.org/wiki/Brainfuck)
    Welche Sprachen kannst Du denn?

    Quote

    Wie reagiere ich auf den Schalter?


    Entweder ständig den Port abfragen und dann reagieren oder einen Interupt programmieren und wenn der Auftritt reagieren.

    Quote

    Wie kann ich immer wieder einen Ping ausführen und mit dem Ergebnis die LED schalten?


    Das kommt auf die Sprache an.

  • Ich kann leider weder C noch Python, wohl aber ein wenig Bash.
    Um C würde icha uch gern einen Bogen machen. (nur wenig comfortabler als brainfuck imho)


    Wie funktioniert das mit dem Interrupt?
    Kann ich da eine Art Event erstellen, dass dann bashcode ausführt?


    danke
    Lunex

  • Wenn Du bash kannst, dann schreibe die Logik, insbesondere die Auswertung des Ergebnisses von ping halt in ein Shell-Skript.


    Dann brauchst Du nur noch drei Funktionen für LED an, LED aus und Button abfragen (Pollen).


    Wie das mit Python geht, steht im gerade frisch auf raspberrypi.org veröffentlichten Educational Manual.


    Wenn Du das am Laufen hast und ein wenig mit Python gespielt hast, kannst Du bestimmt alles direkt in Python schreiben und dann auch vieleicht das Polling durch eine irgendeinen Event ersetzen.


    Falls das wirklich nicht in Python geht, dann erst würde ich zu C oder C++ greifen.


    Aber: lass Dich nicht abschrecken. C, C++, objective C, C# - ein bißchen was davon kann nicht schaden. Praktisch alles, was unter Linux läuft, wurde mit C und C++ gebaut. Und das Zeug läuft auf auf dem Raspi-Krümel und auf Supercomputern. Ganz so schlecht kann die Sprache nicht sein, oder?

  • Quote from Lunex pid="3131" dateline="1356075129"

    Wie funktioniert das mit dem Interrupt?
    Kann ich da eine Art Event erstellen, dass dann bashcode ausführt?


    Wenn du das Problem auf der bash-Ebene lösen möchtest, dann wirst du wohl um die regelmäßige Abfrage des aktuellen Tasten-Status nicht herumkommen. Zumindest konnte ich in "man bash" kein passendes Auftreten des Worts "interrupt" finden.


    Schreib also einfach eine Wiederholschleife, die bei jedem Durchlauf den Zustand der Taste prüft und bei Bedarf das wake-on-lan-Paket verschickt. Vergiss zwischendurch aber nicht den regelmäßigen Aufruf von "sleep", damit dein Rechner sich zwischendurch auch noch andere Dinge kümmern kann.


    In derselben Schleife kannst du natürlich auch gleich ein einzelnes Ping senden. Ohne weitere Parameter läuft "ping" endlos - aber du wirst unter "man ping" beim Parameter "-c" die Lösung des Problems finden.
    Falls dir anschließend zuviele Ausgaben über den Bildschirm laufen, dann wird dir "man bash" in der Rubrik "Redirection" weiterhelfen.


    Den Erfolg des einzelnen Pings kannst du in der Bash entweder über eine "if"-Verzweigung oder über die "&&"-Verknüpfung (kürzer und schöner) prüfen. Die LED-Ansteuerung über das proc-Interface wird im Tutorial von Tedbot beschrieben.


    PS: Falls du gerade keine Lust haben solltest, das komplette bash-Manual zu lesen (Lebenszeit ist kostbar :)), dann versuch es vielleicht mal mit dem Bash-Guide (tldp) - dort findest du in aller Kürze alle wesentliche Elemente der Shell-Programmierung.