Benutzer-Werkzeuge

Webseiten-Werkzeuge


schule:raspberrypi-programmierung_mit_c-sharp

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte Überarbeitung Beide Seiten der Revision
schule:raspberrypi-programmierung_mit_c-sharp [02.12.2015 21:55]
Marco Bakera [FAQ] Formatierung
schule:raspberrypi-programmierung_mit_c-sharp [19.04.2017 08:39]
127.0.0.1 Externe Bearbeitung
Zeile 1: Zeile 1:
 +====== RaspberryPi-Programmierung mit C# ======
 +
 +Mit diesem kleinen Projekt sollen die GPIO-Pins eines [[Raspberry Pi]] mit einem C#-Programm angesteuert werden.
 +
 +===== Auftrag =====
 +
 +Eine LED, die an einem Pi angeschlossen ist, soll über einen Button in einer
 +Windwos-Forms-Anwendung ein- und wieder ausgeschaltet werden können. Die LED wird über
 +GPIO PIN7 und GND PIN6 angeschlossen. Vor der LED wird ein Widerstand (500 Ohm) geschaltet.
 +
 +===== Vorgehen =====
 +  - Baue die Schaltung auf dem Steckbrett auf. \\ {{:​schule:​prog:​rpi-schaltung.png|}}
 +  - Lade die [[https://​github.com/​cypherkey/​RaspberryPi.Net/​|RaspberryPi.Net]] C# Bibliothek herunter und kompiliere sie. Es wird eine DLL in ''​bin/​Debug''​ erzeugt. Diese wird benötigt, wenn wir aus C# heraus auf die GPIO des Pi zugreifen möchten.
 +  - Erstelle ein Projekt und eine GUI nach dem folgenden Vorschlag. \\ {{:​schule:​prog:​rpi-programmierung-gui-screenshot.png|}}
 +  - Binde die RPi-DLL als Verweis in dein Projekt ein. \\ {{:​schule:​prog:​rpi-prigrammierung-verweise.png|}}
 +  - Erstelle den Quellcode für den Button.
 +  - Übertrage das fertige Projekt auf den Pi (z.B. mit [[man>​scp]]) und teste es. Du kannst es dort wie folgt starten.
 +
 +  $ sudo mono Projekt/​bin/​Debug/​Projekt.exe
 +
 +===== FAQ =====
 +
 +**Warum lässt sich die C#​-Bibliothek nicht mit ''​xbuild''​ auf dem Pi kompilieren?​** \\
 +Es scheint ein Fehler in den locales zu sein. [[https://​github.com/​cypherkey/​RaspberryPi.Net/​issues/​27#​issuecomment-76073166|Quelle]]
 +
 +Folgender Aufruf klappt:
 +
 +  $ LANG=en_GB.UTF-8 xbuild RaspberryPiDotNet.csproj
 +
 +**Warum wird der Namespace ''​RaspberryPiDotNet''​ nicht gefunden?** \\ 
 +Es fehlt der Verweis auf die entsprechende dll in den Projektverweisen.
 +
 +**Warum lässt sich mein Projekt unter MonoDevelop nicht erstellen?​**\\ ​
 +Wieder ein Problem mit den locales. Du kannst monodevelop wie folgt starten.
 +
 +  $ LANG=en_GB.UTF-8 monodevelop
 +
 +===== Lösung =====
 +Es folgt die Lösung für dieses Projekt. Probiere erst selbst aus, auf eine Lösung zu kommen, bevor du diesen Abschnitt liest.
 +
 +<code csharp>
 +using System;
 +using Gtk;
 +using RaspberryPiDotNet;​
 +
 +public partial class MainWindow: Gtk.Window
 +{
 +    // Der aktuelle Status, der angibt, ob die LED leuchten soll.
 +    bool bStatus;
 +
 +    // Steuert einen GPIO über das Dateisystem an.
 +    GPIOFile led;
 +
 +    public MainWindow() : base(Gtk.WindowType.Toplevel)
 +    {
 +        Build();
 +
 + bStatus = false;
 + lblStatus.Text = "​Status:​ " + bStatus;
 +
 + // Pins konfigurieren
 +
 + // Es wird PIN7 auf einem RPi 2 gewählt
 + led = new GPIOFile (GPIOPins.V2_Pin_P1_07);​
 + led.PinDirection = GPIODirection.Out;​
 +    }
 +
 +    protected void OnDeleteEvent(object sender, DeleteEventArgs a)
 +    {
 +        Application.Quit();​
 +        a.RetVal = true;
 +    }
 +
 +    protected void OnBtnOnOffClicked (object sender, EventArgs e)
 +    {        ​
 + ​ bStatus = !bStatus;
 +
 + lblStatus.Text = "​Status:​ " + bStatus;
 +
 + if (bStatus) {
 +            led.Write (PinState.High);​
 + } else {
 +     led.Write (PinState.Low);​
 + }
 +    }
 +}
 +</​code>​
 +
 +===== Links =====
 +
 +  * [[http://​raspberrypiguide.de/​howtos/​raspberry-pi-gpio-how-to/​|GPIO ansteuern]] ist eine ausführliche Beschreibung dazu, wie GPIOs angesteuert werden können.
 +  * [[https://​github.com/​cypherkey/​RaspberryPi.Net/​|RaspberryPi.Net]] ist C# Bibliothek zur Ansteuerung von GPIO aus C# heraus.
  
schule/raspberrypi-programmierung_mit_c-sharp.txt · Zuletzt geändert: 19.04.2017 14:51 von Marco Bakera