ST_RFID_AccessData
TYPE ST_RFID_AccessData :
STRUCT
(* access specific parameters *)
pData : DWORD; (* pointer to write data or free space for read data *)
iDataSize : UINT; (* length of data buffer in Bytes *)
iStartBlock : UINT; (* attend that the UserDataStartBlock which is not obligatory 0 is added automatically. *)
iBlockCount : UINT; (* condition: Blockcount*Blocksize=Datasize *)
iBlockSize : UINT := 1; (* in Bytes *)
iUserDataStartBlock : UINT := 0; (* depending on the transponder type its user data memory starts with block index 0 or higher *)
(* The upper parameter iStartBlock depends on the iUserDataStartBlock. The used StartBlock is iStartBlock+iUserDataStartBlock. *)
(* Different RFID Readers can differ in their interpretation of the first block. *)
iReserved : UINT;
END_STRUCT
END_TYPE
Falls ein Lese- oder Schreibbefehl ausgeführt werden soll, ist es notwendig die Eingangsstruktur stAccessData anzugeben.
Mit dieser Struktur wird angegeben, wie viele und welche Daten gelesen und wo diese abgespeichert werden sollen bzw. wie viele und welche Daten geschrieben werden sollen.
pData | Der Pointer pData zeigt auf die zu schreibenden Daten bzw. auf den freien Speicherplatz für die zu lesenden Daten. |
iDataSize | Gibt die Größe der zu schreibenden/lesenden Daten in Bytes an. |
iStartBlock | Gibt den ersten Blockindex an, ab dem gelesen bzw. auf den Speicher des Transponders geschrieben werden soll. |
iBlockCount | Gibt die Anzahl von Blöcken an, die gelesen bzw. geschrieben werden soll. |
iBlockSize | Mit der Variablen iBlockSize kann die Blockgröße der Nutzdaten (in Bytes) angegeben werden. Je nach Transponder und RFID Reader Modell sind hier nur bestimmte Einstellungen möglich (gebräuchlich sind z.B. 8, 4 oder 1 Byte). Dies sollte vorab aus den Transponderinformationen in Erfahrung gebracht und getestet werden. Ebenso ist die Variable iBlockSize in Übereinstimmung mit der Einstellung in der RFID Reader Konfiguration zu wählen. Andernfalls ist es teilweise möglich, dass ein Zugriff auf den Transponder oder die Auswertung der empfangenen Daten nicht erfolgen kann. |
Falls unterschiedliche RFID Reader auf denselben Transponder zugreifen sollen, so muss der Speicherzugriff auf dem Transponder vorher getestet werden. Es ist möglich, dass ein Reader-Modell die Datenblöcke in verdrehter Bytereihenfolge auf dem Transponder ablegt im Vergleich zu einem anderen Reader Modell. Oder von einem Reader-Modell wird der gesamte Speicherbereich in umgekehrter Reihenfolge gesehen als es ein anderes Reader Modell tut. Ebenso kann die lesbare Speichergröße des Transponders zwischen verschiedenen Reader-Modellen leicht variieren. Dies ist zusätzlich abhängig vom Transpondertypen. Die RFID Library nimmt darauf keinen Einfluss. Der Anwender muss obige Eingangsparameter dementsprechend wählen. |
Die mögliche Blockgröße ist abhängig vom Transpondertypen. Je nach Transponder können dessen erste Blöcke für Systemdaten wie der Seriennummer reserviert sein. Der Bereich der Nutzdaten kann dementsprechend bei Index 0 beginnen oder auch bei einem höheren Wert. Falls dies der Fall ist kann die Variable iUserDataStartBlock genutzt werden, um diesen zusätzlichen Parameter anzugeben und den eigentlichen Index iStartBlock gleich zu belassen. Intern werden beide Werte zusammenaddiert.
Verschiedene RFID Reader Modelle interpretieren diesen Index allerdings teilweise unterschiedlich. Beispiel: Auf einen Lesebefehl mit Startindex 0 gibt Reader A den ersten Block Nutzendaten zurück und Reader B die Seriennummer.
iUserDataStartBlock | Mit der Variablen iUserDataStartBlock kann der Startblock (als Index von Blöcken) der Nutzdaten auf dem Transponder angegeben werden. |