Archiv für die Kategorie „Snippets“

Excel Makro zur Hantelberechnung

Donnerstag, 3. September 2009

Veröffentlichung: 2005
Programmiersprache: VBA (Excel)

Beim aufräumen ist heute ein altes Excel Makro aus meiner Ausbildung wieder aufgetaucht -
ein kleines Tool um alle notwendigen Maße auszurechnen um eine Hantel mit vordefiniertem Gewicht
herzustellen.

Dem Tool lassen sich div. Grössen vorgeben, alle nicht angegebenen werden automatisch vervollständigt.
Es lassen sich u.a. auch die Dichte des Werkstoffs und optionale Phasen angeben.

Am Ende wird noch eine Vorschau generiert die sich wunderbar drucken lässt um damit dann die Hantel zu fertigen.

Siemens ProDave Mini .net Wrapper

Sonntag, 16. August 2009

Veröffentlichung: August 2009
Programmiersprache: C#
Sonstiges: Siemens ProDave Mini 6.0

Siemens ProDave ist eine Schnittstelle um vom PC direkt über z.B. die RS232 oder USB Adapter von Siemens auf eine S7 Steuerung zuzugreifen, Daten zu lesen und zu schreiben oder die Steuerung komplett fernzusteuern und zu überwachen.Da ich nirgents Informationen zur Verwendung von ProDave unter .net finden konnte biete ich jetzt hier auch einen kleinen ProDave Wrapper an. Eine Möglichkeit wäre eine Dll in einer supporteten Sprache zu schreiben und auf diese mit .net zuzugreifen. Ein direkter Zugriff auf die w95_s7m.dll ist unter .net nicht ganz so einfach.

Der Wrapper greift mit einem kleinen Trick direkt auf die Dll’s zu und benötigt ausser der Orginal-Dll keine weiteren Dateien.

Da ich z.Z. nur ProDave MPI Mini 6.0 benutze kann der Wrapper auch noch nicht mehr als:

- Datenbausteine lesen und schreiben (alle gängigen Formate werden unterstützt z.B. Real Werte oder Bool’s)
- Variablesspeicher lesen und schreiben
- Zustand der SPS auslesen
- Fehlermeldungen auswerten

Auf Wunsch erweiter ich den Wrapper auch auf die restlichen Funktionen der kompletten ProDave Version.

.Net Plugin/Scripting System

Mittwoch, 12. August 2009

Veröffentlichung: Januar 2009
Programmiersprache: C#
Sonstiges: CodeDOMProvider

Hier mal etwas ganz interessantes, eine Scripting und Plugin Engine, geschrieben in C#.
Das besondere hier ist das sie nicht VSA verwendet, eine Technik die in der aktuellen Version nicht mehr supported wird, sondern eine Mischung aus dem ICodeProvider und definierten Interfaces.

So erreiche ich das die Scripts zur Laufzeit kompiliert werden, trotzdem aber Zugriff auf das laufende Programm bekommen können, also eine vollwertige Scriptengine.

Zusäzlich ergeben sich noch ein paar weitere Einsatzmöglichkeiten:

- Scripte werden zu Laufzeit in entweder VB.net oder C# kompiliert und in der Anwendung ausgeführt
- Scripte werden als EXE/DLL gespeichert und sind alleine lauffähig (ohne Zugriff auf die Anwendung)
- Als EXE/DLL gespeicherte Scripte lassen sich wieder in der Anwendung ausführen (inkl. Zugriff auf die Anwendung)

Ohne weiteres lassen sich so Script Interfaces für alle .net Programme erstellen (z.B. zum auslagern häufig zu ändernder Funktionen) oder auch komplette Plugin Systeme.

Auf Anfrage kann die Klasse mit Beispielen zur Verfügung gestellt werden.

C# GDI+ Wrapper mit Bumpmapping und Filtern

Mittwoch, 22. Juli 2009

Veröffentlichung: 17.04.2009
Programmiersprache: C#
Sonstiges: GDI+
Vorhandene Filter: Scale2X (Extended), Scale3X (Extended), 2D Bumpmapping mit Environmentmap, Invert, Grayscale, Brightness, Contrast, Gamma, Color, Smooth, Gaussian Blur, Mean Removal, Sharpen, Emboss Laplacian, Quick Edge Detect 

Ein kleines C# Projekt das mir als Basis dienen soll um einfache Visualisierungen in meinen C# Programmen umzusetzen. Da GDI+ an sich bereits sehr gut strukturiert ist habe ich nur ein paar Helper Funktionen eingeführt die das arbeiten mit GDI+ ein wenig vereinfachen. Z.B. werden Hashtables benutzt um das arbeiten mit definierten Brush’s, Pen’s u.ä. einfacher zu gestalten. Ausserdem werden Blendingfunktionen vereinfacht.

Zusätzlich gibt es zwei Filterklassen. Die eine für Standardfilter (teilweise direkt, teilweise als 3×3 Filter) und die andere als BumpMapping Implementierung. Zwar brauche ich die Klassen eher selten in kommerziellen Projekten, Spass hats trotzdem gemacht.


Auf Anfrage kann ich die Klassen zur Verfügung stellen.