kernelv_sync_read_write_req()

Prototyp

signed long int

kernelv_sync_write_req (unsigned short port,
                                       unsigned long int indexGroup,
                                       unsigned long int indexOffset,
                                       unsigned long int *readLength,
                                        unsigned long int writeLength,
                                       void* data);

Beschreibung

Synchrones Schreiben und Lesen von Variablen. Die Variablen werden dabei durch Port, indexGroup und indexOffset identifiziert.

Beim Aufruf beinhaltet der Zeiger data die zu schreibenden Daten, in writeLength ist die Länge des zu schreibenden Datenbereiches in Bytes anzugeben, die Anzahl der Bytes die gelesen werden sollen ist im Zeiger readLength einzutragen.

Die gelesenen Daten werden in den Speicher, auf den der Zeiger data zeigt abgelegt, und die Anzahl der geschriebenen Bytes in *readLength eingetragen.

Aktuell werden die folgenden Ports unterstützt:

Portnummer

CNC-Task

551

Task GEO

552

Task SDA

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.

Parameter

Name

Typ

Bedeutung

port

unsigned short

Port von dem die Daten zu lesen sind.

indexGroup

unsigned long

Indexgroup des zu lesenden Datums.

indexOffset

unsigned long

Indexoffset des zu lesenden Datums.

readLength

unsigned long*

Zeiger auf Rückgabewert, für die Anzahl der zurückgelieferten Bytes.

writeLength

unsigned long

Länge des zu schreibenden Datenbereiches.

data

void*

Zeiger auf Speicher für den zu schreibenden bzw. zu lesenden Daten.

Rückgabewerte

Symbol

Wert

Bedeutung

 

0

Die Funktion wurde fehlerfrei durchgeführt.

 

-3

Der Simulations-CNC-Kern ist noch nicht initialisiert.

ERR_CNC_RET_MEMORY

-4

Der oder die Rückgabewerte passen nicht in den bereitgestellten Speicher.

 

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

  • ungültige Daten bei Schreibzugriffen oder
  • ungültiger Zustand von kernelv, wie z. B. Listenaktualisieren, während CNC-Kanal im Fehler ist.