EBC - Ein Beispiel Projekt

Der RS232 Device Simulator

Samstag 16 Oktober 2010 at 12:08 am. Stichwörter: , ,

Es ist soweit. Mein EBC Test Projekt ist veröffentlicht. Der Quelltext liegt bei CodePlex. Einfach mal im Bereich "Source Code" nachschauen. Hier der Link: http://ebcsamples.codeplex.com

Dies ist der Link zum Vortrag bei der Dortmunder .Net User Group vom 3.11.2010.
http://prezi.com/bzcfkrpkoh5q/ck-device-simulator/

Wichtiger Hinweis [Änderung vom 18.10.2010 ergänzt am 2.11.2010 von Christof]: 
Der CK_DeviceSimulator Quelltext kann nun auch auf der Projekt Download Seite heruntergeladen werden.
Für den Download muss auf der CodePlex SourceCode Seite der "CK.DeviceSimulator" Branch ausgewählt werden.  Der direkte Download liefert nur den "default" Branch und da ist mein Projekt nicht drin.

Aber warum überhaupt ein EBC Projekt?

Ich finde den Ansatz und die Idee dahinter sehr gut. Aber ohne praktische Erfahrung kann man viel schreiben und diskutieren. Es hilft einem aber nicht weiter. Also habe ich ein Entwicklungsprojekt gestartet.

Projekt Name : RS232 Device Simulator

Bei der Entwicklung von Software, die externe Geräte ansteuert hat man das Problem, dass man die Software nicht so einfach automatisch Testen kann. Es fehlen ja die eingehenden Daten des externen Gerätes.

Um dieses Problem zu lösen, soll ein Geräte-Simulator erstellt werden, der diverse externe Geräte simulieren können soll.

Dabei soll es aber kein einfacher "Abspieler" sein. Die Software soll auf Befehle genauso reagieren, wie das echte Gerät. Das heißt die Abfragebefehle dürfen in beliebiger Reihenfolge kommen und auch das Zeitverhalten soll korrekt nachgeahmt werden. Zusätzlich soll es auch einen Aufnahme-, oder Lern-Modus geben, über den neue Geräte angelernt werden können.

Und dieses Projekt sollte zusätzlich noch mit dem EBC (Event Based Components) Ansatz realisiert werden.

Die Aufgabe klingt erstmal recht groß, aber wenn man sich eine kleine Skizze macht, dann sieht es doch recht simpel aus:

Strukturskizze GUI

Im Grunde sind es also nur zwei Aufgaben (Tasks). Zum einen die Simulation und zum anderen der Lern-Modus. Dabei kommt dem Projekt zugute, dass es für die eigentliche Aufgabe gar keine GUI benötigt.

Für die Tests war jedoch notwendig auch eine GUI einzubauen. Die notwendigen Ergänzungen (z.Bsp. Synchronisation der Ausgabe mit dem GUI Thread) machen den Quelltext im Hauptprogramm etwas unübersichtlich.

Hier der EBC Schaltplan für den Simulations Task:

Simulation

Und hier der Schaltplan für den Lern-Modus:

Lern-Modus

In den Schaltplänen steht jeder Block für eine Activity. Jede dieser Activities wird einzeln, unabhängig von den anderen erstellt. Dabei sind die gelb gekennzeichneten Activities komplett eigenständig. Die blauen Activities sind speziell auf dieses Projekt ausgerichtet und können demnach auch die speziellen Projekt Datentypen verarbeiten.

Die allgemeinen Activities sind so allgemein gehalten, dass Sie in den verschiedensten Projekten eingesetzt werden können. Neben Eigenentwicklungen habe ich dabei auch Ideen anderer Entwickler aufgegriffen. Die Activities "SyncWithGui" und "Async" basieren zum Beispiel auf Ideen von Ralf Westphal, die ich in seinem Blog, bzw. in Artikeln der DotNetPro gefunden habe.

zwei Kommentare

Rainer Hilmer

Hallo,
ich habe gerade eine Arbeitskopie von EbcSamples gezogen. Die einzigen Projekte die ich dort sehe, sind jedoch nur das BankOCR und ein VatBoard.

Rainer Hilmer (URL) - 17-10-’10 10:17
<span class='registered'>Christof</span>

Hallo Rainer,

ich habe es gerade mal getestet. Ich denke es liegt daran, dass ich einen neuen Projektzweig (Branch) aufgemacht habe. Wenn Du auf der CodePlex – SourceCode Seite direkt den Download Link verwendest (Latest Version), dann bekommst Du den “default“ Branch.

Da steht mein Projekt aber nicht drin. Am Besten klickst Du zuerst das ChangeSet mit dem “CK.Simulator” Branch an. Dann kannst Du über “Download” oder “Browse” an mein Projekt.

Viele Grüße,

Christof (E-Mail ) - 18-10-’10 10:39