Dokumentation zur DFComDLL.dll 
(Vers. 04.01.01)

Inhalt:

1

Einleitung

1.

1

Kanal und Busnummer ?

1. 1. 1

Kanal

1. 1. 2

Busnummer

1.

2

Programmaufbau

1.

3

Versionsänderungen

1.

4

Funktionsweise der DLL

1.

5

Allgemeine Hinweise

1. 5. 1

Listen

1. 5. 2

Datentypen

1. 5. 3

Fehler

1. 5. 4

Hintergrundloggen

1. 5. 5

Uhrzeit stellen

2

Exportierte Funktionen

2.

1

Allgemeine Funktionen

2. 1. 1. 1

DFCComInit

Serielle Schnittstelle für AEIII+ initialisieren.
2. 1. 1. 2

DFCComOpenSerial

Serielle Schnittstelle für AEIII+ initialisieren.
2. 1. 1. 3

DFCComOpen

TCP/IP - Schnittstelle für AEIII+ initialisieren.
2. 1. 1. 4

DFCComOpenSocket

TCP/IP - Schnittstelle für AEIII+ initialisieren.
2. 1. 2

DFCComOpenIV

Serielle oder TCP/IP sowie Funkschnittstelle für PZE Master IV initialisieren.
2. 1. 3

DFCComClose

Zuvor geöffnete Schnittstelle schließen.
2. 1. 4. 1

DFCCheckAE

Erreichbarkeit prüfen.
2. 1. 4. 2

DFCCheckDevice

Erreichbarkeit prüfen.
2. 1. 5

DFCComSetTime

Datum und Uhrzeit schreiben.
2. 1. 6

DFCComGetTime

Datum und Uhrzeit lesen.
2. 1. 7

DFCComSendMessage

Anzeigemeldung senden.
2. 1. 8

DFCComSendInfotext

Hintergrundmeldung senden.
2. 1. 9

DFCGetSeriennummer  

Seriennummer lesen.
2. 1. 10. 1

DFCLogOn

Nicht weiter verwenden.
2. 1. 10. 2

DFCSetLogOn

Protokollierung einschalten.
2. 1. 11. 1

DFCLogOff

Nicht weiter verwenden.
2. 1. 11. 2

DFCSetLogOff

Protokollierung ausschalten.
2. 1. 12

DFCSetCallBack

Rückruffunktion bekannt geben.
2. 1. 13

DFCSetLogFileName

Name der Protokollierungsdatei setzen.
2. 1. 14

DFCGetErrorText

Fehlernummer zu Fehlertext umsetzen.
2. 1. 15

DFCSetGlobVar

Wert einer Variablen ändern.
2. 1. 16

DFCGetGlobVar

Wert einer Variablen ermitteln.
2. 1. 17

DFCCloseRelay

Relais für bestimmbare Zeit schließen.
2. 1. 18

DFCGetRelayState

Relaiszustand abfragen.
2. 1. 19

DFCOpenRelay

Relais öffnen.
2. 1. 20

DFCGetDevicePollRetry

Anzahl Ermittlungsversuche ermitteln.
2. 1. 21

DFCGetComPort

Rückgabe des Schnittstellenhandle.
2. 1. 22

DFCSetComPort

Setzen des Schnittstellenhandle.
2. 1. 23

DFCWrite

In den Kanal schreiben.
2. 1. 24

DFCRead

Aus dem Kanal lesen.
2. 1. 25

DFCUpload

Gerätedaten (Firmware) laden.
2. 1. 26

DFCGetVersionFirmware

Version der Gerätesoftware lesen.
2. 1. 27

DFCGetVersionFirmwareFromFile

Version der Gerätesoftware lesen.

2.

2

Funktionen für Setup

2. 2. 1

DFCSetupLaden

Setupdatei zum Gerät übertragen.
2. 2. 2

DFCDownload

Setupdaten aus Gerät in Datei schreiben.

2.

3

Funktionen für Daten

2. 3. 1

DFCComClearData

Datenzeiger im Gerät zurücksetzen.
2. 3. 2

DFCComCollectData

Datenabholvorgang starten.
2. 3. 3

DFCComGetDatensatz

Datensatz ermitteln.
2. 3. 4

DFCLoadDatensatzbeschreibung

Datensatzbeschreibungen aus Gerätesetup ermitteln.
2. 3. 5

DFCDatBCnt

Anzahl ermittelter Datensatzbeschreibungen.
2. 3. 6

DFCDatBDatensatz

Grunddaten einer ermittelten  Datensatzbeschreibung erhalten.
2. 3. 7

DFCDatBFeld

Grunddaten eines ermittelten  Datensatzbeschreibungsfeldes erhalten.
2. 3. 8

DFCReadRecord

Nächsten anstehenden Datensatz lesen.
2. 3. 7

DFCQuitRecord

Zuvor gelesenen Datensatz quittieren (löschen).

2.

4

Funktionen für Listen

2. 4. 1

DFCMakeListe

Rohdaten einer Liste importieren.
2. 4. 2

DFCLoadListen

Importierte Listendaten in Gerät schreiben.
2. 4. 3

DFCClrListenBuffer

Listenspeicher für Import löschen.
2. 4. 4

DFCLoadListenbeschreibung

Listenbeschreibungen aus Gerätesetup ermitteln.
2. 4. 5

DFCListBCnt

Anzahl ermittelter Listenbeschreibungen.
2. 4. 6

DFCListBDatensatz

Grunddaten einer ermittelten Listenbeschreibung erhalten.
2. 4. 7

DFCListBFeld

Grunddaten eines ermittelten Listenbeschreibungsfeldes erhalten.

2.

5

Funktionen für Zutrittskontrolllisten (Version 1)

2. 5. 1

DFCMakeEntranceList

Rohdaten einer Liste importieren.
2. 5. 2

DFCLoadEntranceList

Importierte Listendaten in Gerät schreiben.
2. 5. 3

DFCClearEntranceListBuffer

Listenspeicher für Import löschen.

2.

6

Funktionen für Zutrittskontrolllisten (Version 2)

2. 6. 1

DFCMakeEntrance2List

Rohdaten einer Liste importieren.
2. 6. 2

DFCLoadEntrance2List

Importierte Listendaten in Gerät schreiben.
2. 6. 3

DFCClearEntrance2ListBuffer

Listenspeicher für Import löschen.

3

Datenstruktur

3.

1

Aufbau der Datensätze im Bytearray

3.

2

Datum und Uhrzeit im Bytearray


1     Einleitung

Die DLL "DFComDLL.dll" stellt die grundlegenden Funktionen für die Kommunikation über RS232 bzw. RS485 sowie TCP / IP zur Verfügung. Sie wird ab Version 2.0.0 vom AESetup zu 100% verwendet. Die vorhandenen AEIII+ Techniken wurden auf die PZE Master IV Hardware übertragen, welche durch eine spezielle Initialisierungsroutine angesprochen werden kann.

1.1     Kanal und Busnummer ?

Multithreading ist auf einem Kanalobjekt nicht erlaubt. Pro Kanal nur ein Thread !!

Abbildung 1

 

Die Abb. 1 zeigt einen möglichen Hardwareaufbau mit Datafox - Geräten. Dieses Beispiel soll der Verdeutlichung der Begriffe Kanal und Busnummer dienen.  Die Kanalnummer (ChannelID) ist vergleichbar mit einem Straßennamen. Die Busnummer (DeviceID) ist vergleichbar mit der Hausnummer eines Gebäudes (wird im RS485-Netzwerk verwendet). Im abgebildeten Beispiel gibt es insgesamt drei Kanäle (ChannelIDs)

Ein Gerät der Abb.1 kann über folgende Wertangaben (Adresse) eindeutig identifiziert werden: 
Für das Gerät A lautet die Adresse:  Kanal: 1, Busnummer: 1 
Für das Gerät C lautet die Adresse:  Kanal: 1, Busnummer: 3
Für das Gerät D lautet die Adresse:  Kanal: 2, Busnummer: 1
Für das Gerät F lautet die Adresse:  Kanal 3, Busnummer: 254, IP: 192.168.123.2, Port: 8000 **
**(Sonderfall: Busnummer immer 254)

Um Informationen an die Geräte zu schicken ist es notwendig, dass der jeweilige Kanal (ChannelID) zuvor geöffnet wurde. In Analogie zum Strassenbeispiel würde dies geöffneten Bahnschranken entsprechen. 

Es ist nicht notwendig jedes Mal den verwendeten Kanal (ChannelID) zu schließen, wenn die Kommunikation mit einem Gerät beendet wurde (eine Bahnschranke wird ebenfalls nicht nach jedem durchgefahrenen Auto geschlossen). Die Kommunikationskanäle können beim Start des Programms geöffnet werden (siehe 1.2 Programmaufbau). Ein Schließen der Kommunikationskanäle (ChannelIDs) ist normalerweise erst bei Programmbeendigung notwendig oder wenn es gewisse Situationen erfordern. 
Notwendig ist das Schließen eines Kanals nach der Kommunikationsunterbrechung bei TCP/IP -Verbindungen,  Modemverbindungen. 

 

1.1.1     Kanal

Die Kanalnummer (ChannelID) ist vergleichbar mit einem Strassennamen. Jedes Gerät gehört genau zu einem Kommunikationskanal. Die Anzahl der möglichen Kanäle ist auf maximal 250 festgelegt (erlaubter Wertebereich: 1-250). Pro Kanal ist eine Geräteanzahl (siehe Busnummer) von 1..n Einzelgeräten (Endgeräten) möglich. Die maximale Anzahl n  (max. sind 31 Geräte pro Kanal möglich) wird von dem gewählten Verbindungsschema (siehe Abb.1) bestimmt.      

 Tabelle 1
 Verbindungsschema  Verbindungsart  von - auf  max.
 Anzahl
 Geräte
 pro
 Kanal
 zu verwendende
 Busnummern
 bei
 Funktionsaufrufen
  RS232 RS232  direkt   RS232-RS232  n = 1  immer mit 254 !!
  RS232 RS485  über Umsetzer       RS232-RS485  n = 31  von 1 bis 31
  TCP/IP TCP/IP  direkt  TCP/IP-TCP/IP  n = 1  immer mit 254 !!
  TCP/IP RS485  über COM-Server  TCP/IP-RS485  n = 31  von 1 bis 31
  TCP/IP RS232  über COM-Server  TCP/IP-RS232  n = 1  immer mit 254 !!

 

1.1.2     Busnummer

Die Busnummer (DeviceID) ist vergleichbar mit der Hausnummer eines Gebäudes. Diese Nummer wird zur Adressierung eines bestimmten Gerätes benötigt. In RS485 Netzwerken (Bussystemen) benötigt jedes Endgerät eine eindeutige Nummer. Diese Nummer (Busnummer) wird an jedem Gerät in dessen BIOS eingestellt. Die maximale Anzahl ist auf 31 Geräte begrenzt (erlaubte Busnummern: 1-31und 254*).

Die Busnummer 254 hat eine besondere Bedeutung. Sie darf nicht in RS485 Netzwerken verwendet werden. Über diese Busnummer ist jedes Gerät im RS232 Modus ansprechbar. Wenn kein RS485 Bus angesprochen wird ist bei Funktionsaufrufen (wenn nötig) für die Busnummer (DeviceID) immer 254 anzugeben.

 

  Die Einstellung der Busnumme ist ab der Firmware Version 04.00.21 des PZE Masters IV nur noch möglich:
wenn das Gerät mit der RS485 Option ausgestattet ist
wenn im BIOS unter communication / interface die RS485 Kommunikation für das Gerät gewählt wurde
    
Wird  nicht die Kommunikationsart RS485 (ab der Firmware Version 04.00.21 des PZE Master IV) gewählt, ist die Busnummer des Gerätes automatisch 254.

 

1.2  Programmaufbau


Abbildung 2

Das nebenstehende Schema (Abb.2) zeigt eine mögliche Grundstruktur für ein Programm, für den in Abb.1 gezeigten Hardwareaufbau. Prinzipiell sollte ein Programmierprojekt wie im nebenstehenden Schema aufgebaut sein. 
Nach dem Start des Programms werden alle benötigten Kanäle (ChannelIDs) initialisiert. Im Normalfall ist es völlig ausreichend wenn bei Beendigung des Programms die geöffneten Kanäle (ChannelIDs) geschlossen werden. Nach der Initialisierung der Kanäle können die Endgeräte beliebig oft angesprochen werden.
Eine erneute Initialisierung wäre nur im Falle einer Kommunikations- unterbrechung notwendig. Hierzu ist der betroffene Kanal erst einmal explizit mit der Funktion DFComClose zu schließen. Erst nach dem Schließen des Kanals ist es zulässig mit einer Initialisierungsfunktion diesen wieder zu öffnen.

 

