Serielle Kommunikation Bibliothek und Komponente für rs-232, tcp/ip Kommunikation. Datenübertragung und Dateiübertragungs-Protokolle ZMODEM, YMODEM,XMODEM, KERMIT, MODBUS, 3964, RK512, LSV2. Unterstützt Entwicklung mit Visual Studio für NET, C#, VB Net, Klassen bibliothek, C++ Builder, Delphi, Visual Basic.

Datenübertragung und Dateiübertragungs-Protokolle ZMODEM, YMODEM,XMODEM, KERMIT, MODBUS, 3964, RK512, LSV2. Unterstützt Entwicklung mit Visual Studio für NET, C#, VB Net, Klassen bibliothek, C++ Builder, Delphi, Visual Basic. Serielle Kommunikation Bibliothek und Komponente für rs-232, tcp/ip Kommunikation.

SuperCom's Smart Path
Datenfilterung, Packetauswertung, Empfang von Datenpaketen und Telegrammen, ...

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).

 

Packetauswertung (DataPacket)
Komplette Telegramme automatisch im Hintergrund empfangen
Ein häufiges Problem der Datenkommunikation ist der Empfang von kompletten Datenpaketen (Telegrammen) gemäß Definitionen. Für diese nicht selten komplexe Aufgabe bietet SuperCom einfach zu nutzende Funktionen. Die Suchzeichenketten (Definitionen) könen z.B. Anmeldezeilen beschreiben ("UserName:", "Password:") oder Telegramme im Datenstrom. Das folgende einfache Beispiel demonstriert die Aufzeichnung von Telegrammen gekennzeichnet durch STX und ETX:

DLL API

C/C++ Beispiel

  char cStart=STX; // Beginn Sequenz
  char cStop =ETX; // End Sequenz

     :

  if (DP_OK(RS_GetDataPacket(
                 szBuffer,
                 BufLen,       // Pufferlänge
                 cStart,       // beginnt mit
                 sizeof(cStart),
                 cStop,        // ended mit
                 sizeof(cStop),
                 0, // liefert alles was empfangen wurde
                 &TimeOut))
  {
     :
  }

     :

  C/C++    C#    Delphi    Visual Basic

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

     :
  char cBuffer[1024];
  DWORD dwDataCount=sizeof(cBuffer);
  TSYSTIME TimeOut=SEC_10;
     :

  sLineEnd = "\r\n"; // CRLF
  dwLen = (DWORD)strlen(pLineEnd);
  dwRes = RS_WaitString(Com,
                        cBuffer,      // Puffer
                        &dwDataCount, // Anzahl der erwarteten Zeichen
                        sLineEnd,
                        dwLen,
                        &TimeOut,
                        WSCF_BINARY);
     :

  C/C++    C#    Delphi    Visual Basic

 

Die Funktion RS_WaitString demonstriert einen weiteren Weg um komplette Zeichenketten oder Telegramme zu empfangen. RS_WaitString wartet hier auf den Empfang einer Zeile, die mit CRLF ended. Sollte innerhalb der angegebenen Timeout Zeit kein Zeilenende eintreffen, endet die Funktion und liefert alle empfangen Zeichen in cBuffer.

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:

 

Auswahl, Beispiel: einfach oder mit Wildcards
Visual Basic Beispiel


     SCom1.DPStart = "at" & vbCr & vbLf
     SCom1.DPStop = vbCr & vbLf

     SCom1.DPTimeout = 3 * SEC_1
     SCom1.DPLimitLen = 10

     SCom1.DPCollect = True


  C/C++    C#    Delphi    Visual Basic

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:

DLL API

C/C++ Beispiel

     :
  pTrigger = "Username:|Password:";
  dwLen = (DWORD)strlen(pTrigger);

  TriggerAdd(Com, pTrigger, dwLen);

   C/C++    C#    Delphi    Visual Basic

Ein Trigger ist also ein Datenpaket bzw. eine Zeichenkette.

Die Anweisungen RS_WaitString* aktiviert im Beispiel einen merfachen Trigger. Von nun an überwacht SuperCom die empfangene Daten und sobald SuperCom die Zeichenfolgen "UserName:" oder "Password:" erkennt wird ein Ereignis (Event) ausgelöst und die Anwendung informiert. Da keine weiteren Optionen angegeben wurden wird die Klein- bzw. Großschrift nicht beachtet.

 *  Um den Aufruf von RS_WaitString zu vereinfachen, wurde die Trigger Helper API mit Funktionen wie TriggerAdd, TriggerDel, TriggerSignaled,... entwickelt.

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

     :
   SCom.Trigger="Username:|Password:"
   SCom.TriggerAction=SCOMM_TRIGGER_ADD
     :

  C/C++    C#    Delphi    Visual Basic

 

Die Eigenschaft Trigger definiert ein Datenpacket, daß als Auslöser für eine Aktion dienen kann. Die Eigenschaft TriggerAction definiert was mit dem Trigger geschehen soll (z.B. ADD = überwachen und melden). Im obigen Beispiel werden fortlaufend "Trigger" Ereignisse gemeldet, sobald SuperCom die Zeichenfolgen "UserName:" oder "Password:" empfängt.

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.

DLL API

C/C++ Beispiel

     ComFilterInit(..., FLAG_DATA_FILTER_RX_STRIP_NULL |
                        FLAG_DATA_FILTER_TX_STRIP_NULL);
     :
  C/C++    C#    Delphi    Visual Basic / VB Net  

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.

Eigene Rx und Tx Funktionen
Das SuperCom DLL API ermöglich zusätzlich benutzereigene Rx und Tx Funktionen im SuperCom Funktions-Stapel einzubinden und dadurch eigene Algorithmen (z.B. Datenfilterung, -überwachung, -manipulation, -sammlung) auf unterster Ebene automatisch durchzuführen.

 

ActiveX API

Visual Basic Beispiel

     SCom1.DataFilter=FLAG_DATA_FILTER_RX_STRIP_NULL

  C/C++    C#    Delphi    Visual Basic  

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.

 

File Transmission Queue
Dateien komplett im Hintergrund übertragen lassen
SuperCom Funktionen wie RS_TXFileEx ermöglichen Dateien, über interne Warteschlangen, komplett im Hintergrund übertragen zu lassen. Ein einfacher Funktionsaufruf und der Rest wird von SuperCom im Hintergrund abgewickelt. Die Anwendung kann sich solange anderen Dingen widmen.

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.

Hilfe!

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.


Home   Back

Daten Kommunikation Software und ActiveX Kommunikations Bibliotheken und Komponenten
It Simply Works!

Updated on: 2024-03-19 12:00:15

ADONTEC Computer Systems GmbH, Hölderlinstr. 32, D-75433 Maulbronn,
Tel: 07043/9000-20, Fax: 07043/9000-21