class WireScan: Garage, W1X, W1Y, W2X, W2Y, Foil = "GARAGE", "W1X", "W1Y", "W2X", "W2Y", "Foil" def __init__(self, prefix, sel = None): self.prefix = prefix self.velocity = Channel(self.prefix + ":SCAN_VELO_SP") self.cycles = Channel(self.prefix + ":NB_CYCL_SP") self.currCycl = Channel(self.prefix + ":CURR_CYCL", callback = self.on_cycle_change) self.currCycl.set_monitored(True) #self.current_cycle = self.currCycl.get() self.selection = None self.u0 = None self.offset = None self.range = None self.start = None self.end = None if sel is not None: self.set_selection(sel) def on_cycle_change(self, val): print "On cycle chenge: ", val self.current_cycle = val def set_selection(self, sel): if not sel in [WireScan.Garage, WireScan.W1X, WireScan.W1Y, WireScan.W2X, WireScan.W2Y, WireScan.Foil]: raise Exception("Invalid Wire Scan selection: " + str(sel)) self.selection = sel self.u0 = Channel(self.prefix + ":" + self.selection + "_U0_SP") self.offset = Channel(self.prefix + ":" + self.selection + "_OFF_SP") self.range = Channel(self.prefix + ":" + self.selection + "_RANGE_SP") self.start = Channel(self.prefix + ":" + self.selection + "_START_SP") self.end = Channel(self.prefix + ":" + self.selection + "_END_SP") def close(self): self.velocity.close() self.cycles.close() self.currCycl.close() if self.u0 is not None: self.u0.close() if self.offset is not None: self.offset.close() if self.range is not None: self.range.close() if self.start is not None: self.start.close() if self.end is not None: self.end.close()