Anfänger Fragen: Welche Sprache für Aufgabe

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • 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

    Einmal editiert, zuletzt von Lunex (20. Dezember 2012 um 22:07)


  • 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?

    Zitat

    Wie reagiere ich auf den Schalter?


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

    Zitat

    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?

  • Zitat von 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.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!