Mit der Funktion DFCGetComPort hat man zum Beispiel die Möglichkeit zu überprüfen ob eine bestimmte Kanalnummer (ChannelID) bereits geöffnet wurde (bzw. noch geöffnet ist). 

Cpp Beispiel: Überprüfen ob der Kanal 2 geöffnet ist

if ( DFCGetComPort( 2 )  != -1) { 
   printf ( "Kanal 2 bereits geöffnet.\n" );
  }
 else { 
   printf ( "Kanal 2 nicht geöffnet.\n" ); 
  }

 

 

1.3     Versionsänderungen

Datum Version Änderungen
08.12.01 1.1.0 Funktionen für Listen aufgenommen.
26.01.02 1.1.c Fehler beim lesen von großen Datenmengen beseitigt.
12.02.02 1.1.e Fehler beseitigt wenn im Gerät kein Datensatz. Neu: Datum/Uhrzeit lesen.
29.04.02 1.1.f Funktion „DFCComSendInfotext“ aufgenommen.
14.06.02 1.1.g Erzeugung der Log-Datei abgeschaltet.
04.07.02 1.1.h Log-Datei kann mit den Funktionen DFCLogOn, DFCLogOff ein- / ausgeschaltet werden.
09.09.02 1.1.i Datensatzbeschreibung und Listenbeschreibung aus dem Gerät auslesen.
09.10.02 1.1.j Prüfen ob Gerät erreichbar. Lesen der Seriennummer und übertragen einer Setupdatei.
 Version 2
21.02.03 02.00.00 Kontrollierter Abschluss der ersten Technik. Einleitung einer neuen Technik, mit Datensatzweisen lesen, Setupdaten aus Gerät lesen und Rückruffunktion.
24.02.03 02.00.01 Entfernen des Fehlers bei Setup laden unter Win9X und WinMe.
01.03.03 02.00.02 Unterstützung von Firmwareständen unter FW 2.0. Auch alte Datensatztechnik.
27.03.03 02.00.03 Abgleichen der Exportschnittstelle zu Talk. Unterstützung von FW >= 3.0
13.05.03 02.00.04 Setzen und lesen der Globalen Variablen durch DFCSetGlobVar und DFCGetGlobVar hinzugefügt.
20.05.03 02.00.05 Schließen, Zustandsabfrage und öffnen des internen und der IOModule - Relais. Importieren und laden der Listendaten für Zutrittskontrolle.
11.06.03 02.00.06 Unterstützung von AESetup unter 02.00.00
15.07.03 02.00.07 Kommunikation mit alter Firmware (V1.14) gefestigt.
07.08.03 02.00.08 DFCComSetTime überarbeitet. Parameter von Gerät bleiben nach manueller Änderung und Setupeinspielung erhalten.
11.08.03 02.00.09 Geräteparameter "Tastenton" hinzugefügt, wobei die anderen vom Setupprogramm nicht einstellbaren Parameter ab Firmwareversion 3.1.2 behalten werden.
05.09.03 02.00.10 Die Funktion DFCComOpenIV zum Ansprechen von "PZE Master IV" - Geräten hinzugefügt.
12.09.03 02.00.11 Fehlermapping für PZE Master IV überarbeitet. Überarbeitung der Funktion DFCSetupLaden um die globalen Variablen durch die Setup - Daten mit standardwerten zu belegen. (ab Setup V03.01.07)
16.09.03 02.00.12 Bugfix von DFCSetupLaden und Einbau von TCP/IP in DFCComOpenIV.
17.09.03 02.00.13 Änderung um Firmwaredateien für PZE Master IV über TCP/IP einzuspielen.
29.09.03 02.00.14 DLL - Projekt auf Linux (SuSE 7.3) portiert. 
24.10.03 02.00.15 Hindergrundloggen aller Funktionsaufrufe eingeführt.
08.12.03 02.00.16 DFCSetGlobVar und DFCGetGlobVar für AESetup überarbeitet.
29.01.04 02.00.17 Überarbeitung der DFCMakeEntranceList und DFCLoadEntranceList - Funktionen, da die Personalnummer im Personalstamm von 12 auf 13 Stellen erhöht wurde.
24.02.04 02.00.17 Erweiterung der Dokumentation um die Funktionen DFCGetComPort und DFCSetComPort.
29.04.04 02.00.18 DFCWrite, DFCRead, DFCUpload hinzugefügt und bei der Kommunikation mit den PZE Master IV - Geräten die Größe der Datenpakete erhöht.
DFCGetVersionFirmware hinzugefügt, wird unterstützt ab Firmware 04.00.19
20.07.04 02.00.19 Fehler bei interner Sortierung des Zutrittspersonalstammes bereinigt.
Die Kanalklassenanzahl ist von 10 auf 250 erhöht worden.
Die Listendaten werden bei PZE Master IV ab FW 04.00.21 im Hintergrund geladen.
08.10.04 02.00.20 Fehlerbereinigung; bei unaufgeführten internen Kommunikationsversionsnummern, wurde immer der Fehler (Gerät antwortet nicht) geliefert, obwohl der Befehl eigentlich nicht vom Gerät unterstützt wurde. 
Abfrage der Firmwareversion mit DFCGetFirmwareVersion nun auch beim AEIII+ möglich. 
DFCComInit
größer COM9 möglich.
02.02.05 02.00.21 Die Funktion DFCGetFirmwareVersionFromFile zum auslesen der Firmwareversion aus einer Gerätedatei hinzugefügt. 
Bootloaderversion 2.2 wird unterstützt.
18.02.05 02.00.22 Die Listengröße ist auf ca. 256kByte erhöht worden. Die Listendaten können in dieser Größe mit der Funktion DFCMakeListe importiert werden. Beim Einspielen der Listendaten mit DFCLoadListen wird aufgrund der Firmwareversion eventuell der Fehler 13 zurückgeliefert, dann wird die Listengröße von der Firmwareversion nicht unterstützt.

Die Funktionen DFCListBDatensatz, DFCListBFeld wurden so überarbeitet, daß auch die Struktur der Zutrittskontrolllisten Version 1 abgefragt werden kann.

02.03.06 02.00.23 Die Funktionen DFCReadRecord, sowie DFCQuitRecord wurden nach aussenhin freigelegt. Die Funktionen DFCComCollectData und DFCComGetDatensatz verwenden diese intern und können durch diese ersetzt werden.
 Version 4.1 Es gibt weder Version 3.x noch 4.0, es wurde aufgrund der Versionsgleichheit mit  Firmware / AESetup darauf verzichtet.
beta 04.01.01 Funktionen für die Zutrittskontrolle Version 2 hinzugefügt:
DFCClearEntrance2ListBuffer, DFCMakeEntrance2List, DFCLoadEntrance2List

Die Funktionen DFCListBDatensatz, DFCListBFeld wurden so überarbeitet, daß auch die Struktur der Zutrittskontrolllisten Version 1 / Version 2 abgefragt werden kann.

Vorbereitende Maßnahmen für BDE Master IV.

 

1.4     Funktionsweise der DLL

Die DLL ist als Schnittstelle zwischen einer Anwendung und dem AEIII+ / PZE Master IV zu sehen. Alle Befehle werden von der Anwendung an die DLL gerichtet (AESetup ab Version 02.00.00), dort verarbeitet und gegebenenfalls an das anzusprechende Gerät weitergeleitet.

Behandlung von Datensätzen
Zunächst muss die Schnittstelle mit einer der Funktionen DFCComOpenSerial oder DFCComOpenSocket sowie DFCComOpenIV initialisiert werden. Danach wird mit der Methode DFCComCollectData das Gerät mit der angegebenen Busnummer bekannt gegeben und der erste Datensatz (oder alle Daten, je nach Firmwareversion) aus dem Gerät gelesen. Die Funktion DFCComGetDatensatz bestätigt dann den letzten gelesenen Datensatz und liefert den nächsten anstehenden, so werden einzelne Datensätze aus dem Gerät an die Anwendung zurückgegeben. 
Online Datensätze werden vorrangig behandelt, wobei der nächste Datensatzzustand nur von der DFCComCollectData - Funktion als Rückgabewert bekannt gegeben wird. Es kann während der Kommunikation kein Datensatz verloren gehen, bei einer Störung während der Kommunikation kann es jedoch vorkommen das ein Datensatz zweimal ausgelesen wird (Aussage gilt für Firmwareversion > 2.0).

Die Datensätze werden ab der Firmwareversion 03.01.20 beim AEIII+ sowie 04.00.21 beim PZE Master IV in der chronologischen Reihenfolge geliefert. Die Onlinedatensätze werden nicht mehr während dem abholen von offline Datensätzen zwischengeschoben.

 

Anmerkung zur Datensatz- und Listenbeschreibung (Tabellendefinitionen)
Es können gleichzeitig mehrere Verbindungen, so genante Kanäle,  zu verschiedenen Schnittstellen aufgebaut werden. Für jeden Kanal wird ein eigener interner Speicherbereich benutzt, der jedoch die Datensatzbeschreibungen und Listenbeschreibungen des zuletzt ausgelesenen Gerätes (mit DFCLoadDatensatzbeschreibung und DFCLoadListenbeschreibung) vorhält. Wenn Sie demnach verschiedene Setupkonfigurationen in den Geräten verwenden, ist eine Aktualisierung der Datensatz- und Listenbeschreibungen erforderlich. 
Bei offen gehaltenen Kanälen ist folgendes zusätzlich zu beachten.
Wenn die Verbindung zwischen der DLL und ihrem Verbindungspartner unterbrochen wird, dann sollte dieses durch die Fehlerbehandlung auf folgende Weise abgefangen werden (siehe auch 1.2 Programmaufbau). 

 

 

1.5     Allgemeine Hinweise

Der C-Compiler dekoriert die in den Funktionsprototypen angegebenen Namen. Vor den Namen wird das Zeichen "_" gesetzt und an den Namen wird die Anzahl der übergebenen Parameter in Längen - Byte durch "@" getrennt angehängt. Zusätzlich zum Funktionsprototyp werden daher auch die dekorierten Namen angegeben. Sie werden z.B. bei Verwendung von Visual Basic oder Delphi zum Import benötigt.

Beim Arbeiten mit der DLL ist es unter Umständen hilfreich, das Tool "Depends" oder "Dependency Walker" einzusetzen. So können alle in der DLL vorhandenen Funktionen und die erwarteten Parameterbytes angezeigt werden. Dieses Tool ist im Umfang von Visual Studio 6.0 enthalten. Dieser Export ist weiter unten bei jeder Funktion angegeben.

Die Datei DFComDll.lib muss in den Projekteinstellungen bei den Optionen "Link" in Visual C++ Projekten bei den Objekt / Bibliothek-Modulen eingetragen sein und beim Kompilieren des Projektes im Projektverzeichnis liegen (oder in dem in den Einstellungen eingestellten Pfad). Bei der Programmierung in C++ kann die Headerdatei aus dem Beispielcode verwendet werden. Auch für Visual Basic ist ein Modul mit den notwendigen Exportangaben vorhanden. 

 

1.5.1     Listen

Für die Listen ist in der DLL pro Kanal ein Puffer vorhanden. Mit der Funktion DFCClrListenBuffer wird der DLL - Puffer im entsprechenden Kanal gelöscht. Es ist nicht möglich einzelne Listen zu löschen. Es ist auch nicht möglich eine einzelne Liste "Nachzuladen".

Die Verarbeitung erfolgt in zwei Schritten. Zuerst wird der DLL interne Puffer durch einen Aufruf der Funktion DFCMakeListe für jede Liste mit Listendaten gefüllt. Danach werden die Listendaten durch Aufruf der Funktion DFCLoadListen in das Gerät übertragen. Zu beachten ist, dass alle im Setup definierten Listen nacheinander mit der Funktion DFCMakeListe in den Puffer der DLL übertragen werden. Durch Übertragung der Listendaten mit DFCLoadListen werden immer alle Listen auf einmal übertragen und alle alten Listen im Gerät automatisch gelöscht. 

