Remote Hardware

Remote hardware is used to allow other software clients access to pychron hardware, such as valves and laser systems. A simple messaging system is used to pass information between pychron and a client. Currently the most active client is Mass Spec which uses the remote hardware protocol to do all of its hardware tasks.

The protocol is broken in two sections Extraction Line Calls and Laser Calls. Calls are simple ASCII text messages sent over the ethernet using either the UDP or TCP internet protocols

A response to a call is OK, a value, or an ErrorCode

Extraction Line Calls

Open alias

Open the valve called alias. InvalidValveErrorCode return if alias not available

Close alias

Close the valve called alias. InvalidValveErrorCode return if alias not available

GetValveState alias

Get alias state. Returns 0 for closed 1 for open

GetValveStates

Get all the valves states as a word. Returns a string <alias><state> e.g. A1B0C1D1E0F0

GetValveLockStates

Get all the valves lock states as a word. Returns a string <alias><lock_state> e.g. A1B0C1D1E0F0

StartMultRuns multruns_id
CompleteMultRuns
StartRun runid
CompleteRun
PychronScript script
ScriptState

Laser Calls

Enable

Enable the laser. This is required before the laser’s power can be set using SetLaserPower

Disable

Disable the laser

SetLaserPower power

Set the laser’s power to power. power must be between 0-100.

ReadLaserPower

Read the lasers internal power meter. Returns an 8 bit value i.e 0-255

GetLaserStatus

Return OK if the laser can be enabled. If an interlock is enabled, such as insufficient coolant flow, an error will be returned

SetBeamDiameter

Set the beam diameter setting.

GetBeamDiameter

Get the beam diameter setting.

SetZoom zoom

Set zoom. zoom must be between 0-100.

GetZoom

Get zoom. returns value between 0-100.

GetPosition

Returns a comma separated list of positions X,Y,Z

GoToHole holenum

Go to hole holename. InvalidHoleErrorCode returned if hole is not in the current stage map.

GetJogProcedures

Return a list of available Jog procedures. Jog is a MassSpec term and a misnomer. Pychron internal refers to them as Patterns.

DoJog name

Launch the jog named name.

AbortJog

Abort the current jog

SetX xpos

Set the laser’s stage controller X axis to xpos.

SetY ypos

Set the laser’s stage controller X axis to ypos.

SetZ zpos

Set the laser’s stage controller X axis to zpos.

SetXY xypos

Set the laser’s stage controller X and Y axes to xypos. xypos should be a comma separated list of numbers. e.g SetXY 10.1,-5.03

GetXMoving
GetYMoving
GetDriveMoving
StopDrive
SetDriveHome
SetHomeX
SetHomeY
SetHomeZ