Files
HPI/record_system_v24/ArcusDevice.py

76 lines
2.2 KiB
Python
Raw Permalink Normal View History

"""
Arcus controller python interface.
Only works if one ARCUS device is connected.
Including Arcus Configuration cables.
Open ArcusDevice.py in Python IDE --> Run --> Enter Terminal Commands
"""
import threading
import Arcus
import copy
import sys
class ArcusDevice(object):
"""
This is interface class to Arcus stepper controller
@author Lukas Zubal
@version 1.0
"""
def __init__(self):
"""
@brief Constructor
@param self object instance
"""
self.device = Arcus.Arcus()
if self.device.Connect() == 1:
print ' '
else:
print "Cannot open stepper device on port "
sys.exit()
self.outputBuffer = " "
self.lock = threading.Lock() # thread safety
self.verbose = 0
def close(self):
"""
@brief Closes Arcus device connection
@param self object instance
@return bool Returns a 1 if successful
"""
self.lock.acquire()
self.device.Close()
self.lock.release()
del self.device
return 1
def write(self, data):
"""
@brief Command-response call to Arcus device
@see Arcus controller manual for complete list of interactive commands
@param self object instance
@param data string containing interactive commands to arcus
@return str Returns string containing response of controller
"""
self.lock.acquire()
self.device.SendAndRecive(data, self.outputBuffer)
resp = copy.deepcopy(self.outputBuffer[:])
self.lock.release()
resp = resp.split('\x00')[0]
if self.verbose == 1:
print resp
return resp
arc = ArcusDevice()
arc.write('DN') # Send Terminal Command to return device name.
# print "Connected to device: " + response # Notify user
for i in range(len(sys.argv)-1):
response = arc.write(sys.argv[i+1]) # Process Command and save Controller Response
while response != 'OK':
response = arc.write(sys.argv[i+1])
if sys.argv[i+1] == 'HSPD':
print response
arc.close() # Close Device.
del arc