Wenn eine Liste geändert werden soll, müssen alle Listen im Puffer gelöscht und neu erzeugt werden. Der DLL interne Puffer wird für jede "ComNum" getrennt geführt. Die Listendaten müssen daher auch für jede verwendete "ComNum" getrennt aufgebaut werden. 

Wenn an einer "ComNum" mehrere Geräte angeschlossen sind, die unterschiedliche Listen benötigen, müssen die Listendaten vor der Übertragung zu der entsprechenden Busnummer, deren Gerät eine unterschiedene Listenstruktur hat, neu in den Puffer der DLL geladen werden.

Ablauf des Listenladen:

Testsoftware für die Listen liegt in folgenden Dateien bei: 

Die Testliste besteht aus den 3 Namen: 
Mueller, Maier und Schmidt mit den Personalnummern: 101, 102 und 103.

 

1.5.2     Datentypen

Die Datentypen werden meist ohne Vorzeichenbehaftung genutzt ( unsigned ).
Es werden folgende Datentypen verwendet:

Type Beschreibung
int Ganze Zahl 4 Byte
char Ein Zeichen entspricht einem Byte
int* Zeiger auf einen int. Umfasst 4 Byte
char* Zeiger auf Zeichen (Array). Umfasst 4 Byte.
unsigned char* Zeiger auf Datenbyte (Array). Umfasst 4 Byte.

 

1.5.3     Fehler

Die meisten Funktionen bieten eine Fehlerauswertung über das Error Argument nach folgender Tabelle, nachdem sie mit einer "if (DFCxxx == 0)" Abfrage gescheitert sind. 
Folgende Fehler können im Error-Parameter auftreten:

Nummer
(in Var. "Error") 
Bedeutung
0 Kein Fehler angegeben.
1 CRC (Prüfsumme) von Daten falsch.
2 Serielle Schnittstelle kann nicht geöffnet werden.
z.B.: belegt durch anderes Programm oder Kanal.
3 Serielle Schnittstelle nicht geöffnet.
4 Allgemeiner Fehler bei Kommunikation mit AEIII+ / PZE Master IV.
5 AEIII+ / PZE Master IV antwortet nicht auf Anfrage.
6 Fehler beim Senden eingetreten.
7 Fehler beim Empfangen eingetreten.
8 Antwort vom falschen Gerät oder im Kontext nicht sinnvoll.
9 Die verwendete Busnummer ist ungültig. Wertebereich: (1 - 31, 254)
10 Kanalobjekt nicht vorhanden. Kanalobjekt nicht herstellbar. Wertebereich: (1 - 250)
11 Öffnen einer Datei gescheitert. Meist nicht vorhanden.
12 Falsches Format der Setupdaten. Meist bezieht sich dies auf das Setup.
13 Fehler bei Verarbeitung der Listendaten.
14 Firmwareversion vom anzusprechenden Gerät ist nicht Kompatible.
15 Es sind noch Datensätze im Gerät vorhanden, welche unbrauchbar würden.
16 Befehlsausführung wurde durch Anwender abgebrochen.
17 Es ist keine Datensatzbeschreibung im entsprechenden Kanal geladen.
18 Es ist keine Listenbeschreibung im entsprechenden Kanal geladen.
19 Fehler beim Programmieren des Flash, Firmware. 
20 Parameter einer Funktion außerhalb ihres Gültigkeitsbereiches.
21 Globale Variable nicht definiert.
22 Anfrage obwohl keine Daten.
23 Duplikat von Datensätzen abgefangen.
24 Gerätedatei nicht mit Bootloaderversion kompatible.
25 Firmwaredatei nicht mit Bootloaderversion kompatible.
26 Wert einer Variablen konnte nicht gesetzt werden.
27 Funktion steht im vorliegenden Fall nicht zur Verfügung.
28 Fehler in Applikationsschicht bei Befehlsausführung.
(Der Befehl wurde erfolgreich zwischen dem Gerät und der DLL übertragen, die geforderte Ausführung konnte jedoch nicht erfolgen. z. B. unterstützt das Gerät die geforderte Funktion nicht oder ist augenblicklich nicht bereit die Funktion auszuführen.)
29 Der Gerätetyp ist unbekannt. Update der Software erforderlich.
30 Bei Geräteupdate stimmt der Gerätetyp nicht mit dem der Gerätedatei überein. Kommt bei DFCUpdate zur Anwendung.
31 Gerätetyp stimmt nicht. 
z.B. Versuchtes Einspielen von Setupdatei für PZE - Master IV in BDE - Master IV
32 Die vorliegende Dateiendung wird nicht unterstützt.

 

1.5.4     Hintergrundloggen

In der DLL ist ein Logmechanismus für ein Hintergrundloggen eingebracht, welches alle Funktionsaufrufe in Dateien (Standard: YYYY_MM_DD_DFComDLL_channelID.log) die in einem angelegten Ordner (Standard: DFComLog) liegen schreibt. Dieses Hintergrundloggen ist Standardmäßig aktiviert und kann über die Initialisierungsdatei "DFCom.ini" gesteuert werden. Es werden die letzten fünf aufeinanderfolgenden Anwendungstage mitgeschnitten und die so gesammelten Daten umfassen im Mittel ein Datenvolumen von ca. 300MB.

Aufbau der Logeinträge
Durch den Dateinamen ist das Datum und der Kanal bekannt. Die Zeit des Funktionsaufrufes ist die erste Logangabe. Danach folgt durch Tabstopp getrennt der Funktionsname mit den jeweils übergebenen Parameterwerten. Als Abschluss wird der Rückgabewert (wenn vorhanden) in Klammern angegeben. Bei Parametern die über Zeiger bekannt gegeben werden, wie Fehlerobjekt oder Datenbuffer, werden immer die Übergebenen Werte nicht die Adresse mitgeschrieben. Wenn keine Werte Vorliegen werden trotzdem immer alle Tabstopp ausgegeben und es ist somit möglich die Datei für eine weitere Verarbeitung zu verwenden. In einer Eckigen Klammer wird nach setzen des Elapse - Schlüssels die Ausführungsdauer der Funktion angegeben, diese gibt an wie lange die DLL - Funktion für die Abarbeitung des Befehls benötigte (Stark abhängig von den verwendeten Schnittstellentimeouts).
 Beispiel: DFCom031023.log
11:14:57	DFCComOpenSerial	1	COM1	38400	150	(1) [0.1]
Initialisierungsdatei
Der zu Verwendende Dateiname lautet: DFCom.ini
Unter dem Sektionsnamen "Log" ist zum einen der Wert "Enable" zum gesamten aktivieren des Hintergrundloggens angebbar. Der Wert für "Path" gibt das Grundlegende Verzeichnis an und "Folder" das zu verwendende Unterverzeichnis, dieses wird wenn nicht bereits vorhanden angelegt. Der Wert für "Erase" gibt an ob die Veralteten Dateien (älter als vier Tage vom aktuellen) automatisch gelöscht werden. Bitte beachten Sie dass die Dateiverwaltung nach Abschalten manuell übernommen werden muss. Der Wert "Elapse" gibt an ob die Ausführungsdauer der Funktionen in eckigen Klammern hinter jedem Logeintrag ausgegeben wird, dabei hat dieser folgende Bedeutung [Sekunden.Hundertstel].

Bedeutung der Werte: 0=Aus, 1=An

 Beispiel:
[Log]
Enable=1
Path=.\
Folder=DFComLog
Erase=1
Elapse=0

 

1.5.1     Uhrzeit stellen

Die Uhr in den Terminals sollte regelmäßig gestellt werden, um Abweichungen zu vermeiden. Insbesondere, wenn mehrere 
Terminals verwendet werden.
Wir empfehlen die Uhr mindestens einmal pro Tag zu stellen. Der ideale Zeitpunkt dafür ist 4:00 Uhr, da hier dann bei Sommer-/Winterzeit gleich die Uhr richtig gestellt wird.
Das Terminal hat keine automatische Sommer-/Winterzeitumstellung. Hierfür ist die Anwendung verantwortlich. 
Es ist ggf. die automatische Sommer-/Winterzeitumstellung des Betriebssystems zu aktivieren.

Zum stellen der Uhr verwenden Sie die Funktion DFCComSetTime.

 

2.0     Exportierte Funktionen

Die nachfolgenden Funktionen werden von der DLL zur Verfügung gestellt.

2.1     Allgemeine Funktionen

Grundlegende Funktionen zum Verbindungsaufbau und Kommunikation sowie loggen des Verbindungsablaufs.

2.1.1.1     DFCComInit ( RS232 / RS 485 )

Ruft intern die Funktion DFCComOpenSerial auf.
Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration: 
extern "C" __declspec(dllexport)
int __stdcall DFCComInit(int iChannelNum);

Exportiert: _DFCComInit@4
Parameter: 
int iChannelNum Zu initialisierender Kanal der die Schnittstelle (COM1, COM2, ...), entsprechend seiner Nummer verwendet.
Rückgabewert: 
0 Fehler beim Initialisieren (siehe auch Fehlerbehandlung und Programmaufbau)
1 Schnittstelle initialisiert
Beschreibung: 
Initialisiert die serielle Schnittstelle ("COM1" - "COM4" oder "/dev/ttyS0" - "/dev/ttyS3") mit:
DFCComOpenSerial(iChannelNum, szCom, 38400, 150). Wobei szCom = "COM1" , usw.. ist.
Die Funktion muss bei Verwendung von RS232 bzw. RS485 erfolgreich aufgerufen werden, bevor mit den Kommunikationsfunktionen gearbeitet werden kann.

Ab der DLL - Version 04.01.00 wurde der Defaulttimeout von 150 auf 800 erhöht.

Achtung: 
Diese Funktion ist aufgrund des verwendeten Timeout's für Modemverbindungen nicht einzusetzen.

 

2.1.1.2     DFCComOpenSerial ( RS232 / RS 485 )

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration: 
extern "C" __declspec(dllexport) 
int __stdcall DFCComOpenSerial(int iChannelNum, char *szComPort, 
int iBaudRate, int iTimeOut);

Exportiert: _DFCComOpenSerial@16
Parameter: 
int iChannelNum Zu initialisierender Kanal. Wertebereich: (1 - 250)
char *szComPort Zeichenkette für die Schnittstelle. "COM1" .. "COM4", 
"/dev/ttyS0" .. "/dev/ttyS3"
int iBaudRate Übertragungsrate der Schnittstelle in Baud. (Standard: 38400bd) 
int iTimeOut TimeOut für Lesen von Schnittstelle in Millisekunden. (Standard: 800ms) Bei Modem min. 1500ms empfohlen.
Rückgabewert: 
0 Fehler beim Initialisieren (siehe auch Fehlerbehandlung und Programmaufbau)
1 Schnittstelle initialisiert
Beschreibung: 
Initialisiert den Kanal für die serielle Schnittstelle (COM1 - COM4).
Die Funktion muss bei Verwendung von RS232 bzw. RS485 erfolgreich aufgerufen werden, bevor mit den Kommunikationsfunktionen gearbeitet werden kann.

 

2.1.1.3     DFCComOpen ( TCP/IP )

Ruft intern die Funktion DFCComOpenSocket auf.
Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration: 
extern "C" __declspec(dllexport)
int __stdcall DFCComOpen(int iChannelNum, char *szHost);

Exportiert: _DFCComOpen@8
Parameter: 
int iChannelNum Nummer des Kanals. Wertebereich: (1 - 250)
Die Kanalnummer dient dazu die TCP/IP-Verbindung bei weiteren Befehlen zu identifizieren. Wenn auch gleichzeitig RS232-Verbindungen verwendet werden, darf sich die Nummer nicht mit einer verwendeten Com - Nummer überschneiden.

Beispiel: 
In einem Rechner werden COM1: und COM2: verwendet.
Dann sollten für TCP/IPVerbindungen die Nummern 3, 4, 5, ... 10 verwendet werden.
char *szHost IP-Adresse ( z.B. "192.168.123.99") oder Hostname.
Rückgabewert: 
0 Fehler beim Initialisieren (siehe auch Fehlerbehandlung und Programmaufbau)
1 Schnittstelle initialisiert.
Beschreibung: 
Initialisiert den Kanal für die Socket (TCP / IP) Schnittstelle zum Com - Server. mit:
DFCComOpenSocket(iChannelNum, szHost, 8000, 3000).
Die Funktion muss bei Verwendung von TCP / IP erfolgreich aufgerufen werden, bevor mit den Kommunikationsfunktionen gearbeitet werden kann.

