# GsiocInterface Beta

class GsiocInterface(serial_port=None, unit_id=0)

An implementation of GSIOC serial communications protocol.

This is not an ActiveComponent.

It is a helper class designed to make working with GSIOC components easier. You cannot add it to an Apparatus. It must be only be manipulated by other components.

GSIOC is used by many devices made by Gilson and other manufacturers. It runs on the RS-422/485 standard and works well with USB to RS-422 adapters by FTDI, e.g. https://www.ftdichip.com/Products/Cables/USBRS422.htm.

For protocol details please see Gilson document LT2181: GSIOC Technical Manual.

# Arguments

  • serial_port: The serial port to connect over.
  • unit_id: The component's unit ID.

# Attributes

  • gsioc_id: The unit_id, shifted down by 128 per the GSIOC specification.

# Metadata

Built and maintained by:

Author Institution GitHub
Murat Ozturk Indiana University, School of Informatics, Computing and Engineering @littleblackfish

# buffered_command

def buffered_command(self, command: str) -> None

Send buffered command.

Buffered commands send instructions to a slave device.

# Arguments

  • command: The command to execute.

# Raises

  • RuntimeError: When the device is not ready or does not respond.

# buffered_command_async

def buffered_command_async(self, command: str) -> None

Async implementation of buffered_command.

For API docs, see buffered_command.

# connect

def connect(self)

Connect to a GSIOC device.

Since GSIOC was designed around multiple slaves, even if we have single device on the bus, we still have to 'connect' to a specific unit_id every time we send out a command.

# Raises

  • RuntimeError: When unable to connect.

# connect_async

def connect_async(self) -> None

Async implementation of connect.

For API docs, see connect.

# immediate_command

def immediate_command(self, command: str) -> str

Send immediate command.

Immediate commands query GSIOC devices for information.

# Arguments

  • command: The command to execute.

# Returns

  • The return value of the command.

# immediate_command_async

def immediate_command_async(self, command: str) -> str

Async implementation of immediate_command.

For API docs, see immediate_command.