C#-Klassen und cs-Skripte

Die Stunden- und Minuten-Blöcke haben viele Gemeinsamkeiten. Sie definieren sich über die Koordinate des Punktes links oben und haben eine bestimmte Breite und Höhe sowie eine Rahmen- und eine Füllfarbe. Es liegt also nahe, eine Basisklasse anzulegen, die alle diese Eigenschaften implementiert.

Stellenmarkt
  1. Data Scientist (m/w/d)
    WINGAS GmbH, Kassel
  2. SAP Junior Business Consultant - Treasury und Darlehen (m/w/d)
    Allianz Technology SE, Unterföhring
Detailsuche

Von dieser Basisklasse werden wir sowohl die Stunden- als auch die Minuten-Blöcke ableiten. Nachfolgend das Unified-Modeling-Language-(UML)-Schema, das allein die Vererbung dieser Vierecke aufzeigt:

  • Das LED-MATRIX01 von Joy-IT ist ein LED-Panel mit 64 x 64 Bildpunkten. (Bild: Michael Bröde)
  • Das sind die Koordinaten für unsere Berlin-Uhr. (Bild: Michael Bröde)
  • Die UML-Stundenblöcke (Diagramm: Michael Bröde)
  • Die Uhr in UML (Diagramm: Michael Bröde)
Die UML-Stundenblöcke (Diagramm: Michael Bröde)

Die Klasse CBaseBlock liefert die Grundlage aller Vierecke. Sie ist als abstract definiert, da sie nur zum Vererben und nicht zur direkten Verwendung gedacht ist. Da die Vierecke aus Reihe 1, 2 und 4 der Berlin-Uhr eine einheitliche Größe haben, erstellen wir zunächst eine abstrakte "Zwischen"-Klasse CStandardBlock, die von CBaseBlock ableitet und die dann ihrerseits für die Vierecke der drei genannten Reihen zuständig ist. Die Minuten-Vierecke aus Reihe 3 erben direkt von CBaseBlock. Sekundenrhombus und -wurm sind Spezialobjekte, die ohne Vererbung auskommen müssen.

Wir wollen die Möglichkeit nicht ausschließen, dass zu unserer Berlin-Uhr später weitere Uhrenstile hinzukommen. Aus diesem Grund erstellen wir sicherheitshalber an dieser Stelle schon eine Basisklasse CBaseClock, die wichtige gemeinsame Uhren-Eigenschaften bereitstellt.

Golem Karrierewelt
  1. Jira für Systemadministratoren: virtueller Zwei-Tage-Workshop
    08./09.09.2022, virtuell
  2. First Response auf Security Incidents: Ein-Tages-Workshop
    14.11.2022, Virtuell
Weitere IT-Trainings

Unsere Uhr-Klasse CBerlinUhr leitet dann davon ab. Hier das entsprechende UML-Schema:

  • Das LED-MATRIX01 von Joy-IT ist ein LED-Panel mit 64 x 64 Bildpunkten. (Bild: Michael Bröde)
  • Das sind die Koordinaten für unsere Berlin-Uhr. (Bild: Michael Bröde)
  • Die UML-Stundenblöcke (Diagramm: Michael Bröde)
  • Die Uhr in UML (Diagramm: Michael Bröde)
Die Uhr in UML (Diagramm: Michael Bröde)

Grundlage der Konsolen-App ist eine einfache Programm-Klasse, die zunächst die erforderlichen Objekte der LED-Panel-Bibliothek einrichtet und diese an den Konstruktor der Uhr-Klasse weitergibt. Nachdem wir die Uhr-Klasse instanziiert haben, führen wir deren Methode Run aus. Damit wird die Berlin-Uhr auf dem LED-Panel sichtbar.

cs-Skripte

Wir verwenden für die Programmentwicklung das Visual Studio von Microsoft, das die Versionsverwaltung Git integriert. Hier legen wir für unser Projekt ein eigenes Repository an.

Üblicherweise werden Klassen in jeweils einem eigenen CSharp-(cs)-Skript gespeichert. Wir tun das heute nicht, da wir auf dem Raspberry keine Integrierte Entwicklungsumgebung (IDE) einsetzen, die uns die Erstellung des Projektes zur ausführbaren App erleichtert. Wir haben dabei auch im Sinn, dass weitere Features - das heißt Klassen - zum Projekt hinzukommen.

Raspberry Pi: Das umfassende Handbuch. Über 1.000 Seiten in Farbe. Mit Einstieg in Linux, Python und Elektrotechnik. Aktuell zum Raspberry Pi 4