Ab der DLL - Version 04.01.00 wurde der Defaulttimeout von 3000 auf 5000 erhöht.

Achtung: Nach einem Verbindungsabriss wird keine automatische Neuverbindung durchgeführt. Bitte beachten Sie hierzu die Fehlerbehandlung und unter Programmaufbau beschriebene Umsetzungslösung. 

 

2.1.1.4     DFCComOpenSocket ( TCP/IP )

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration: 
extern "C" __declspec(dllexport) 
int __stdcall DFCComOpenSocket(int iChannelNum, char *szRemoteIP, 
int iPortNum, int iTimeOut);

Exportiert: _DFCComOpenSocket@16
Parameter: 
int iChannelNum Nummer des Kanals. Wertebereich: (1 - 250)
Die Kanalnummer dient dazu die TCP/IP-Verbindung bei weiteren Befehlen zu identifizieren. Wenn auch gleichzeitig RS232-Verbindungen verwendet werden, darf die Nummer nicht mit einer verwendeten Com - Nummer identisch sein.

Beispiel: 
In einem Rechner werden COM1: und COM2: verwendet.
Dann sollten für TCP/IPVerbindungen die Nummern 3, 4, 5, ... 10 verwendet werden.
char *szRemoteIP IP-Adresse ( z.B. "192.168.123.99") oder Hostname.
int iPortNum Portnummer des COM - Server. W&T-Standard: 8000
int iTimeOut TimeOut für lesen von Schnittstelle in Millisekunden. (Standard: 5000ms)
Rückgabewert: 
0 Fehler beim Initialisieren (siehe auch Fehlerbehandlung und Programmaufbau)
1 Schnittstelle initialisiert.
Beschreibung: 
Initialisiert den Kanal für die Socket (TCP / IP) Schnittstelle zum Com - Server
Die Funktion muss bei Verwendung von TCP / IP erfolgreich aufgerufen werden, bevor mit den Kommunikationsfunktionen gearbeitet werden kann.

Achtung: Nach einem Verbindungsabriss wird keine automatische Neuverbindung durchgeführt. Bitte beachten Sie hierzu die Fehlerbehandlung und unter Programmaufbau beschriebene Umsetzungslösung. 

 

2.1.2     DFCComOpenIV ( RS232 / RS 485 / Funk( BIM2 ) / TCP-IP )

Achtung: 
Die Funktion initialisiert den Kanal zur Verwendung mit einem Multimaster - Protokoll. Sie können dadurch kein AEIII+ und PZE Master IV in ein und dem selben RS485 - Netzwerk betreiben, da dass AEIII+ mit einem zum PZE Master IV nicht kompatiblen Protokoll arbeitet!
Wird unterstützt ab Firmwareversion:
04.00.00
Deklaration: 
extern "C" __declspec(dllexport) 
int __stdcall DFCComOpenIV(int iChannelNum, int iBusNum, int iType, 
char *szComString, int iComValue, int iComTimeOut);

Exportiert: _DFCComOpenIV@24
Parameter: 
int iChannelNum Zu initialisierender Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer der DLL. (Multimasteransatz)
Wertebereich: (1 - 31, 254)
int iType Der zu verwendende Schnittstellentyp.
1 -> RS232 direkt oder über Umsetzter (RS232 <-> RS485)
2 -> Funk über den Umsetzer (RS232 <-> BIM2) ohne eigenen Kontroller.
3 -> TCP / IP - Verbindung.
char *szComString Je nach Schnittstellentyp:
1,2 -> Zeiger auf Zeichenkette für die Schnittstelle.
3 -> Zeiger auf Zeichenkette mit IP - Adresse oder Hostname.
int iComValue Je nach Schnittstellentyp:
1,2 -> Übertragungsrate der Schnittstelle in Millisekunden. 
          (Standard: 38400bd)
3 -> Portnummer des TCP / IP Anschlusses.
int iComTimeOut Je nach Schnittstellentyp:
1,2 ->Timeout für Lesen von Schnittstelle in Millisekunden.
          (Standard: 800ms) Bei Modem min. 1500ms empfohlen.
3 -> Timeout für Lesen von Socket in Millisekunden.
          (Standard: 5000ms)
Rückgabewert: 
0 Fehler beim Initialisieren (siehe auch Fehlerbehandlung und Programmaufbau)
1 Schnittstelle initialisiert.
Beschreibung: 
Initialisiert den Kanal. Je nach angegebenem Typ wird ein anderes Initialisierungsverfahren verwendet um die entsprechend nachfolgenden Funktionsaufrufe der exportierten Funktionen richtig umzusetzen.
Die Funktion muss aufgerufen werden, bevor mit den Kommunikationsfunktionen gearbeitet werden kann.

Achtung: Nach einem Verbindungsabriss (TCP / IP) wird keine automatische Neuverbindung durchgeführt. Bitte beachten Sie hierzu die Fehlerbehandlung und unter Programmaufbau beschriebene Umsetzungslösung. 

 

2.1.3     DFCComClose

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
void __stdcall DFCComClose(int iChannelNum);

Exportiert: _DFCComClose@4
Parameter: 
int iChannelNum Zu schließender Kanal. Wertebereich: (1 - 250)
Rückgabewert: 
keiner (siehe auch Fehlerbehandlung und Programmaufbau)
Beschreibung: 
Schließt den Kanal der seriellen Schnittstelle bzw. der TCP / IP - Verbindung.

 

2.1.4.1     DFCCheckAE

Ruft intern die Funktion DFCCheckDevice auf.
Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCCheckAE(int iChannelNum, int iBusNum);

Exportiert: _DFCCheckAE@8
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
Rückgabewert: 
0 Fehler bei Durchführung. Es ist kein Gerät mit dieser Busnummer erreichbar.
(siehe auch Fehlerbehandlung und Programmaufbau)
1 Die angegebene Busnummer ist erreichbar. 
Beschreibung:
Prüfen ob Gerät am Bus angeschlossen ist. Diese Funktion verwendet die DFCCheckDevice - Funktion.

 

2.1.4.2     DFCCheckDevice

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCCheckDevice(int iChannelNum, int iBusNum, 
int *piError, int iDevicePollRetry);

Exportiert: _DFCCheckDevice@16
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
int iDevicePollRetry Wiederholungen zur Erreichbarkeit.
Rückgabewert: 
0 Fehler bei Durchführung. Es ist kein Gerät mit dieser Busnummer erreichbar, dabei behält der Fehlercode seinen zuvor übergebenen Wert.
(siehe auch Fehlerbehandlung und Programmaufbau)
1 Die angegebene Busnummer ist erreichbar. 
Beschreibung:
Prüfen ob Gerät am Bus angeschlossen ist.

 

2.1.5     DFCComSetTime

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport) 
int __stdcall DFCComSetTime(int iChannelNum, int iBusNum, 
unsigned char *pucDateTime);

Exportiert: _DFCComSetTime@12
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
unsigned char *pucDateTime Zeiger auf das Datum - Uhrzeit - Feld von 7 Byte. 
Verwenden Sie eine DLL mit Versionsnummer größer 2.0.7 können Sie  hier NULL (Wert: 0) übergeben, wodurch die Routine das aktuelle Systemdatum und die aktuelle Systemzeit verwendet.
Rückgabewert: 
0 Fehler beim setzen der Uhrzeit.
1 Uhrzeit erfolgreich eingestellt.
Beschreibung: 
Stellt das Datum und die Uhrzeit des Gerätes.
 Beispiel:
27.02.1981 15:30:13
0 Jahreszahl Hunderter (0..255) 19
1 Jahreszahl Einer (0..99) 81
2 Monat (0..12) 2
3 Tag (1..31) 27
4 Stunde (0..23) 15
5 Minute (0..59) 30
6 Sekunde (0..59) 13
// Die Schnittstelle zum Gerät muss natürlich geöffnet
// worden sein.
unsigned char Buffer[7];

Buffer[0] = 19;
Buffer[1] = 81;
Buffer[2] = 2;
Buffer[3] = 27; // 27.02.1981 Datum
Buffer[4] = 15;
Buffer[5] = 30;
Buffer[6] = 13; // 15:30:13 Uhrzeit

// Auf Fehler wird hier nicht geprüft !!! (siehe Rückgabewert)
// Senden des DatumUhrzeit - Array 
// über Kanal 1 an Gerät mit Busnummer 2
DFCComSetTime(1, 2, Buffer);

 

2.1.6     DFCComGetTime

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCComGetTime(int iChannelNum, int iBusNum, 
unsigned char *pucDateTime);

Exportiert: _DFCComGetTime@12
Parameter: 
int iChannelNum  Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
unsigned char *pucDateTime Zeiger auf ein Feld von min. 7 Byte, in das Datum und Uhrzeit geschrieben wird.
Rückgabewert: 
0 Fehler beim lesen der Uhrzeit.
1 Uhrzeit erfolgreich gelesen und in Feld "Time" abgelegt.
Beschreibung: 
Liest Datum und Uhrzeit des Geräts.
Beispiel:
27.2.1981 15:30:13
0 Jahreszahl Hunderter (0..255) 19
1 Jahreszahl Einer (0..99) 81
2 Monat (0..12) 2
3 Tag (1..31)  27
4 Stunde (0..23) 15
5 Minute (0..59) 30
6 Sekunde (0..59) 13
// Die Schnittstelle zum Gerät muss natürlich geöffnet
// worden sein.
unsigned char Buffer[7];
Buffer[0] = 19;
Buffer[1] = 81;
Buffer[2] = 2;
Buffer[3] = 27; // 27.02.1981 Datum
Buffer[4] = 15;
Buffer[5] = 30;
Buffer[6] = 13; // 15:30:13 Uhrzeit

// Aktuelles Datum und Uhrzeit über Kanal 1 von Gerät
// mit Busnummer 2 ermitteln.
// Auf Fehler wird hier nicht geprüft !!! (siehe Rückgabewert)
DFCComGetTime(1, 2, Buffer); 

// Daten ausgeben. 
printf("Jahr: %02d%02d\n", Buffer[0], Buffer[1]);
printf("Monat: %02d\n",    Buffer[2]);
printf("Tag: %02d\n",      Buffer[3]);
printf("Stunde: %02d\n",   Buffer[4]);
printf("Minute: %02d\n",   Buffer[5]);
printf("Sekunde: %02d\n",  Buffer[6]); 

 

2.1.7     DFCComSendMessage

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCComSendMessage(int iChannelNum, int iBusNum,
unsigned char ucDelayTime, unsigned char ucAction,
unsigned char ucAudio, char *szMessage, int iLength);

Exportiert: _DFCComSendMessage@28
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum  Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
unsigned char ucDelayTime Dauer in Sekunden, während der die Meldung angezeigt werden soll. Beim AEIII+ kann durch Übergabe von 255 die Nachricht so lange angezeigt werden bis ein Bediener diese durch Enter oder ESC bestätigt.
AEIII+ Bereich (1 - 255)
AEIV Bereich (0 - 254)
unsigned char ucAction 0 - normal weiter.
unsigned char ucAudio 0 - kein Piepser,
1 - Einfachpiep,
2 - Doppelpiep.
char *szMessage Zeiger auf die darzustellende Zeichenkette. 
int iLength Zeichenlänge der Meldung. Maximal 242. 
(PZE Master IV, siehe Beschreibung)
Rückgabewert: 
0 Fehler beim Senden.
1 Meldung erfolgreich gesendet.
Beschreibung: 
Sendet eine Meldung an das Gerät mit der angegebenen Busnummer. Die Meldung kann zur optischen Quittierung der eingegebenen Benutzerdaten im Onlinebetrieb verwendet werden. Da die Meldung sich in die Bedienung des Gerätes integriert, steht sie maximal bis zur nächsten Eingabe zur Verfügung.

Nur AEIII+
Das AEIII+ kann pro Zeile maximal 19 Zeichen darstellen, das zwanzigste ist für die Laufleiste reserviert. Bitte beachten Sie, daß Sonderzeichen sowie Umlaute durch den vorgegebenen Displayzeichensatz nicht richtig dargestellt werden können.
Wenn Sie einen Zeilenumbruch erreichen möchten, füllen Sie die Anzeigezeile mit Leerzeichen auf 19 Zeichen auf, dadurch erfolgt ein automatischer Umbruch auf die nächste Zeile. Die Anzeige der Nachricht während sich das Gerät in einer Eingabekette befindet ist erst ab der Firmware mit Majorversion >= 2 möglich.

