Benutzer-Werkzeuge

Webseiten-Werkzeuge


schule:raspberrypi-programmierung_mit_c-sharp

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Both sides previous revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
schule:raspberrypi-programmierung_mit_c-sharp [02.02.2016 13:41]
Marco Bakera [RaspberryPi-Programmierung mit C#] Formulierung
schule:raspberrypi-programmierung_mit_c-sharp [19.04.2017 14:51]
Marco Bakera [Vorgehen] changed man page interwiki link to debian manpages
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 [[debman>​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