Unsere Berlin-Uhr muss ja nicht durchgängig laufen, sondern kann von Zeit zu Zeit auch mal etwas anderes anzeigen. Mit der erwähnten abstrakten Klasse CBaseClock haben wir das bereits vorbereitet.

Klassen, die thematisch zusammengehören, legen wir also in einen eigenen Namensraum (Namespace). Für jeden Namespace erstellen wir dann ein eigenes Skript. Dies vereinfacht die Erstellung des bash-Befehls zum Kompilieren des Projektes wesentlich. Wir müssen lediglich die beteiligten Namespaces angeben.

RGBLedMatrix.dll-Ersatz

Bei der Programmierung wollen wir natürlich zeitnah Fehler erkennen oder diese von vornherein vermeiden. Hierbei hilft uns zunächst die IntelliSense des Visual Studios. Sie meldet sich schon beim Schreiben des Codes, wenn wir etwas falsch machen.

Zusätzlich richten wir das Projekt so her, dass es kompilierbar ist. Beim Compile-Prozess können wir dann noch Fehler aufspüren, die die IntelliSense nicht bemerkt hat. Mit dieser Vorgehensweise erreichen wir, dass sich die Skripte, nachdem wir sie auf den Raspberry übertragen haben, ziemlich sicher ohne Fehler in das ausführbare Programm übersetzen lassen.

Das Problem dabei ist, dass wir zum Kompilieren die LED-Panel-Bibliothek benötigen, die es aber für MS-Windows naturgemäß nicht gibt. Unser PC hat ja auch keine GPIO-Leiste, an die wir ein LED-Panel anschließen können.

Zur Lösung des Problems bauen wir einen Hilfs-Namespace (rasp_emu.cs), der die benötigten Klassen so bereitstellt, wie wir sie auf dem Raspberry in der Bibliothek vorfinden. Die Klassen unseres Hilfs-Namespaces sind jedoch nur Platzhalter, das heißt leere Rümpfe ohne Funktion. Sie dienen allein zu Compile-Zwecken.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Definition der Koordinaten und ProgrammierungProgrammierung der Sekundenanzeige und Fertigstellung 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7.  


Lemo 13. Jul 2022 / Themenstart

Wieso muss man dann immer wieder neue Konzepte erfinden, nur um etwas zu verkomplizieren...

amagol 08. Jul 2022 / Themenstart

Kurz nachgeschaut und ein DS3231 scheint allein schon teurer zu kommen als ein ESP-01 (z...

pinki 06. Jul 2022 / Themenstart

Statt mono könnte man auch das aktuelle dotnet (mit deutlich mehr Features) nehmen und...

AvailableLight 05. Jul 2022 / Themenstart

Ne, die Zeiger werden per festgeklebtem Sitzstreik am weiterlaufen gehindert und dürfen...

Kommentieren



Aktuell auf der Startseite von Golem.de
Garmin Edge Explore 2 im Test
Fahrradnavigation als verkehrsberuhigtes Abenteuer

Tour mit wenig Autos gesucht? Das Fahrrad-Navigationsgerät Garmin Edge Explore 2 kann uns das verschaffen - mit teils unerwarteten Folgen.
Ein Test von Peter Steinlechner

Garmin Edge Explore 2 im Test: Fahrradnavigation als verkehrsberuhigtes Abenteuer
Artikel
  1. Eichrechtsverstoß: Tesla betreibt gut 1.800 Supercharger in Deutschland illegal
    Eichrechtsverstoß
    Tesla betreibt gut 1.800 Supercharger in Deutschland illegal

    Teslas Supercharger in Deutschland sind wie viele andere Ladesäulen nicht gesetzeskonform. Der Staat lässt die Anbieter gewähren.

  2. THQ Nordic: Alone in the Dark bietet neuen Horror
    THQ Nordic
    Alone in the Dark bietet neuen Horror

    Rund 30 Jahre nach dem ersten Alone in the Dark soll es frischen Grusel im Herrenhaus Derceto Manor geben - und altbekannte Hauptfiguren.

  3. Quartalsbericht: Huawei steigert den Umsatz trotz US-Sanktionen wieder
    Quartalsbericht
    Huawei steigert den Umsatz trotz US-Sanktionen wieder

    Besonders im Bereich Cloud erzielt Huawei wieder Zuwächse.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • Günstig wie nie: Palit RTX 3080 Ti 1.099€, Samsung SSD 2TB m. Kühlkörper (PS5) 219,99€, Samsung Neo QLED TV (2022) 50" 1.139€, AVM Fritz-Box • Asus: Bis 840€ Cashback • MindStar (MSI RTX 3090 Ti 1.299€, AMD Ryzen 7 5800X 288€) • Microsoft Controller (Xbox&PC) 48,99€ [Werbung]
    •  /