Nur PZE Master IV
Zeilenumbrüche müssen mit dem Zeichen (Dec. 13) eingefügt werden. 
Beim PZE Master ist durch den proportionalen Zeichensatz die Anzahl der Zeichen pro Zeile vom Zeileninhalt abhängig und die Zeile wird bei Randüberschreitung abgeschnitten.  

Die gesendete Zeichenfolge unterliegt folgender Aufteilung:

Kopfzeile 3\rKopfzeile 4\rBoxenüberschrift\rBoxenzeile 1\rBoxenzeile 2 usw...

\r muß hierbei durch ein Zeilenumbruch (Dec. 13) ersetzt werden. Wenn Sie keine Kopfzeilen wünschen, dann müßen Sie für jede Kopfzeile ein Leerzeichen mit folgendem Zeilenumbruch einfügen, damit die Aufteilung nach obigem Schema erfolgen kann. Das anzeigen von mehr als fünf Boxzeilen wird in der Fimrwareversion 04.00.22 noch nicht unterstützt, auch darf in der Box die Gesamtanzahl der Zeichen 128 (inklusive Nullterminierung) nicht überschreiten.

Nachfolgend der Eintrag zu "Freigabe: 12.11.04, Firmwareversion 04.00.22 aus dem Dokument PZE-MasterIV, SoftwareVersionen Stand 2004-12-02.pdf"

  • Die SendMessage-Funktion wurde beim Online-Betrieb überarbeitet. Nach dem "online" abholen vom Server wird auf eine Message vom Server gewartet. Falls keine Message geschickt werden soll, muß man eine Dummy-Nachricht mit der Anzeigedauer von 0 Sekunden schicken, sonst bekommt der Benutzer am Terminal eine Fehlermeldung. SendMessage ist für Online-Betrieb erst mit dieser Version freigegeben.
Beispiel:
char *Buffer = "HALLO DIES IST EIN TEST !";

DFCComSendMessage(1, 254, 255, 0, 2, Buffer, 26);

 

2.1.8     DFCComSendInfotext

Wird unterstützt ab Firmwareversion:
02.02.00, 03.01.00
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCComSendInfotext(int iChannelNum, int iBusNum,
char *szMessage, int iLength);

Exportiert: _DFCComSendInfotext@16
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
char *szMessage Zeiger auf die darzustellende Zeichenkette.
int iLength Zeichenlänge der Meldung. Maximal 242.
Rückgabewert:
0 Fehler beim Senden.
1 Meldung erfolgreich gesendet.
Beschreibung:
Sendet einen Infotext an das Gerät mit der angegebenen Busnummer. Der Infotext wird im Speicher des Geräts gehalten und steht so zur ständigen Verfügbarkeit. 
Er kann über die linke Pfeiltaste aus dem Hauptmenü heraus erreicht werden. 

Im PZE - Modus ist durch die Fixierung der Eingabe auf die ersten Einträge im Hauptmenü (F1 / F2), das Erreichen des Infobildschirms versperrt. Im PZE - Betrieb ist das Infobild deswegen nicht allzu sinnvoll anzuwenden.

Das AEIII+ kann pro Zeile maximal 19 Zeichen darstellen, das zwanzigste ist für die Laufleiste reserviert. Bitte beachten Sie, daß Sonderzeichen sowie Umlaute durch den vorgegebenen Displayzeichensatz nicht richtig dargestellt werden können.
Wenn Sie einen Zeilenumbruch erreichen möchten, füllen Sie die Anzeigezeile mit Leerzeichen auf 19 Zeichen auf, dadurch erfolgt ein automatischer Umbruch auf die nächste Zeile.
Beispiel:
char *Buffer = "HALLO DIES IST EIN TEST !";

DFCComInfotext(1, 254, Buffer, 26);

 

2.1.9     DFCGetSeriennummer

Wird unterstützt ab Firmwareversion:
02.02.00, 03.01.00, 04.00.00
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCGetSeriennummer(int iChannelNum, int iBusNum,
int *piError, int *piSerialNum); 

Exportiert: _DFCGetSeriennummer@16
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
int *piSerialNum Zeiger auf Variable welche die Seriennummer erhält.
Rückgabewert: 
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung: 
Seriennummer aus AE III+ auslesen.

 

2.1.10.1     DFCLogOn

 Nicht weiter in Verwendung. 

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCLogOn(char *szFileName); 

Exportiert: _DFCLogOn@4
Parameter: 
char* szFileName Zeichenkette mit Dateinamen der Log-Datei (inklusive Pfad).
Rückgabewert: 
0 Funktion nicht implementiert.
Beschreibung: 
Die Implementierung wurde entfernt!!! Bitte auf DFCSetLogOn umsetzen.

 

2.1.10.2     DFCSetLogOn

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
void __stdcall DFCSetLogOn(int iChannelNum); 

Exportiert: _DFCSetLogOn@4
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
Rückgabewert: 
keiner
Beschreibung: 
Log-Funktion wird eingeschaltet und Log-Datei wird geöffnet.
Alle aus dem Gerät gelesenen Daten werden binär abgespeichert. Vor den Datenbyte wird ein Byte mit der Anzahl der Datenbyte abgespeichert. Dieses Byte wird nicht mitgezählt.

Beispiel:
Ein Datensatz enthält 20 Byte. 
Das vorangestellte Byte hat den Wert 20.
Die Gesamtzahl der gespeicherten Byte für diesen Datensatz incl. Längenbyte ist 21.

Zuvor müssen Sie mit DFCSetLogFileName den Name der Datei bekannt geben.

 

2.1.11.1     DFCLogOff

 Nicht weiter in Verwendung. 

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
void __stdcall DFCLogOff(void);

Exportiert: _DFCLogOff@0
Parameter: 
keine
Rückgabewert: 
keiner
Beschreibung: 
Implementierung wurde entfernt!!! Bitte auf DFCSetLogOff umstellen.

 

2.1.11.2     DFCSetLogOff

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
void __stdcall DFCSetLogOff(int iChannelNum);

Exportiert: _DFCSetLogOff@4
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
Rückgabewert: 
keiner
Beschreibung: 
Log - Funktion wird für angegebenen Kanal abgeschaltet.

 

2.1.12     DFCSetCallBack

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
void __stdcall DFCSetCallBack(int iChannelNum, int (*CBFunction)());

Exportiert: _DFCSetCallBack@8
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int (*CBFunction)() Zeiger auf die aufzurufende Funktion.
Rückgabewert: 
0 Die Befehlsausführung wird abgebrochen.
1 Der Befehl wird weiter abgearbeitet.
Beschreibung: 
Diese Funktionalität wird z.B. für eine Fortschrittsanzeige verwendet. Sie gibt jedoch keinen Aufschluss über die zu übertragende Datenmenge um mit Prozenten zu rechnen.

 

2.1.13     DFCSetLogFileName

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
void __stdcall DFCSetLogFileName(int iChannelNum, 
const unsigned char *szLogFileName);

Exportiert: _DFCSetLogFileName@8
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
const unsigned char *szLogFileName Datei die zum Loggen verwendet werden soll.
Rückgabewert: 
keiner
Beschreibung: 
Setzt die Datei für die Loggfunktionen im jeweiligen Kanal.

 

2.1.14     DFCGetErrorText

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
void __stdcall DFCGetErrorText(int iChannelNum, int iError, 
int iLanguage, char *szText, int iLength);

Exportiert: _DFCGetErrorText@20
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iError Fehlercode der durch Parameter von den meisten anderen zurückgegeben wird.
int iLanguage noch nicht verwendet. Alles Deutsch
char *szText Zeiger auf die verwendbar Zeichenkette.
int iLength Länge des Reservierten Speichers auf die Zeichenkette.
Rückgabewert: 
keiner
Beschreibung: 
Gibt einen Fehlertext zum Fehlercode zurück.

 

2.1.15     DFCSetGlobVar

Wird unterstützt ab Firmwareversion:
02.02.20, 03.01.00, 04.00.00
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCSetGlobVar(int iChannelNum, int iBusNum,
unsigned char *pucVar, int iType, unsigned char *pucValue, int *piError);

Exportiert: _DFCSetGlobVar@24
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
unsigned char *pucVar Name oder Nummer der Variablen.
int iType 0 -> pucVar zeigt auf Byte welches die Variablennummer darstellt. Der gültige Bereich liegt zwischen 1 - 8. Im AESetup auf der Seite für die Globalen Variablen entspricht dies der Anordnung von oben links nach unten links 1 - 4 und auf der rechten Seite entsprechend 5 - 8.

1 -> pucVar zeigt auf terminierte Zeichenfolge die den Namen darstellt. Zwischen Groß- und Kleinschreibung wird unterschieden und er kann maximal 16 ASCII - Zeichen umfassen.

2 -> pucVar zeigt auf terminierte Zeichenfolge die den Namen einer Systemvariable darstellt. z. B. "_MODEM_MC35i.PHONE"

unsigned char *pucValue Zeigt auf terminierte Zeichenfolge die den Wert darstellt. Bei der unterstützenden FW mit Majornummer 2, sind maximal 20 ASCII - Zeichen möglich. Bei der unterstützenden FW mit Majornummer 3, sind maximal 60 ASCII - Zeichen möglich.
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert:
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung:
Setzen des Wertes einer Globalen Variablen.

 

2.1.16     DFCGetGlobVar

Wird unterstützt ab Firmwareversion:
02.02.20, 03.01.00, 04.00.00
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCGetGlobVar(int iChannelNum, int iBusNum,
unsigned char *pucVar, int iType, unsigned char *pucValue, 
int iValueLength, int *piError);

Exportiert: _DFCGetGlobVar@28
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
unsigned char *pucVar Name oder Nummer der Variablen.
int iType 0 -> pucVar zeigt auf Byte welches die Variablennummer darstellt. Der gültige Bereich liegt zwischen 1 - 8. Im AESetup auf der Seite für die Globalen Variablen entspricht dies der Anordnung von oben links nach unten links 1 - 4 und auf der rechten Seite entsprechend 5 - 8.

1 -> pucVar zeigt auf terminierte Zeichenfolge die den Namen darstellt. Zwischen Groß- und Kleinschreibung wird unterschieden und er kann maximal 16 ASCII - Zeichen umfassen.

2 -> pucVar zeigt auf terminierte Zeichenfolge die den Namen einer Systemvariable darstellt. z. B. "_MODEM_MC35i.PHONE"

unsigned char *pucValue Wenn die Ausführung erfolgreich war, enthält der Buffer auf den dieser Zeiger zeigt die ermittelte Zeichenfolge für den Wert der Variablen. Bei der unterstützenden FW mit Majornummer 2, sind maximal 20 ASCII - Zeichen möglich. Bei der unterstützenden FW mit Majornummer 3, sind maximal 60 ASCII - Zeichen möglich.
int iValueLength Länge des reservierten Speicherbereiches auf den mit pucValue verwiesen wird. Bitte beachten Sie das die NULL - Terminierung in den Wert mit einfliest. d.h. Wenn Sie eine Längenangabe von 1 machen, bekommen Sie eine Leere Zeichenfolge zurückgeliefert, da kein ausreichender Bufferbereich für die Daten reserviert wurde.
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert:
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung:
Lesen des Wertes einer Globalen Variablen.

 

2.1.17     DFCCloseRelay

Wird unterstützt ab Firmwareversion:
02.02.20, 03.01.00, 04.00.00
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCCloseRelay(int iChannelNum, int iBusNum, int iNum, 
int iTime, int *piError); 

Exportiert: _DFCCloseRelay@20
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
int iNum Nummer des anzusprechenden Relais. Mit der Nummer "0" wird der interne Open - Collector - Ausgang geschaltet. Der Bereich "1 - 8" ist für die jeweils 4 (42V) und 4(230V) Relais des IO - Module.
int iTime Zeitangabe in Sekunden, für die der Ausgang, (das Relais), geschaltet werden soll. (1 .. 65535)
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert: 
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung:
Schließen eines Ausgangs oder Relais für eine bestimmbare Zeit.

 

2.1.18     DFCGetRelayState

Wird unterstützt ab Firmwareversion:
02.02.20, 03.01.00, 04.00.00
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCGetRelayState(int iChannelNum, int iBusNum, int iNum, 
int *piState, int *piTime, int *piError); 

