Beispiel20a: FileIO-Cyclic Read / Write

Dieser Artikel stellt ein umfassenderes Beispiel als S20 und S19 dar. Es beschreibt zyklischen Lese- und/oder Schreibzugriff auf Dateien von einem TC3-C++ Modul aus.

Download

Hier erhalten Sie den Quellcode für dieses Beispiel.

1. Entpacken Sie die heruntergeladene ZIP-Datei.
2. Öffnen Sie mittels eines Visual Studios, in dem TwinCAT installiert ist, das Projekt über Open Project ….
3. Konfigurieren Sie das Signieren für dieses Projekt, indem Sie auf der Seite unter Rechtsklick auf dem Projekt->Properties->Tc Sign die TwinCAT Signierung anschalten und Ihr Zertifikat und ggf. Passwort konfigurieren.
Weitere Informationen zur Signierung der C++ Projekte erhalten Sie hier.
4. Wählen Sie Ihr Zielsystem aus.
5. Bauen Sie das Beispiel (z. B. Build->Build Solution).
6. Aktivieren Sie die Konfiguration mit einem Klick auf Beispiel20a: FileIO-Cyclic Read / Write 1:.
Das Beispiel ist einsatzbereit.

Beschreibung

Das Beispiel beschreibt den Zugriff auf Dateien für Lesen und/oder Schreiben über die Methode CycleUpdate, also auf zyklische Weise.

Dieses Beispiel beinhaltet die folgenden Projekte und Modulinstanzen.

Beim Starten des Beispiels beginnt das Schreibmodul mit dem Schreiben von Daten in die Datei, die sich im Bootprojekt-Pfad (Windows: C:\TwinCAT\3.x\Boot\AsyncTest.txt; TwinCAT/BSD: /usr/local/etc/TwinCAT/3.x/Boot/AsyncTest.txt) befindet. Die Eingangsvariable bDisableWriting kann für die Verhinderung des Schreibens verwendet werden.

Die Objekte sind miteinander verbunden: wenn das Schreiben erledigt ist, triggert das WritingModule das DetectModule von TcAsyncBufferReadingDrv. Dadurch wird ein Lesevorgang durch das ReadingModule veranlasst.

Beobachten Sie die nBytesWritten- / nBytesRead-Ausgangsvariablen des WritingModules / ReadingModules. Darüber hinaus werden Protokollnachrichten auf Ebene verbose generiert. Diese können - wie gehabt - mit Hilfe des TraceLevelMax Parameters der Module konfiguriert werden.

Lösen Sie die Aktion mit Hilfe der Eingangsvariablen bExecute aus. Der Parameter FilePath beinhaltet das Verzeichnis, dessen Dateien aufzulisten sind (Windows: c:\TwinCAT\3.1\Boot\*; TwinCAT/BSD: /usr/local/etc/TwinCAT/3.x/Boot/*).

Beobachten Sie die Ablaufverfolgung (Protokollebene Verbose) bezüglich der Liste der gefundenen Dateien.

Das Beispiel verstehen

Das Projekt TcAsyncFileIO beinhaltet verschiedene, in einer statischen Bibliothek befindliche Klassen. Diese Bibliothek wird von Treiberprojekten für das Lesen und Schreiben verwendet.

Jede Klasse ist für eine Dateizugriffsoperation wie Öffnen / Lesen / Schreiben / Auflisten / Schließen / ... bestimmt. Da die Ausführung innerhalb eines zyklischen Echtzeitkontextes stattfindet, hat jede Operation einen Status und die Klasse kapselt diese Zustandsmaschine ein.

Als Einstiegspunkt zum Verständnis des Dateizugriffs, beginnen Sie mit den Klassen TcFsmFileReader und TcFsmFileWriter.

Sollten zu viele Verlaufsverfolgungsmeldungen auftreten, die das Verständnis des Beispiels erschweren, deaktivieren Sie Module!

Siehe auch

Beispiel S19

Beispiel S20

Beispiel S25

Schnittstelle ITcFileAccess / Schnittstelle ITcFileAccessAsync