kernelv_sync_write_request()
Prototyp
signed long int | kernelv_sync_write_request (unsigned short port, |
Beschreibung
Synchrones Schreiben von Variablen. Die Variablen werden dabei durch Port, indexGroup und indexOffset identifiziert.
Aktuell werden die folgenden Ports unterstützt:
Portnummer | CNC-Task |
551 | Task GEO |
552 | Task SDA |
553 | Task COM |
Die Bedeutung von indexGroup und indexOffset ist abhängig vom adressierten Port und kann der Dokumentation entnommen werden.
Falls die Funktion aufgerufen wird, wenn der CNC-Kern noch nicht gestartet ist, wird ein Fehlercode zurückgegeben.
Abhängig vom verwendeten Indexgroup und Indexoffset kann ein Schreibvorgang mehrere NC-Zyklen dauern. In diesem Fall gibt die Funktion den Wert 1 (RET_BUSY) zurück.
Ist dies der Fall ist die ist diese Funktion nach jedem Aufruf von kernelv_do_cycle() erneut aufzurufen, bis entweder der Rückgabewert 0 (RET_FINISHED) oder eine Fehlerkennung zurückgegeben wird.
Parameter
Name | Typ | Bedeutung |
port | unsigned short | Port über den die Daten zu schreiben sind. |
indexGroup | unsigned long | Indexgroup des zu schreibenden Datums. |
indexOffset | unsigned long | Indexoffset des zu schreibenden Datums. |
length | unsigned long* | Größe des Speichers für den zu schreibenden Wert in Bytes. |
data | void* | Zeiger auf Speicher für den zu schreibenden Wert. |
Rückgabewerte
Symbol | Wert | Bedeutung |
RET_FINISHED | 0 | Die Funktion wurde fehlerfrei durchgeführt. |
RET_BUSY | 1 | Die Funktion wird gerade ausgeführt, ist aber noch nicht abgeschlossen. Die API-Funktion muss weiter aufgerufen werden. |
| 6 | Die übergebene Portnummer ist nicht bekannt. |
| 0x701 | Der angeforderte Dienst wird nicht unterstützt. |
| 0x702 | Indexgroup ist ungültig |
| 0x703 | Indexoffset ist ungültig. |
| 0x704 | Die adressierte Variable darf nicht geschrieben werden. |
| 0x705 | Die zu schreibenden Daten passen nicht in die adressierte Variable. |
| 0x706 | Der Auftrag konnte nicht durchgeführt werden. Mögliche Ursachen sind z. B.:
|