Exportiert: _DFCGetRelayState@24
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
int iNum Nummer des anzusprechenden Relais. Mit der Nummer "0" wird der interne Open - Collector - Ausgang geschaltet. Der Bereich "1 - 8" ist für die jeweils 4 (42V) und 4(230V) Relais des IO - Module.
int *piState Erhält den aktuellen Relaiszustand. "1" steht für geschlossen.
int *piTime Erhält die verbleibende Zeitangabe in Sekunden, für die der Ausgang, (das Relais), noch geschaltet werden soll.
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert: 
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung:
Lesen des aktuellen Zustandes eines Ausgangs oder Relais.

 

2.1.19     DFCOpenRelay

Wird unterstützt ab Firmwareversion:
02.02.20, 03.01.00, 04.00.00
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCOpenRelay(int iChannelNum, int iBusNum, int iNum,
int *piError);

Exportiert: _DFCOpenRelay@16
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
int iNum Nummer des anzusprechenden Relais. Mit der Nummer "0" wird der interne Open - Collector - Ausgang geschaltet. Der Bereich "1 - 8" ist für die jeweils 4 (42V) und 4(230V) Relais des IO - Module.
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert: 
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung:
Öffnen eines Ausgangs oder Relais.

 

2.1.20     DFCGetDevicePollRetry

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCGetDevicePollRetry(int iChannelNum);

Exportiert: _DFCGetDevicePollRetry@4
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
Rückgabewert: 
Anzahl Benötigte Anzahl Versuche für DFCCheckDevice - Vorgabe.
Beschreibung:
Bei der Funktion DFCCheckDevice wird ein Parameter übergeben, welcher die mögliche Anzahl der Versuche angibt. Diese Funktion liefert die Anzahl der benötigten Anfragen, bis die Funktion -erfolgreich- zurückmelden konnte, zurück.

 

2.1.21     DFCGetComPort

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
HANDLE __stdcall DFCGetComPort(int iChannelNum);

Exportiert: _DFCGetComPort@4
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
Rückgabewert: 
Handle Schnittstellenhandle (seriell) oder Socket der letzten Kanalinitialisierung. Der Wert ist (-1 = INVALID_HANDLE_VALUE / INVALID_SOCKET), wenn die Rückgabe scheitert. 
Der Typ HANDLE ist in C gleich einem Zeiger auf void.
Beschreibung:
Verwendung dieser Funktion ist nur bei einem direkten Zugriff auf die Schnittstelle nötig. Dieses kann bei einer Modeminitialisierung der Fall sein, wobei die Verbindungsstrecke zuerst aufgebaut werden muss und danach die anderen Funktionen der DLL wie bisher verwendet werden können. 
Bitte beachten Sie: 
Die DLL schließt durch DFCComClose keine zuvor geöffnete Modemverbindung durch AT-Befehle.
Der zurückgelieferte HANDLE ist nur für die zuvor geöffnete Schnittstelle und während dessen Bestehen als gültig zu betrachten.

 

2.1.22     DFCSetComPort

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCSetComPort(int iChannelNum, HANDLE hComPort, 
int iType, int iComValue, int iTimeOut);

Exportiert: _DFCSetComPort@20
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
HANDLE hComPort Schnittstellenhandle (seriell) oder Socket der gesetzt werden soll.
Der Typ HANDLE ist in C gleich einem Zeiger auf void.
int iType Der Wert gibt an, welche Schnittstellenart vorliegt:
0: DFCComOpenSerial, DFComInit
1: DFCComOpenSocket, DFCComOpen
2: DFCComOpenIV für serielle Verbindung.
3: DFCComOpenIV für TCP/IP Verbindung.
int iComValue Bei seriellen Verbindungen gibt dieser Parameter die Baudrate an (Standard: 38400bd) und bei TCP/IP die Portnummer (Standard: 8000).
int iTimeOut Dieser Parameter gibt den zu verwendenden Schnittstellentimeout in Millisekunden an. Bei serieller Verbindung ist Standardmäßig 150ms einzustellen, bei TCP/IP Standardmäßig 3000ms.
Rückgabewert: 
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung:
Die Verwendung dieser Funktion ist in äußerst wenigen Fällen nötig, z.B. zum Einstellen eines anderen Schnittstellentimeouts, während die Schnittstelle bereits geöffnet ist oder um der DLL einen zuvor anderweitig genutzten Handle zu übergeben. 

 

2.1.23     DFCWrite

Achtung: 
Die Funktion sollte nur für Sonderfälle wie Modeminitialisierung verwendet werden! Durch unsachgemäßen Gebrauch, können Störungen in der Kommunikation auftreten.
Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCWrite(int iChannelNum, char *pBuf, int iLength,
int *piWriteLength, int *piError);

Exportiert: _DFCWrite@20
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
char *pBuf Zeiger auf die zu versendenden Zeichen.
int iLength Anzahl der zu versendenden Zeichen.
int *piWriteLength (Rückgabe) Anzahl der wirklich gesendeten Zeichen.
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert: 
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung:
Schreibt, je nach verwendeter Schnittstelle, die übergebenen Daten in den Kanal.

 

2.1.24     DFCRead

Achtung: 
Die Funktion sollte nur für Sonderfälle wie Modeminitialisierung verwendet werden! Durch unsachgemäßen Gebrauch, können Störungen in der Kommunikation auftreten.
Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCRead(int iChannelNum, char *pBuf, int iLength,
int *piReadLength, int *piError);

Exportiert: _DFCRead@20
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
char *pBuf Zeiger auf Zeichenpuffer für die zu empfangenden Zeichen.
int iLength Anzahl der zu lesenden Zeichen. (größe Zeichenpuffer)
int *piReadLength (Rückgabe) Anzahl der wirklich gelesenen Zeichen.
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert: 
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung:
Liest, je nach verwendeter Schnittstelle, die anliegenden Daten aus dem Kanal.
Hinweis:

Es ist wichtig, nicht nur den Rückgabeparameter auf seinen Wert zu überprüfen. Ob ein Fehler vorlag ist nur in Verbindung mit dem zurückgelieferten Error-Code möglich. Handelt es sich um eine serielle Verbindung und es waren keine Daten zum lesen verfügbar wird von der Funktion ein Returnwert von 1 zurückgegeben. Bei einer TCP/IP Verbindung wird allerdings ein Returnwert von 0 zurückgeliefert, wenn es keine Daten zu lesen gab. Es empfiehlt sich für eine Fehlerbehandlung dieser Funktion grundsätzlich den Errorcode zu verwenden (ist dieser 0 lag ein Fehler vor). 

Verbindung Returnwert ReadLength Error Status  Beschreibung
seriell =1 =0 =0 Ok es wurde erfolgreich gelesen, die Anzahl der gelesenen Zeichen war jedoch 0
seriell =1 >0 =0 OK es wurde erfolgreich gelesen, die Anzahl der gelesenen Zeichen war >=1
TCP/IP =0 =0 =0 Ok es wurde erfolgreich gelesen, die Anzahl der gelesenen Zeichen war jedoch 0
TCP/IP =1 >0 =0 Ok es wurde erfolgreich gelesen, die Anzahl der gelesenen Zeichen war >=1
seriell
TCP/IP
=0 >=0 0 Error es wurde nicht erfolgreich gelesen, in ReadLength steht die Anzahl und in Buf die Zeichen die bis zum Auftreten des Fehlers gelesen  werden konnten.

!! Wichtig: Die entsprechenden Funktionen der DLL für den Timeboy, haben genau das entgegengesetzte Verhalten wenn es keine Daten zu lesen gab!

 

 

2.1.25     DFCUpload

Wird unterstützt ab Firmwareversion:
04.00.08
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCUpload(int iChannelNum, int iBusNum, char *szFileName,
int *piError);

Exportiert: _DFCUpload@16
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
char *szFileName Dateiname der Gerätedatei, wenn nötig mit Pfadangabe.
("Firmware" mit Zusatzdaten, Endung: *.hex)
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert: 
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung:
Übertragen der notwendigen Gerätedaten, die aus Zeichensatz-, Grafik-, Text-, "Firmwaredaten" usw.. bestehen und zusammen in einer Datei mit der Endung (*.hex) geliefert werden.

 

2.1.26     DFCGetVersionFirmware

Wird unterstützt ab Firmwareversion:
04.00.19, 03.01.21
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCGetVersionFirmware(int iChannelNum, int iBusNum,
char *szVersion, int *piError);

Exportiert: _DFCGetVersionFirmware@16
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
char *szVersion Zeiger auf Zeichenkette für die Versionsnummer. Mindestens 32 Zeichen.
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert: 
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung:
Lesen der Gerätesoftwareversion im Textformat. z. B.: 04.00.19

 

2.1.27     DFCGetVersionFirmwareFromFile

Wird unterstützt ab Firmwareversion:
04.00.23
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCGetVersionFirmwareFromFile(int iChannelNum, 
char *szFileName,char *szVersion, int *piError);

Exportiert: _DFCGetVersionFirmwareFromFile@16
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
char *szFileName Dateiname der Gerätedatei, wenn nötig mit Pfadangabe.
("Firmware" mit Zusatzdaten, Endung: *.hex)
char *szVersion Zeiger auf Zeichenkette für die Versionsnummer. Mindestens 32 Zeichen.
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3. Dieser Wert besagt mit der Nummer 1, daß die Prüfsumme des Dateikopfes oder der enthaltenen Firmwaredaten unstimmig ist.
Rückgabewert: 
0 Fehler bei Durchführung.
>7 Anzahl der kopierten Zeichen in den Puffer "szVersion".
Beschreibung:
Lesen der Gerätesoftwareversion im Textformat. z. B.: 04.00.23 direkt aus der Firmwaredatei.

 

2.2     Funktionen für Setup

Konfigurationsdaten mit dem Gerät abgleichen.

2.2.1     DFCSetupLaden

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCSetupLaden(int iChannelNum, int iBusNum,
char *szFileName, int *piError);

Exportiert: _DFCSetupLaden@16
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
char *szFileName Dateinahme der Setup-Datei (wenn notwendig mit Pfad).
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert:
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung: 
Setup-Daten aus Datei (*.aes) lesen und in AE III+ übertragen.

 

2.2.2     DFCDownload

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCDownload(int iChannelNum, int iBusNum,
char *szFileName, int *piError);

Exportiert: _DFCDownload@16
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
char *szFileName Dateinahme der Setup-Datei (wenn notwendig mit Pfad).
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert:
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung: 
Setup-Daten aus Getät lesen und in Datei (*.aes) übertragen.

 

2.3     Funktionen für Daten

Sammeln der anfallenden Daten aus den Geräten und Interpretieren der gelieferten Informationen durch Abgleich mit Gerätekonfiguration.

2.3.1     DFCComClearData

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCComClearData(int iChannelNum, int iBusNum); 

Exportiert: _DFCComClearData@8
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
Rückgabewert:
0 Bei der Befehlsausführung ist ein Fehler aufgetreten.
1 Funktion wurde erfolgreich ausgeführt.
Beschreibung:

Löscht alle Daten im Gerät. Rücksetzten der Schreib und Lesezeiger im Gerät auf Speicheranfang.

ACHTUNG:
Es ist nicht notwendig diese Funktion zu benutzen. Es ist davon sogar abzuraten, da aktuell eingegebene Daten ungeachtet gelöscht werden könnten.

 

2.3.2     DFCComCollectData

Ruft intern die Funktion DFCReadRecord auf.
Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCComCollectData(int iChannelNum, int iBusNum, 
int *piError);

Exportiert: _DFCComCollectData@12
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert:
-1 Fehler bei Durchführung.
0 Keine Daten vorhanden
1 Offline Daten vorhanden
2 Online Daten vorhanden
Beschreibung:
Liest alle vorhandenen Daten aus dem Gerät aus und speichert sie im internen DLL-Speicher. Ab der Firmware mit Majorversion >= 2 wird hier nur ein Datensatz aus dem Gerät gelesen und die Busnummer für die weiteren Datensatzanfragen mit DFCComGetDatensatz festgelegt.

Die Datensätze werden zwischen Online und Offline unterschieden.
Online - Daten sind Daten die gerade eingegeben wurden. Ihr Zeitbereich liegt im definierten Server - Timeout, in diesem wurden sie von der DLL ausgelesen. Online - Daten können geprüft werden und der Benutzer kann mittels Mitteilung zu einer Neueingabe aufgefordert werden (siehe DFCComSendMessage). Offline-Daten wurden nach dem Server - Timeout aufgenommen.

 

