Benutzer-Werkzeuge

Webseiten-Werkzeuge


schule:raspberrypi-programmierung_mit_c-sharp

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
schule:raspberrypi-programmierung_mit_c-sharp [2015-12-01 14:40] – Formatierung marco.bakeraschule:raspberrypi-programmierung_mit_c-sharp [2017-04-19 14:51] – [Vorgehen] changed man page interwiki link to debian manpages marco.bakera
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: 2024-01-25 17:35 von pintman