gclib  1.36.3
Communications API for Galil controllers and PLCs

◆ GRecord()

union GDataRecord record,
GOption  method 

Provides a fresh copy of the controller's data record. Data is cast into a union, GDataRecord.

gConnection's handle.
recordA pointer to the user's DataRecord union to hold the copy.
methodDetermines the method for acquiring the data.
  • G_QR: QR is used via command-and-response.
  • G_DR: DR is used for asynchronous acquisition.
The success status or error code of the function. See gclib_errors.h for possible values.

When using G_DR, the asynchronous data record must already be set up.

  • -s DR must be used in the GOpen() address string to subscribe to records. The driver will automatically set the second argument of DR, where applicable.
  • GRecordRate() should be issued to set DR to an appropriate interval, n. The interval must be no faster than the rate at which GRecord() is called.

GRecord() will block until the data record is received, or the transaction times out.

If this function is called with a timeout of zero and the G_DR method, a non-blocking read is performed. If a data record has been processed since the last time the function was called, this data will be returned. If there is not a processed data reecord, but there is data waiting in the socket or PCI FIFO, one read will be performed to process the waiting data. If new data is still not found after these two attempts, G_GCLIB_NON_BLOCKING_READ_EMPTY will be returned.

See x_grecord.cpp for an example. See x_nonblocking.cpp for an example of non-blocking usage.