2.3.3     DFCComGetDatensatz

Ruft intern die Funktionen DFCQuitRecord, DFCReadRecord auf.
Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCComGetDatensatz(int iChannelNum, unsigned char *pucBuf,
int *piLength, int *piError); 

Exportiert: _DFCComGetDatensatz@16
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
unsigned char *pucBuf Speicher, in dem die Daten abgelegt werden sollen.
 int *piLength Speicher in dem die Länge der gerade empfangen Daten gespeichert werden soll.
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert:
-1 Fehler bei Durchführung.
0 Keine Daten vorhanden.
1 Weitere Daten vorhanden.
2 Letzter Datensatz.
Beschreibung:
Gibt genau einen Datensatz an die aufrufende Anwendung zurück.
Ist unter mehreren Datensätzen ein Online-Datensatz vorhanden, so wird dieser immer als letzter Datensatz aus der DLL in die Anwendung übertragen (er ist ja auch derjenige, der zuletzt eingegeben wurde). Die im Datensatz enthaltene Datenstruktur ist in Kapitel 3 beschrieben. 
Ab der Firmwareversion mit Majorversion >= 2 wird hier der zuletzt gelesene Datensatz übergeben, dann quittiert und der nächste aus dem Gerät gelesen (wenn vorhanden). Auf diese art werden die Datensätze satzweiße aus dem Gerät geladen. Wenn mit dem vorherigen Aufruf der Funktion DFCComCollectData ein Online - Datensatz gemeldet wurde, wird dieser als erster geliefert.

 

2.3.4     DFCLoadDatensatzbeschreibung

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCLoadDatensatzbeschreibung(int iChannelNum, int iBusNum,
int *piError);

Exportiert: _DFCLoadDatensatzbeschreibung@12
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert:
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung:
Datensatzbeschreibungen aus dem Gerät lesen. Die Datensatzbeschreibungen werden in der DLL in einen Buffer abgelegt und können mit den Funktionen "DFCDatB..." ausgewertet werden.

 

2.3.5     DFCDatBCnt

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCDatBCnt(int iChannelNum); 

Exportiert: _DFCDatBCnt@4
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
Rückgabewert:
Anzahl Anzahl gefundener Datensatzbeschreibungen im Gerät.
Beschreibung:
Anzahl der ausgelesenen Datensatzbeschreibungen (nur gültig wenn vorher die Funktion "DFCLoadDatensatzbeschreibung" aufgerufen wurde).

 

2.3.6     DFCDatBDatensatz

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCDatBDatensatz(int iChannelNum,
int iDataNum, unsigned char *szName, int *piFieldCount);

Exportiert: _DFCDatBDatensatz@16
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iDataNum Nummer der Datensatzbeschreibung aus Setup.
(wird ab 0 gezählt)
unsigned char *szName Name der Datensatzbeschreibung.
(Speicher für Name muss min. 17 Byte haben) 
int *piFieldCount Anzahl Felder der Datensatzbeschreibung.
Rückgabewert:
0 Datensatzbeschreibung im Gerät nicht vorhanden.
1 Daten wurden übergeben.
Beschreibung:
Daten einer Datensatzbeschreibung abrufen (nur gültig wenn vorher die Funktion "DFCLoadDatensatzbeschreibung" aufgerufen wurde). Im Gerät können Datensätze mit unterschiedlichem Format gespeichert werden. Im Setup-Programm werden die Datensätze unter dem Punkt "Datensatzbeschreibungen" festgelegt. Die erste Datensatzbeschreibung im Setup-Baum hat die Nummer 0, die zweite die Nummer 1 ...

 

2.3.7     DFCDatBFeld

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCDatBFeld(int iChannelNum, int iDataNum,
int iField, unsigned char *szName, int *piType, int *piLength);

Exportiert: _DFCDatBFeld@24
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iDataNum Nummer der Datensatzbeschreibung (wird ab 0 gezählt).
int iField Feld der Datensatzbeschreibung entsprechend Reihenfolge im Setup (wird ab 0 gezählt).
unsigned char *szName Name des Feldes. (Speicher für Name muss min. 17 Byte haben)
int *piType Datentyp des Feldes wie im Setup definiert:
1 - unsigned long 4 Byte
2 - Date und Time 7 Byte
3 - wie Typ 4, es sind jedoch nur Ziffern erlaubt
4 - Alpha-Numerisch ASCII
5 - Datum 4 Byte Y100,Y,M,D
6 - Zeit 3 Byte (Stunde, Minute, Sekunde)
int *piLength Länge des Feldes in Byte. Bei Typ 3 und 4 wird die abschließende "0" mitgezählt.
z.B. ASCII-Feld 15 Zeichen, Len = 15 + 1 = 16 Byte
Rückgabewert:
0 Datensatzbeschreibung oder Feldnummer im Gerät nicht vorhanden.
1 Daten wurden übergeben.
Beschreibung:
Daten eines Feldes einer Datensatzbeschreibung abrufen (nur gültig wenn vorher die Funktion "DFCLoadDatensatzbeschreibung" aufgerufen wurde).

 

2.3.8     DFCReadRecord

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCReadRecord(int channelID, int deviceID, 
char *buf, int *length, int *err);

Exportiert: _DFCReadRecord@20
Parameter:
int channelID Der zu verwendende Kanal. Wertebereich: (1 - 250)
int deviceID Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
char *buf Speicher, in dem die Daten abgelegt werden sollen.
int *length Speicher in dem die Länge der gerade empfangen Daten gespeichert werden soll.
int *err Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert:
-1 Fehler bei Durchführung.
0 Es liegen keine Datensätze vor.
1 Daten eines Online - Datensatzes gelesen.
2 Wiederholt die Daten eines Online - Datensatzes gelesen.
3 Daten eines Offline - Datensatzes gelesen.
4 Wiederholt die Daten eines Offline - Datensatzes gelesen.
Beschreibung:
Lesen der Daten des nächsten anstehenden Datensatzes. Nachdem der Datensatz gelesen wurde, muss mit DFCQuitRecord dieser quittiert werden. Erst wenn der Datensatz mit DFCQuitRecord erfolgreich quittiert wurde, kann mit einem folgenden Aufruf von DFCReadRecord der nächste anstehende Datensatz gelesen werden.

 

2.3.9     DFCQuitRecord

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCQuitRecord(int channelID, int deviceID, int *err);

Exportiert: _DFCQuitRecord@12
Parameter:
int channelID Der zu verwendende Kanal. Wertebereich: (1 - 250)
int deviceID Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
int *err Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert:
-1 Fehler bei Durchführung.
0 Keine Quittung nötig.
1 Daten eines Online - Datensatzes quittiert.
2 Wiederholt die Daten eines Online - Datensatzes quittiert.
3 Daten eines Offline - Datensatzes quittiert.
4 Wiederholt die Daten eines Offline - Datensatzes quittiert.
Beschreibung:
Quittieren (löschen) der Daten des zuvor mit DFCReadRecord gelesenen Datensatzes.

 

2.4     Funktionen für Listen

Aufbereiten von Listendaten und laden dieser in die Geräte.

2.4.1     DFCMakeListe

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCMakeListe(
int iChannelNum, int iListNum, int iLineCount, int iListSize, 
unsigned char *pucBuf, int iListMemSizeNum);

