def __init__(self, serial=None, **kwargs): super().__init__(**kwargs) if serial is not None: # Attach the serial devices self._rx = clink.ClinkSerialRx() pr.streamConnect(serial, self._rx) self._tx = clink.ClinkSerialTx() pr.streamConnect(self._tx, serial) @self.command(value='', name='SendString', description='Send a command string') def sendString(arg): if self._tx is not None: self._tx.sendString(arg)
def __init__( self, name = 'UartOpal1000', description = 'Uart Opal1000 channel access', serial = None, **kwargs): super().__init__(name=name, description=description, **kwargs) # Attach the serial devices self._rx = UartOpal1000Rx() pr.streamConnect(serial,self._rx) self._tx = clink.ClinkSerialTx() pr.streamConnect(self._tx,serial) @self.command(value='', name='SendString', description='Send a command string') def sendString(arg): if self._tx is not None: self._tx.sendString(arg) ############################## # Variables ############################## self.add(pr.LocalVariable( name = 'ID', description = 'Retrieves the camera model and serial number', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@ID?') )) self.add(pr.LocalVariable( name = 'BS', description = 'Build string', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@BS?') )) self.add(pr.LocalVariable( name = 'CCE[0]', description = 'Selects the exposure control source and event selection', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@CCE{self.CCE[0].get()};{self.CCE[1].get()}') if (self.CCE[0].get()!='' and self.CCE[1].get()!='') else '' )) self.add(pr.LocalVariable( name = 'CCE[1]', description = 'Selects the exposure control source and event selection', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@CCE{self.CCE[0].get()};{self.CCE[1].get()}') if (self.CCE[0].get()!='' and self.CCE[1].get()!='') else '' )) self.add(pr.LocalVariable( name = 'CCFS[0]', description = 'Selects the frame start control source and event selection', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@CCFS{self.CCFS[0].get()};{self.CCFS[1].get()}') if (self.CCFS[0].get()!='' and self.CCFS[1].get()!='') else '' )) self.add(pr.LocalVariable( name = 'CCFS[1]', description = 'Selects the frame start control source and event selection', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@CCFS{self.CCFS[0].get()};{self.CCFS[1].get()}') if (self.CCFS[0].get()!='' and self.CCFS[1].get()!='') else '' )) self.add(pr.LocalVariable( name = 'DPE', description = 'Enables or disables the defect pixel correction.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@DPE{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'FP', description = 'Sets the frame period.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@FP{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'FSM', description = 'Selects the FSTROBE output and polarity', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@FSM{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'FST[0]', description = 'Configures the FSTROBE, step, delay and active', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@FST{self.FST[0].get()};{self.FST[1].get()}') if (self.FST[0].get()!='' and self.FST[1].get()!='') else '' )) self.add(pr.LocalVariable( name = 'FST[1]', description = 'Configures the FSTROBE, step, delay and active', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@FST{self.FST[0].get()};{self.FST[1].get()}') if (self.FST[0].get()!='' and self.FST[1].get()!='') else '' )) self.add(pr.LocalVariable( name = 'GA', description = 'Sets the digital gain of the camera.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@GA{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'IT', description = 'Sets the integration time.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@IT{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'MI', description = 'Enables or disables the mirror function.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@MI{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'MO', description = 'Sets the operating mode of the camera.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@MO{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'OFS', description = 'Sets the output offset in GL at 12 bit internal resolution', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@OFS{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'OR', description = 'Sets the output resolution of the camera.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@OR{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'TP', description = 'Selects display of the test pattern', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@TP{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'VBIN', description = 'Sets the image output binning', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@VBIN{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'WB[0]', description = 'Sets the gain for the Red, Green and Blue channel', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@WB{self.WB[0].get()};{self.WB[1].get()};{self.WB[2].get()}') if (self.WB[0].get()!='' and self.WB[1].get()!='' and self.WB[2].get()!='') else '' )) self.add(pr.LocalVariable( name = 'WB[1]', description = 'Sets the gain for the Red, Green and Blue channel', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@WB{self.WB[0].get()};{self.WB[1].get()};{self.WB[2].get()}') if (self.WB[0].get()!='' and self.WB[1].get()!='' and self.WB[2].get()!='') else '' )) self.add(pr.LocalVariable( name = 'WB[2]', description = 'Sets the gain for the Red, Green and Blue channel', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@WB{self.WB[0].get()};{self.WB[1].get()};{self.WB[2].get()}') if (self.WB[0].get()!='' and self.WB[1].get()!='' and self.WB[2].get()!='') else '' )) self.add(pr.LocalVariable( name = 'BL', description = 'Sets the black level.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@BL{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'VR', description = 'Enabling and disabling the vertical remap is done by means of the vertical remap command.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@VR{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'OVL', description = 'Overlay frame counter and integration time in first 8 pixels.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@OVL{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'FSP', description = ''' The active state of the strobe output can be inverted to adapt to the application requirements. 0 for the reverse polarity: in this polarity configuration the phototransistor at the camera output is non-conductive during the active state of the strobe. 1 for the normal polarity: in this polarity configuration the phototransistor at the camera output is conductive during the active state of the strobe. ''', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'@FSP{value}') if value!='' else '' ))
def __init__(self, serial=None, **kwargs): super().__init__(**kwargs) # Attach the serial devices self._rx = clink.UartUp900cl12bRx(self.path) pr.streamConnect(serial,self._rx) self._tx = clink.ClinkSerialTx(self.path) pr.streamConnect(self._tx,serial) @self.command(value='', name='SendString', description='Send a command string') def sendString(arg): if self._tx is not None: self._tx.sendString(arg) ############################## # Variables ############################## self.add(pr.LocalVariable( name = 'RU', description = 'Recall user page: Must have a number after “ru” such as 1, 2, 3 or 4', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'ru{value}') if value!='' else '' )) self.add(pr.BaseCommand( name = 'RP', description = 'Report current camera setting', function = lambda cmd: self._tx.sendString('rp') )) self.add(pr.BaseCommand( name = 'RF', description = 'Recall factory setting page', function = lambda cmd: self._tx.sendString('rf') )) self.add(pr.LocalVariable( name = 'SM', description = 'Shutter mode: Must have a number after sm (1 ~ f), refer to section 3.3 for details.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'sm{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'SP', description = 'Save user page: There are 4 user page available', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'sp{value}') if value!='' else '' )) self.add(pr.BaseCommand( name = 'NS', description = 'Normal speed: Refer to camera specifications', function = lambda cmd: self._tx.sendString('ns') )) self.add(pr.BaseCommand( name = 'DS', description = 'Double speed: Refer to camera specifications', function = lambda cmd: self._tx.sendString('ds') )) self.add(pr.BaseCommand( name = 'NM', description = 'Normal mode: Normal free running', function = lambda cmd: self._tx.sendString('nm') )) self.add(pr.BaseCommand( name = 'AM', description = 'Asynchronous mode: Asynchronous reset', function = lambda cmd: self._tx.sendString('am') )) self.add(pr.LocalVariable( name = 'GI', description = 'Gain increase: ### = Hexadecimals (000 ~ 3ff). If no number entered, gain will be increased by factor of 1. If a number is entered, then number will be added to stored gain.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'gi{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'GD', description = 'Gain decrease: ### = Hexadecimals (000 ~ 3ff). Same as gi, except it will be decreased.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'gd{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'GN', description = 'Gain number: ### = Hexadecimals (000 ~ 3ff). Refer to the gain curves below for details', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'gn{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'BI', description = 'Reference increase: ### = Hexadecimals (000 ~ 3ff). If no number entered, reference will be increased by factor of 1. If a number is entered, then number will be added to stored reference. Note: It’s very uncommon to change reference level, contact UNIQ for further details.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'bi{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'BD', description = 'Reference decrease: ### = Hexadecimals (000 ~ 3ff). If no number entered, reference will be increased by factor of 1. If a number is entered, then number will be added to stored reference. Note: It’s very uncommon to change reference level, contact UNIQ for further details.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'bd{value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'BN', description = 'Reference number: ### = Hexadecimals (000 ~ 3ff). If no number entered, reference will be increased by factor of 1. If a number is entered, then number will be added to stored reference. Note: It’s very uncommon to change reference level, contact UNIQ for further details.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'bn{value}') if value!='' else '' ))
def __init__( self, name = 'UartPiranha4', description = 'Uart Piranha4 channel access', serial = None, **kwargs): super().__init__(name=name, description=description, **kwargs) # Attach the serial devices self._rx = clink.ClinkSerialRx() pr.streamConnect(serial,self._rx) self._tx = clink.ClinkSerialTx() pr.streamConnect(self._tx,serial) @self.command(value='', name='SendString', description='Send a command string') def sendString(arg): if self._tx is not None: self._tx.sendString(arg) ############################## # Variables ############################## self.add(pr.LocalVariable( name = 'CCF', description = 'Calibrate user FPN dark flat field coefficients', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'ccf {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'CLS', description = 'Camera Link clock frequency', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'cls {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'CLM', description = 'Camera Link Mode', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'clm {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'CPA[0]', description = 'Calibrate user PRNU flat field coefficients: Algorithm Argument', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'cpa {self.CPA[0].get()} {self.CPA[1].get()} {self.CPA[2].get()}') if (self.CPA[0].get()!='' and self.CPA[1].get()!='' and self.CPA[2].get()!='') else '' )) self.add(pr.LocalVariable( name = 'CPA[1]', description = 'Calibrate user PRNU flat field coefficients: \# of lines to average Argument', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'cpa {self.CPA[0].get()} {self.CPA[1].get()} {self.CPA[2].get()}') if (self.CPA[0].get()!='' and self.CPA[1].get()!='' and self.CPA[2].get()!='') else '' )) self.add(pr.LocalVariable( name = 'CPA[2]', description = 'Calibrate user PRNU flat field coefficients: Target Argument', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'cpa {self.CPA[0].get()} {self.CPA[1].get()} {self.CPA[2].get()}') if (self.CPA[0].get()!='' and self.CPA[1].get()!='' and self.CPA[2].get()!='') else '' )) self.add(pr.LocalVariable( name = 'DST', description = 'Use this command to switch between Area and Single Line modes.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'dst {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'FFM', description = 'Set flat field mode', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'ffm {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'FRS', description = 'Set scan direction controlled reverse set', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'frs {value}') if value!='' else '' )) self.add(pr.BaseCommand( name = 'GCP', description = 'Display current value of camera configuration parameters', function = lambda cmd: self._tx.sendString('gcp') )) self.add(pr.LocalVariable( name = 'GET', description = 'The /"get/" command displays the current value(s) of the feature specified in the string parameter. Note that the parameter is preceded by a single quote \"\". Using this command will be easier for control software than parsing the output from the \"gcp\" command.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'get {value}') if value!='' else '' )) self.add(pr.BaseCommand( name = 'H', description = 'Display list of three letter commands', function = lambda cmd: self._tx.sendString('h') )) self.add(pr.LocalVariable( name = 'LPC', description = 'Load user set', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'lpc {value}') if value!='' else '' )) self.add(pr.BaseCommand( name = 'RC', description = 'Resets the camera to the saved user default settings. These settings are saved using the usd command.', function = lambda cmd: self._tx.sendString('rc') )) self.add(pr.LocalVariable( name = 'ROI[0]', description = 'Flat field region of interest: First pixel Argument', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'roi {self.ROI[0].get()} {self.ROI[1].get()}') if (self.ROI[0].get()!='' and self.ROI[1].get()!='') else '' )) self.add(pr.LocalVariable( name = 'ROI[1]', description = 'Flat field region of interest: Last pixel Argument', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'roi {self.ROI[0].get()} {self.ROI[1].get()}') if (self.ROI[0].get()!='' and self.ROI[1].get()!='') else '' )) self.add(pr.BaseCommand( name = 'RPC', description = 'Reset all user FPN values to zero and all user PRNU coefficients to one', function = lambda cmd: self._tx.sendString('rpc') )) self.add(pr.LocalVariable( name = 'SAC', description = 'Set AOI Counter', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'sac {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'SAD[0]', description = 'Define an AOI: Selector Argument', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'sad {self.SAD[0].get()} {self.SAD[1].get()} {self.SAD[2].get()}') if (self.SAD[0].get()!='' and self.SAD[1].get()!='' and self.SAD[2].get()!='') else '' )) self.add(pr.LocalVariable( name = 'SAD[1]', description = 'Define an AOI: Offset Argument', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'sad {self.SAD[0].get()} {self.SAD[1].get()} {self.SAD[2].get()}') if (self.SAD[0].get()!='' and self.SAD[1].get()!='' and self.SAD[2].get()!='') else '' )) self.add(pr.LocalVariable( name = 'SAD[2]', description = 'Define an AOI: Width Argument', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'sad {self.SAD[0].get()} {self.SAD[1].get()} {self.SAD[2].get()}') if (self.SAD[0].get()!='' and self.SAD[1].get()!='' and self.SAD[2].get()!='') else '' )) self.add(pr.LocalVariable( name = 'SAM', description = 'Set AOI mode', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'sam {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'SBH', description = 'Set horizontal binning', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'sbh {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'SBR', description = 'Set baud rate', mode = 'RW', value = '', units = 'bps', localSet = lambda value: self._tx.sendString(f'sbr {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'SBV', description = 'Set vertical binning', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'sbv {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'SCD', description = 'Set sensor scan direction', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'scd {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'SEM', description = 'Set exposure time mode', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'sem {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'SET', description = 'Set internal exposure time in nanoseconds (25 ns resolution)', mode = 'RW', value = '', units = '25ns', localSet = lambda value: self._tx.sendString(f'set {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'SMM', description = 'Set mirroring mode', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'smm {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'SPF', description = 'Set pixel format', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'spf {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'SSB', description = 'Set contrast offset - single value added to all pixels after PRNU/flat field coefficients (before gain).', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'ssb {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'SSF', description = 'Set internal line rate in Hz', mode = 'RW', value = '', units = 'Hz', localSet = lambda value: self._tx.sendString(f'ssf {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'SSG', description = 'Set gain as a single value multiplied by all pixels.', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'ssg {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'STG', description = 'Set TDI Stages', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'stg {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'STM', description = 'Set trigger mode', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'stm {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'SVM', description = 'Select test pattern', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'svm {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'USD', description = 'Select user set to load when camera is reset', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'usd {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'USL', description = 'Load user set', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'usl {value}') if value!='' else '' )) self.add(pr.LocalVariable( name = 'USS', description = 'Save user set', mode = 'RW', value = '', localSet = lambda value: self._tx.sendString(f'uss {value}') if value!='' else '' )) self.add(pr.BaseCommand( name = 'VT', description = 'Display internal temperature in degrees Celsius', function = lambda cmd: self._tx.sendString('vt'), )) self.add(pr.BaseCommand( name = 'VV', description = 'Display supply voltage', function = lambda cmd: self._tx.sendString('vv'), )) self.add(pr.BaseCommand( name = 'SendEscape', description = 'Send the Escape Char', function = lambda cmd: self._tx.sendEscape() ))