Programmierung externer Funktionen
Beispiel zur Programmierung externer Funktionen für RedCrab Calculator
Schreiben externer FunktionenRedCrab enthält eine integrierte Anwendungsschnittstelle (API). Die API kann Daten zur Berechnung an externe Programme senden. Die Datei RedCrabAPI.dll muss in den externen Programmen enthalten sein, um mit RedCrab kommunizieren zu können. Suchen Sie die Datei im RedCrab Unterverzeichnis tools/bin . Die externen Programme können in jeder Programmiersprache geschrieben werden. Wichtig ist, dass ein Entwicklungssystem verwendet wird, das das Einbinden der API-Datei ermöglicht. Diese Seite beschreibt die Programmierung in der Programmiersprache Basic. Als Entwicklungswerkzeug wird Microsoft Microsoft Visual Studio verwendet. Das Microsoft Visual Studio Community kann kostenlos vom Microsoft-Server heruntergeladen werden. Es unterstützt C ++, c #, Visual Basic und andere Programmiersprachen. Programmbeispiel in Visual BasicFür das folgende Beispiel wird ein neues Windows Forms-Projekt in Visual Studio geöffnet.
Fügen Sie im Projektmappen-Explorer die Verweise zu RedCrapApi.dll und System.Numerics hinzu. Die Beschreibung dazu finden Sie hier QuellcodeDas folgende Beispiel zeigt den minimalen Quellcode eines externen Programms. Es berechnet die Quadratwurzel des gesendeten Arguments. Das Unterprogramm Transfer ist die Funktion die direkt vom Arbeitsblatt über die Pipe aufgerufen wird.
|
Zeile 2: |
Import der RedCrabApi. |
||||
Zeile 6: |
Form1_Load Evend Handler wird beim Start des Programms ausgeführt. |
||||
Zeile 7: |
Initialisierung des RedCrab Transfer Event Handler. Der Handler wird aufgerufen wenn RedCrab Daten sendet. |
||||
Zeile 10: |
Initialisierung des PipeClient. Das Argument 0 legt fest, daß die Kommunikation über die Pipe Nummer 0 abgewickelt werden soll. |
||||
Zeile 12: |
Implementation des RedCrab Transfer Event Handler |
||||
Zeile 14: |
Die gesendeten Daten werden der Vaiable d zugewiesen. |
||||
Zeile 15: | Ergebnis berechnen und an RedCrab senden. | ||||
|
|||||
Im folgenden Beispiel ist des Programms von oben um einige Zeilen erweitert worden. |
|||||
Zeile 10 |
In dieser Zeile wird das Unterprogramm Info (Implementation Zeile 32) als Info Event Handler initialisiert. Zu dieser Handler sendet die API Status Mitteilungen,z.B. wenn Daten gesendet oder Emfangen werden. Die Mitteilungen werden als Textstring im Argument e.Message gesendet. Sie dienen nur der Information und haben keinen Einfluß auf die Funktion. In dem Beispiel oben wird der Text in einer Textbox im Fenster ausgegeben |
||||
Zeile 18 |
In dieser Zeile wird der gesendete Daten-Type geprüft. Diese Prüfung sollte immer durchführt werden. Durch die Zuweisung eines falschen Daten types, z. B. decimal statt double, oder eine Liste oder Tabelle, läuft das Programm in eine Ausnahme-Situation und stürzt ab. Wenn unterschiedliche Datentypen erwartet werden, können für die verschiedenen Typen entsprechende Behandlungs-Routinen installiert werden. Eine Liste der möglichen Typen finden Sie unten auf dieser Seite |
||||
Zeile 21 |
Prüfen des optionalen Kommando-Strings. Durch den Kommando-String können in einem Programm verschiedene Funktionen für den selben Daten-Type ausgeführt werden. In dem Beispiel oben wird der gesendete Wert ins Quadrat erhoben wenn im Argument e.Command "square" gesendet wird. Sonst wird der Wert mit 2 multipliziert |
||||
Zeile 27 |
Sendet eine Fehlermeldung als Text an RedCrab, wenn ein ungültiger Daten Type gesendet wurde |
||||
|
|||||
Liste der erlaubten Datentypen |
|||||
|
|||||
Liste der in RedCrabDataType definierten Elemente |
|||||
Complex | |||||
ComplexList | |||||
ComplexTable | |||||
Decimal | |||||
DecimalList | |||||
DecimalTable | |||||
Double | |||||
DoubleList | |||||
DoubleTable | |||||
String | |||||
StringList | |||||
StringTable | |||||
Elements of RedCrabEventArg |
|||||
Command | String | Optionaler Kommando String | |||
Data | Object | Die zu berechnenden Daten | |||
DataType | RedCrabDataType | Type der zu berechnenden Daten | |||
Length | Integer | Anzahl der Zeilen in einer Liste oder Tabelle | |||
Message | String | Message Text für Info Handler | |||
Width | Integer | Anzahl der Spalten einer Tabelle | |||
Server Name |
|||||
In den Beispielen hier wird davon ausgegangen, dass RedCrab und das externe Programm sich auf dem gleichen Rechner befinden. Wenn RedCrab auf einem anderen Rechner läuft, muss der Name des Rechners im NamedPipeClient angegeben werden. In den Beispielen hier unter rc.ServerName. |
|||||
Das folgende Bild zeigt ein Beispiel in C#. |
|||||
|
|||||