Exportiert: _DFCMakeListe@24
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iListNum  Ist die Nummer der Liste entsprechend der Listenbeschreibung im Setup. Die erste Listenbeschreibung im Setup hat die Nummer "0".
int iLineCount Anzahl der Zeilen (Datensätze) der Liste.
int iListSize Gesamtgröße der Liste in Byte.
Berechnet sich aus "iLineCount" mal Anzahl der Byte pro Zeile.
unsigned char *pucBuf Zeiger auf die Listendaten.
int iListMemSizeNum Größe des Speichers für Listen.
Muss beim AE III+ immer "0" sein (ist vom Timeboy übernommen). Es sind (100kByte / (256kByte - 12kByte Verwaltungsdaten => 244kByte) für Listen fest eingestellt.
Rückgabewert:
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung:
Daten einer Liste in den internen Buffer der DLL schreiben.
Die Listendaten müssen immer exakt mit der Listenbeschreibung im Setup übereinstimmen.  Zeichenketten sind mit Nullen auf die im Setup vorgegebene Feldlänge zu füllen. Zusätzlich ist die abschließende 0 zu beachten.
Wenn im Setup eine Zeichenkette mit 16 Zeichen angelegt wurde, ist die Feldlänge exakt 17 Byte. Trennzeichen zwischen den Feldern und den Zeilen werden nicht verwendet.

Beispiel:
Liste mit 2 Feldern:
Personalnummer (nur Ziffern) 4 Byte;
Name Zeichenkette (ASCII - Zeichen) 16 Zeichen.
Eine Zeile besteht dann aus genau 4 + 1 + 16 + 1 = 22 Byte. Wenn 3 Zeilen angelegt werden sind exakt 3*22 = 66 Byte anzulegen.

 

2.4.2     DFCLoadListen

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCLoadListen(int iChannelNum, int iBusNum, 
int *piError);

Exportiert: _DFCLoadListen@12
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert:
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung:
Listendaten aus internen Buffer der DLL in das Gerät laden. Upload der zuvor mit DFCMakeListe erstellten Listendaten. Wenn die Firmwareversion die importierte Menge der Listendaten nicht unterstützt, wird die Fehlermeldung 13 (siehe Tabelle 1.3.3) zurückgegeben. Die Firmwarestände des AEIII+, sowie Firmwarestände des PZE - Master IV bis 04.00.23 unterstützen 100kByte Listenspeicher, spätere Versionen wie 04.00.23 ca. 256kByte.

 

2.4.3     DFCClrListenBuffer

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
void __stdcall DFCClrListenBuffer(int iChannelNum);

Exportiert: _DFCClrListenBuffer@4
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
Rückgabewert:
keiner
Beschreibung:
Die Listendaten im Buffer der DLL werden gelöscht.

 

2.4.4     DFCLoadListenbeschreibung

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCLoadListenbeschreibung(int iChannelNum, int iBusNum,
int *piError);

Exportiert: _DFCLoadListenbeschreibung@12
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert:
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung:
Listenbeschreibungen aus dem Gerät lesen. Die Listenbeschreibungen werden in der DLL in einen Buffer abgelegt und können mit den Funktionen "DFCListB..." ausgewertet werden.

 

2.4.5     DFCListBCnt

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCListBCnt(int iChannelNum);

Exportiert: _DFCListBCnt@4
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
Rückgabewert:
Anzahl Anzahl gefundener Listenbeschreibungen im Gerät.
Beschreibung:
Anzahl der ausgelesenen Listenbeschreibungen (nur gültig wenn vorher die Funktion "DFCLoadListenbeschreibung" aufgerufen wurde). 

 

2.4.6     DFCListBDatensatz

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCListBDatensatz(int iChannelNum, int iDataNum,
unsigned char *szName, int *piFieldCount, int *piVar);

Exportiert: _DFCListBDatensatz@20
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iDataNum Nummer der Listenbeschreibung aus Setup.
(wird ab 0 gezählt).

Ab DLL - Verison 02.00.22 Bereich:
100 - 103 für Zutrittslisten Version 1. (z. B. 102 für Liste "Personalstamm")
Offsetnummern der Listen siehe DFCMakeEntranceList.

Ab DLL - Version 04.01.00 Bereich:
200 - 206 für Zutrittslisten Version 2. (z. B. 203 für Liste "Time")
Offsetnummern der Listen siehe DFCMakeEntrance2List.

unsigned char *szName Name der Listenbeschreibung.
(Speicher für Name muss min. 17 Byte haben).
int *piFieldCount Anzahl Felder der Liste.
int *piVar Ob Variable Liste. Immer 0. 
(Ist vorhanden wegen Kompatibilität mit Timeboy).
Rückgabewert:
0 Listenbeschreibung im Gerät nicht vorhanden.
1 Daten wurden übergeben.
Beschreibung:
Daten einer Listenbeschreibung abrufen (nur gültig wenn vorher die Funktion "DFCLoadListenbeschreibung" aufgerufen wurde, dieses wird bei Zutrittslisten nicht benötigt). Im Gerät können Listen mit unterschiedlichem Format gespeichert werden. Im Setup - Programm werden die Listen unter dem Punkt "Listenbeschreibungen" festgelegt. Die erste Listenbeschreibung im Setup-Baum hat die Nummer 0, die zweite die Nummer 1 ...

 

2.4.7     DFCListBFeld

Wird unterstützt ab Firmwareversion:
uneingeschränkt
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCListBFeld(int iChannelNum, int iDataNum, 
int iField, unsigned char *szName, int *piType, int *piLength);

Exportiert: _DFCListBFeld@24
Parameter: 
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iDataNum Nummer der Listenbeschreibung aus Setup.
(wird ab 0 gezählt).

Ab DLL - Verison 02.00.22 Bereich:
100 - 103 für Zutrittslisten Version 1. (z. B. 102 für Liste "Personalstamm")
Offsetnummern der Listen siehe DFCMakeEntranceList.

Ab DLL - Version 04.01.00 Bereich:
200 - 206 für Zutrittslisten Version 2. (z. B. 203 für Liste "Time")
Offsetnummern der Listen siehe DFCMakeEntrance2List.

int iField Feld der Listenbeschreibung entsprechend Reihenfolge im Setup. 
(wird ab 0 gezählt).
unsigned char *szName Name des Feldes.
(Speicher für Name muss min. 17 Byte haben) 
int *piType Datentyp des Feldes wie im Setup definiert:
1 - unsigned long 4 Byte
2 - Date und Time 7 Byte 
3 - wie Typ 4, es sind jedoch nur Ziffern erlaubt.
4 - Alpha-Numerisch ASCII.
5 - Datum 4 Byte Y100,Y,M,D. 
6 - Zeit 3 Byte (Stunde, Minute, Sekunde).
int *piLength Länge des Feldes in Byte wie im Setup definiert. Bei Typ 3 und 4 wird die anbschliesende "0" mitgezählt.
z.B.: ASCII-Feld 15 Zeichen, Len = 15 + 1 = 16 Byte
Rückgabewert: 
0 Listenbeschreibung oder Feldnummer im Gerät nicht vorhanden.
1 Daten wurden übergeben.
Beschreibung:
Daten eines Feldes einer Listenbeschreibung abrufen (nur gültig wenn vorher die Funktion "DFCLoadListenbeschreibung" aufgerufen wurde, dieses wird bei Zutrittslisten nicht benötigt).

 

2.5     Funktionen für Zutrittskontrolllisten (Version 1)

Aufbereiten und laden von Listendaten für die Zutrittskontrolle.

2.5.1     DFCMakeEntranceList

Wird unterstützt ab Firmwareversion:
03.01.00, 04.00.00
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCMakeEntranceList(
int iChannelNum, int iListNum, int iLineCount, int iListSize, 
unsigned char *pucBuf, int *piError);

Exportiert: _DFCMakeEntranceList@24
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iListNum  Ist die Nummer der Liste entsprechend der Listenbeschreibung im Setup unter Baumeintrag Zutrittskontrolle. Die erste Listenbeschreibung unter dem Eintrag hat die Nummer "0".
int iLineCount Anzahl der Zeilen (Datensätze) der Liste.
int iListSize Gesamtgröße der Liste in Byte.
Berechnet sich aus "iLineCount" mal Anzahl der Byte pro Zeile.
unsigned char *pucBuf Zeiger auf die Listendaten.
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert:
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung:
Daten einer Liste in den internen Buffer der DLL schreiben.

Die Listendaten müssen immer exakt mit der Listenbeschreibung im Setup übereinstimmen.  Zeichenketten sind mit Nullen auf die im Setup vorgegebene Feldlänge zu füllen. Zusätzlich ist die abschließende 0 zu beachten.
Wenn im Setup eine Zeichenkette mit 16 Zeichen angelegt wurde, ist die Feldlänge exakt 17 Byte. Trennzeichen zwischen den Feldern und den Zeilen werden nicht verwendet.

Beispiel:
Liste mit 2 Feldern:
Personalnummer Zeichenkette (nur Ziffern) 4 Byte;
Name Zeichenkette (ASCII - Zeichen) 16 Zeichen.
Eine Zeile besteht dann aus genau 4 + 1 + 16 + 1 = 22 Byte. Wenn 3 Zeilen angelegt werden sind exakt 3*22 = 66 Byte anzulegen.

Die Listendaten werden in der DLL für das Gerät komprimiert und sortiert aufbereitet, dadurch kann der Aufruf bei einer Personalliste mit 5120 Einträgen im ungünstigsten Fall bis zu 7 Sekunden dauern.

Bedeutung des Parameters iListNum ist:
0: Zeitzonen (22 Byte) "zu komprimierten (6 Byte) max. 16 DS möglich"
1: Zeitmodelle (35 Byte) "zu komprimierten (3 Byte) max. 32 DS möglich"
2: Personalstamm (19 Byte) "zu komprimierten (16 Byte) max. 5120 DS möglich"
3: Feiertage (16 Byte) "zu komprimierten (6 Byte) max. 64 DS möglich"

 

2.5.2     DFCLoadEntranceList

Wird unterstützt ab Firmwareversion:
03.01.00, 04.00.00
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCLoadEntranceList(int iChannelNum, int iBusNum, 
int iListNum, int *piError);

Exportiert: _DFCLoadEntranceList@16
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
int iListNum Ist die Nummer der Liste entsprechend der Listenbeschreibung im Setup unter Baumeintrag Zutrittskontrolle. Die erste Listenbeschreibung unter dem Eintrag hat die Nummer "0". Mit "-1" werden alle Listen angesprochen.
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert:
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung:
Listendaten aus internen Buffer der DLL in das Gerät laden. Upload der zuvor erstellten Listendaten. Mit der Angabe "-1" als Listennummer werden alle Listenbuffer übertragen, wobei der Import aller Listen abgeschlossen sein sollte.

 

2.5.3     DFCClearEntranceListBuffer

Wird unterstützt ab Firmwareversion:
03.01.00, 04.00.00
Deklaration:
extern "C" __declspec(dllexport)
void __stdcall DFCClearEntranceListBuffer(int iChannelNum, int iListNum);

Exportiert: _DFCClearEntranceListBuffer@8
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iListNum Ist die Nummer der Liste entsprechend der Listenbeschreibung im Setup unter Baumeintrag Zutrittskontrolle. Die erste Listenbeschreibung unter dem Eintrag hat die Nummer "0". Mit "-1" werden alle Listen angesprochen.
Rückgabewert:
keiner
Beschreibung:
Der Buffer für die Listendaten wird gelöscht. Mit der Angabe "-1" als Listennummer werden alle für die Zutrittskontrolle zur Verfügung gestellten Buffer gelöscht.

 

2.6     Funktionen für Zutrittskontrolllisten (Version 2)

Aufbereiten und laden von Listendaten für die Zutrittskontrolle.

2.6.1     DFCMakeEntrance2List

Wird unterstützt ab Firmwareversion:
04.01.00
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCMakeEntrance2List(
int iChannelNum, int iListNum, int iLineCount, int iListSize, 
unsigned char *pucBuf, int *piError);

Exportiert: _DFCMakeEntrance2List@24
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iListNum  Ist die Nummer der Liste entsprechend der Listenbeschreibung im Setup unter Baumeintrag Zutrittskontrolle. Die erste Listenbeschreibung unter dem Eintrag hat die Nummer "0".
int iLineCount Anzahl der Zeilen (Datensätze) der Liste.
int iListSize Gesamtgröße der Liste in Byte.
Berechnet sich aus "iLineCount" mal Anzahl der Byte pro Zeile.
unsigned char *pucBuf Zeiger auf die Listendaten.
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert:
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung:
Daten einer Liste in den internen Buffer der DLL schreiben.

Die Listendaten müssen immer exakt mit der Listenbeschreibung im Setup übereinstimmen.  Zeichenketten sind mit Nullen auf die im Setup vorgegebene Feldlänge zu füllen. Zusätzlich ist die abschließende 0 zu beachten.
Wenn im Setup eine Zeichenkette mit 16 Zeichen angelegt wurde, ist die Feldlänge exakt 17 Byte. Trennzeichen zwischen den Feldern und den Zeilen werden nicht verwendet.

Beispiel:
Liste mit 2 Feldern:
Personalnummer Zeichenkette (nur Ziffern) 4 Byte;
Name Zeichenkette (ASCII - Zeichen) 16 Zeichen.
Eine Zeile besteht dann aus genau 4 + 1 + 16 + 1 = 22 Byte. Wenn 3 Zeilen angelegt werden sind exakt 3*22 = 66 Byte anzulegen.

Bedeutung des Parameters iListNum ist:
0: Reader (33 Byte)
1: Identification (64 Byte)
2: Location (20 Byte)
3: Time (25 Byte)
4: Holiday (21 Byte)
5: Events (17 Byte)
6: Action (21 Byte)

 

2.6.2     DFCLoadEntrance2List

Wird unterstützt ab Firmwareversion:
04.01.00
Deklaration:
extern "C" __declspec(dllexport)
int __stdcall DFCLoadEntrance2List(int iChannelNum, int iBusNum, 
int iListNum, int *piError);

Exportiert: _DFCLoadEntrance2List@16
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iBusNum Die zu verwendende Busnummer. Wertebereich: (1 - 31, 254)
int iListNum Ist die Nummer der Liste entsprechend der Listenbeschreibung im Setup unter Baumeintrag Zutrittskontrolle 2. Die erste Listenbeschreibung unter dem Eintrag hat die Nummer "0". Mit "-1" werden alle zuvor importierten Listen angesprochen.
int *piError Error erhält eine Fehlernummer nach Tabelle 1.3.3.
Rückgabewert:
0 Fehler bei Durchführung.
1 Erfolgreich durchgeführt.
Beschreibung:
Listendaten aus internen Buffer der DLL in das Gerät laden. Upload der zuvor erstellten Listendaten. Mit der Angabe "-1" als Listennummer werden alle belegten Listenbuffer übertragen.

 

2.6.3     DFCClearEntrance2ListBuffer

Wird unterstützt ab Firmwareversion:
04.01.00
Deklaration:
extern "C" __declspec(dllexport)
void __stdcall DFCClearEntrance2ListBuffer(int iChannelNum, int iListNum);

Exportiert: _DFCClearEntrance2ListBuffer@8
Parameter:
int iChannelNum Der zu verwendende Kanal. Wertebereich: (1 - 250)
int iListNum Ist die Nummer der Liste entsprechend der Listenbeschreibung im Setup unter Baumeintrag Zutrittskontrolle. Die erste Listenbeschreibung unter dem Eintrag hat die Nummer "0". Mit "-1" werden alle Listen angesprochen.
Rückgabewert:
keiner
Beschreibung:
Der Buffer für die Listendaten wird gelöscht. Mit der Angabe "-1" als Listennummer werden alle für die Zutrittskontrolle zur Verfügung gestellten Buffer gelöscht.

 

3. Datenstruktur

Die verwendeten Datenstrukturen werden nachfolgend erklärt.

3.1     Aufbau der Datensätze im ByteArray

Es wird in jedem Datensatz die zugehörige Datensatzbeschreibung aus dem Setup mitgeführt.
Ein an die Anwendung überlieferter Datensatz sieht immer wie folgt aus:

Byte - Nummer: 0 1 2 3... (length-1)
Byte - Inhalt:   DataNum Daten des Datensatzes.

Es werden immer alle Felder eines Datensatzes aufeinanderfolgend und in der im Setup definierten Feldbreite (eventuell plus einem Terminierungszeichen) geliefert. 
Bitte beachten Sie, dass alle als ASCII - Feld definierten Felder ein zusätzliches Terminierungszeichen erhalten, wodurch ein im Setup mit einem Byte definiertes Feld in den "Daten des Datensatzes" zwei Byte umfasst!

Mit Hilfe der Auswertefunktionen für die Datensatzbeschreibungen und Listenbeschreibungen können Sie die "Daten des Datensatzes" interpretieren. Das Terminierungszeichen ist in der Angabe zur Feldbreite des  jeweiligen Datensatzfeldes enthalten.

 

3.2 Datum und Uhrzeit im ByteArray

Das Datum - Uhrzeit Feld in einem Datensatz sieht wie folgt aus:

Byte - Nummer Bedeutung Beispiel: 27.02.1981 15:30:13
0 Jahreszahl Hunderter (0..255) 19
1 Jahreszahl Einer (0..99) 81
2 Monat (0..12) 2
3 Tag (1..31) 27
4 Stunde (0..23) 15
5 Minute (0..59) 30
6 Sekunde (0..59) 13