Data Packets, Data Trigger, Data Filtering, Data Monitoring, File Transmission Queue
SuperCom verfügt über intelligente Funktionen um längere oder komplexe Operationen einfach zu lösen (Smart Path).
Diese intelligente Funktionen erleichtern nicht nur die Lösung von komplexen Aufgaben schnell sondern arbeiten im 'nicht-blockierenden' Modus, im Hintergrund. Das Resultat ist eine sehr stabile Anwendungen die schnell, weich und ruckelfrei arbeitet und wesentlich schneller entwickelt als mit herkömmlichen Werkzeugen.
Dieses Konzept wird im folgenden mit Beispielen demonstriert. Wie bei SuperCom üblich, lassen sich alle folgende Bespiele über alle unterstützte Verbindungswege einsetzen (z.B. Seriell, TCP/IP, ISDN).
C/C++ Beispiel
|
Zusätzlich kann RS_GetDataPacketEx obiges vollständig im Hintergrund ausführen und die gesammelten Daten per Ereignisse (OnDataPacket) liefern.
Die Parameter cStart, cStop definieren die Regeln für das Datenpaket. Danach wartet die Funktion bis ein Datenpaket entsprechend den Regeln empfangen wird, die gewünschte Anzahl an Daten empfangen wurde oder die eingestellte Zeit abläuft. Die Parameter cStart und cStop werden je nach Vorgaben definiert oder auch nicht.
Der Parameter für Start und Stopp kann ein einzelnes Datenbyte (Zeichen) oder eine Folge von Datenbytes auch binäre Daten sein und sogar Platzhalter (Wildcards) enthalten.
WildCards
Nun ist nicht immer jedes Zeichen in einem Datenpaket bekannt (z.B. Prüfsummenzeichen, Längenbyte, etc.). Der Weg solche Stellen zu beschreiben geht über WildCards.
Ein Wildcard (Platzhalter) ist ein spezielles Zeichen, in userem Fall zwei, die als Ersatz für ein unbekanntes Zeichen intepretiert werden. Die SuperCom Funktion nutzt die Zeichen "\?" für den "Ein-Zeichen Wildcard". Eine Startsequenz könnte z.B. "H\?llo" definieren. Diese Sequenz belegt im Speicher 6 Bytes, die damit definierte Startsequenz ist jedoch nur 5 Bytes lang. Hier wurde der Wildcard an Position 2 gesetzt. Das bedeutet wir erwarten in Position 2 jedes beliebige Zeichen. Diese Startsequenz liefert bei "Hello", "Hallo", usw.
Wertebereiche
In manchen Fällen sind die zu erwartenden Bytes eines Triggers bekannt bestehen jedoch aus einen Satz von Werten (set) oder aus einem Bereich von Werten (range). Diese
Konstellation kann mit der Sequenz \[] beschrieben werden. Einzelne Werte werden, innerhalb der eckigen Klammern, durch ein ',' getrennt aufgelistet und Bereiche mit Anfang- und Endwert getrennt durch '..'.
Beispiele
Der Trigger "\[1,2,3,a..z]" definiert ein einzelnes Zeichen im Trigger und meldet sobald das Zeichen '1', '2' oder '3' oder ein Zeichen aus dem Bereich 'a' bis 'z' empfangen wird.
Der Trigger "User\[1,2,3]" meldet sobald "User1", "User2" oder "User3" empfangen wird.
Der Trigger "User\[a..c]" meldet sobald "Usera", "Userb" oder "Userc" empfangen wird.
Der Trigger "User\[1,2,3,a..c]" meldet sobald "User1", "User2" oder "User3" oder "Usera", "Userb" oder "Userc" empfangen wird.
Der Trigger "User\[1,2]\[a..b]" meldet sobald "User1a", "User2a" oder "User1b" oder "User2b" empfangen wird.
Die Kombination von Wildcards und Wertebereiche ermöglicht komplexe Datenpakete zu filtern.
Die Datenpacket-Sammler Funktion ist so verlässlich, daß sogar ganze Protokolle darüber abgewickelt werden können. Einmal richtig konfiguriert arbeitet es zuverlässig und liefert die erwarteten Datenpakete, bei Bedarf auch per Event und Hintergrundbetrieb (RS_GetDataPacketEx).
Beispiel #2
C/C++ Beispiel
|
Info:
Um RS_WaitString herum wurden die speziellen Funktionen wie RS_GetDataPacket, RS_GetDataPacketEx, TriggerAdd, TriggerDel, TriggerSignaled, ... entwickelt. Alternativen um jedes mögliche Problem flexibel und mit excellenter Ausführgeschwindigkeit zu lösen.
Ähnlich einfach geht es über das ActiveX API und auch bei Klassen Bibliotheken:
Visual Basic Beispiel
|
Die Eigenschaften DPStart, DPEnd, DPLimitLen und DPTimeout definieren die Regeln für das Datenpaket und DPCollect aktiviert den Datenpaketsammler. Von nun an werden fortlaufend Datenpakete entsprechend den Regeln gesammelt und gemeldet. Für die Signalisierung wird die Ereignisfunktion OnDataPacket verwendet, welche auch die Datenpakete gleich mitliefert.
Die Eigenschaften DPStart, DPEnd können unabhängig voneinander und je nach Vorgaben definiert werden oder auch nicht (z.B. Start="at"CRLF, Ende=CRLF, wobei CR=Carriage Return, LF=Line Feed).
WildCards
Der Puffer für den DPStart im obigen Beispiel belegt im Speicher 5 Bytes, die damit definierte Startsequenz ist jedoch nur 4 Bytes lang. Hier wurde der Wildcard an Position 2 gesetzt. Das bedeutet wir erwarten in Position 2 jedes beliebige Zeichen. Diese Startsequenz liefert bei "at"CRLF, "aT"CRLF, "ax"CRLF, usw.
Zusätzlich zu den Wildcards können auch Wertebereiche definiert werden und somit komplexe Datenpakete gesammelt werden.
Der Datenpaketsammler wird komplett im Hintergrund ausgeführt. Dadurch kann die Anwendung andere Aufgaben nachgehen bis die entsprechende Ereignisse eintreffen und die Daten liefern. Eine automatische Paket Sammelmaschine einfach aktiviert!
Trigger (Auslöser Datenpaket)
In vielen Situationen sollte es das Kommunikationsmodul sein, daß schnell und direkt auf empfangene Daten reagiert. Die Anwendung kann sich anderen Aufgaben widmen bis die Kommunikationsdaten die Aufmerksamkeit verlangen.
Wie im folgenden Beispiel gezeigt wird, ist es einfach mit SuperCom auf bestimmte Daten (Trigger) per Ereignis (Event) zu reagieren:
C/C++ Beispiel
|
Ein Trigger ist also ein Datenpaket bzw. eine Zeichenkette.
WildCards
Nun ist nicht immer jedes Zeichen bekannt (z.B. Prüfsummenzeichen, Längenbyte, etc.). Da wird einfach für das betreffende Zeichen ein Wildcard gesetzt. Ein Wildcard ist ein spezielles Zeichen, in userem Fall zwei, die als Ersatz intepretiert werden. Die SuperCom Funktion nutzt die Zeichen "\?" als Wildcard. Der Puffer für den Trigger "H\?llo" belegt im Speicher 6 Bytes, der Trigger hat jedoch die Länge 5. Hier wurde der Wildcard an Position 2 gesetzt. Das bedeutet wir erwarten in Position 2 jedes beliebige Zeichen. Dieser Trigger meldet z.B. bei "Hello", "Hallo" usw. Ein zusätzliches kleines Handbuch behandelt dieses mächtige Trigger Helper API und zeigt auch Aspekte der Anwendungen von Trigger in Protokollen.
Zusätzlich zu den Wildcards können auch Wertebereiche definiert werden und somit komplexe Trigger verarbeitet werden.
SuperCom behandelt den Trigger intern nur im binären Modus. Dadurch werden nicht nur Zeichenketten sondern auch binäre Daten korrekt verarbeitet.
Diese Arbeitsweise entlastet die Anwendung sehr, da nicht ständig nach den empfangenen Daten geprüft werden muß. Sobald eine definierte Zeichenkette von SuperCom empfangen wird, signalisiert es die Anwendung per Ereignis (Event). Das Trigger-Ereignis EV_TRIGGER wird über die UserEventProc gemeldet.
Ähnlich einfach geht es über das ActiveX API .
Visual Basic Beispiel
|
Sobald eine definierte Zeichenkette (Trigger) empfangen wird meldet SuperCom das spezielle Ereignis SCOMM_EV_TRIGGER über die OnComm Event Funktion. Es können beliebige Zeichenketten (Trigger) für die Überwachung gesetzt werden und genauso einfach wieder entfernt werden.
WildCards
Für nicht bekannte Zeichen kann das Wildcard "\?" gesetzt werden z.B "H\?llo".
Zusätzlich zu den Wildcards können auch Wertebereiche definiert werden und somit komplexe Trigger verarbeitet werden.
Daten-Filter
Bestimmte Aufgaben erfordern die Filterung (Austausch oder entfernung von bestimmten Daten) des Datenstroms. Es ist aus vielen Gründen vorteilhaft, wenn diese Aufgabe im Kommunikationsmodul schnell und direkt bewältigt wird ohne Eingriff der Anwendung.
SuperCom bietet eine Daten-Filter Funktionalität für die Datenfilterung und -manipulation innerhalb der Datenkommunikation.
C/C++ Beispiel
|
Die Funktion ComFilterInit installiert die SuperCom Datenfilterung entsprechend den vordefinierten Regeln. Die gesamte Datenfilterung findet auf unterster Ebene während des Datenempfangs bzw. -versands statt. Dabei gibt es mehrere vordefinierte Regeln, welche über ComFilterInit eingestellt werden können. Die Anwendung erhält stets die netto Daten.
Visual Basic Beispiel
|
Die Eigenschaft DataFilter definieren die Regeln für die Datenfilterung.
Die gesamte Datenfilterung findet auf unterster Ebene während des Empfangs bzw. Versands statt. Dabei gibt es mehrere vordefinierte Regeln, welche über DataFilter eingestellt werden können. Die Anwendung erhält stets die netto Daten.
Ereignisse werden bei Bedarf kontinuirlich gemeldet. Die Anwendung ist stets darüber informiert welche Datei gerade übertragen wird und den Fortschritt.
Zusammenfassend
Die hier vorgestellten Werkzeuge bieten verschiedene Wege zur Problemlösung. Viele weitere Kombinationen sind ebenfalls möglich. Das Handbuch bietet hierzu reichlich information und bei gezielten Anfragen zeigen unsere techniker gerne weitere Lösungsmöglichkeiten auf.
Intelligente Funktionen lösen komplizierte Aufgaben. Das was man von einem professionellen Tool erwartet.
Eine DUAL API SuperCom software ermöglicht eine noch bessere Anwendung der hier vorgestellten Werkzeugen. Es erlaubt, unter anderem, den Aufruf von Funktionen aus dem ActiveX API und DLL API je nach Bedarf.
Vielseitigkeit
SuperCom ist weiterhin das einzige Toolkit, daß die unterschiedlichsten Entwicklungsumgebungen unterstützt. Es ist nicht, wie üblich, an eine Entwicklungsumgebung festgebunden. Der Entwickler hat die Freiheit seine Entwicklungsumgebung bzw. den Compiler nach seinem aktuellem Bedarf auszuwählen. Das bedeutet eine enorme Zeit- und Kostenersparnis für die Entwicklungsabteilung.
Als SuperCom Kunde, können Sie uns einfach kontaktieren und schnell die geeignete Funktion, Parameter-Definition für eine Funktion, Trigger-Einstellung usw. erfragen. Wir sagen Ihnen schnell ob und wie eine geeignete Funktion aufgerufen werden muss, um bestimmte Daten (-Pakete) fehlerfrei zu empfangen.