コード例 #1
0
ファイル: isc_midlib.py プロジェクト: zhli-hbar/Instrumental
class NiceISC(NiceLib):
    """Mid-level wrapper for Thorlabs.MotionControl.IntegratedStepperMotors.dll"""
    _info_ = load_lib('isc_', __package__, builder='._build_kinesis',
                      kwargs={'shortname': 'isc',
                              'sublib': 'Thorlabs.MotionControl.IntegratedStepperMotors'})
    _prefix_ = 'TLI_'
    _ret_ = ret_errcheck

    BuildDeviceList = Sig()
    GetDeviceListSize = Sig(ret=ret_return)
    GetDeviceListExt = Sig('buf', 'len')
    GetDeviceListByTypeExt = Sig('buf', 'len', 'in')
    GetDeviceListByTypesExt = Sig('buf', 'len', 'in', 'in')
    GetDeviceInfo = Sig('in', 'out', ret=ret_success)

    # GetDeviceList = Sig('out')
    # GetDeviceListByType = Sig('out', 'in', dict(first_arg=False))
    # GetDeviceListByTypes = Sig('out', 'in', 'in', dict(first_arg=False))

    class Device(NiceObject):
        _prefix_ = 'ISC_'

        _sigs_ = {name: all_sigs[name] for name in [
            'Open',
            'Close',
            'Identify',
            'GetHardwareInfo',
            'GetFirmwareVersion',
            'GetSoftwareVersion',
            'LoadSettings',
            'PersistSettings',
            'GetNumberPositions',
            'CanHome',
            'Home',
            'NeedsHoming',
            'MoveToPosition',
            'GetPosition',
            'GetPositionCounter',
            'RequestStatus',
            'RequestStatusBits',
            'GetStatusBits',
            'StartPolling',
            'PollingDuration',
            'StopPolling',
            'RequestSettings',
            'ClearMessageQueue',
            'RegisterMessageCallback',
            'MessageQueueSize',
            'GetNextMessage',
            'WaitForMessage',
            'GetMotorParamsExt',
            'SetJogStepSize',
            'GetJogVelParams',
            'GetBacklash',
            'SetBacklash',
            'GetLimitSwitchParams',
            'GetLimitSwitchParamsBlock',
        ]}
コード例 #2
0
ファイル: kinesis.py プロジェクト: thericem/Instrumental
class NiceKinesisISC(NiceLib):
    """Mid-level wrapper for Thorlabs.MotionControl.IntegratedStepperMotors.dll"""
    _info_ = load_lib('kinesis', __package__)
    _prefix_ = 'TLI_'
    _ret_ = ret_errcheck

    BuildDeviceList = Sig()
    GetDeviceListSize = Sig(ret=ret_return)
    GetDeviceListExt = Sig('buf', 'len')
    GetDeviceListByTypeExt = Sig('buf', 'len', 'in')
    GetDeviceListByTypesExt = Sig('buf', 'len', 'in', 'in')
    GetDeviceInfo = Sig('in', 'out')

    # GetDeviceList = Sig('out')
    # GetDeviceListByType = Sig('out', 'in', dict(first_arg=False))
    # GetDeviceListByTypes = Sig('out', 'in', 'in', dict(first_arg=False))

    class Device(NiceObject):
        _prefix_ = 'ISC_'

        Open = Sig('in')
        Close = Sig('in', ret=ret_return)
        Identify = Sig('in', ret=ret_ignore)
        GetHardwareInfo = Sig('in', 'buf', 'len', 'out', 'out', 'buf', 'len',
                              'out', 'out', 'out')
        GetFirmwareVersion = Sig('in', ret=ret_return)
        GetSoftwareVersion = Sig('in', ret=ret_return)
        LoadSettings = Sig('in', ret=ret_success)
        PersistSettings = Sig('in', ret=ret_success)
        GetNumberPositions = Sig('in', ret=ret_return)
        CanHome = Sig('in', ret=ret_return)
        Home = Sig('in')
        NeedsHoming = Sig('in', ret=ret_return)
        MoveToPosition = Sig('in', 'in')
        GetPosition = Sig('in', ret=ret_return)
        GetPositionCounter = Sig('in', ret=ret_return)
        RequestStatus = Sig('in')
        RequestStatusBits = Sig('in')
        GetStatusBits = Sig('in', ret=ret_return)
        StartPolling = Sig('in', 'in', ret=ret_success)
        PollingDuration = Sig('in', ret=ret_return)
        StopPolling = Sig('in', ret=ret_ignore)
        RequestSettings = Sig('in')
        ClearMessageQueue = Sig('in', ret=ret_ignore)
        RegisterMessageCallback = Sig('in', 'in', ret=ret_ignore)
        MessageQueueSize = Sig('in', ret=ret_return)
        GetNextMessage = Sig('in', 'out', 'out', 'out', ret=ret_success)
        WaitForMessage = Sig('in', 'out', 'out', 'out', ret=ret_success)
        GetMotorParamsExt = Sig('in', 'out', 'out', 'out')
        SetJogStepSize = Sig('in', 'in')
        GetJogVelParams = Sig('in', 'out', 'out')
        GetBacklash = Sig('in', ret=ret_return)
        SetBacklash = Sig('in', 'in')
        GetLimitSwitchParams = Sig('in', 'out', 'out', 'out', 'out', 'out')
        GetLimitSwitchParamsBlock = Sig('in', 'out')
コード例 #3
0
ファイル: thorlabs_ccs.py プロジェクト: lneuhaus/Instrumental
class NiceCCSLib(NiceLib):
    """ Provides a convenient low-level wrapper for the library
    Thorlabs.MotionControl.TCube.DCServo.dll"""
    _info = load_lib('tlccs', __package__)
    _struct_maker = None
    _prefix = ('tlccs_')
    _buflen = 256
    _ret_wrap = 'error_code'

    def _ret_error_code(error_code, niceobj):
        if error_code != 0:
            if niceobj is None:
                raise ThorlabsCCSError(
                    NiceCCSLib.error_message(0, error_code)[0])
            else:
                raise ThorlabsCCSError(niceobj.error_message(error_code)[0])

    init = ('in', 'in', 'in', 'out')
    error_message = ('in', 'in', 'buf[512]')

    NiceCCS = NiceObjectDef({
        'close': ('in'),
        'setIntegrationTime': ('in', 'in'),
        'getIntegrationTime': ('in', 'out'),
        'startScan': ('in'),
        'startScanCont': ('in'),
        'startScanExtTrg': ('in'),
        'startScanContExtTrg': ('in'),
        'getDeviceStatus': ('in', 'out'),
        'getScanData': ('in', 'arr[{}]'.format(NUM_RAW_PIXELS)),
        'getRawScanData': ('in', 'out'),
        'setWavelengthData': ('in', 'in', 'in', 'in'),
        'getWavelengthData':
        ('in', 'in', 'arr[{}]'.format(NUM_RAW_PIXELS), 'out', 'out'),
        'getUserCalibrationPoints': ('in', 'out', 'out', 'out'),
        'setAmplitudeData': ('in', 'in', 'in', 'in', 'in'),
        'getAmplitudeData':
        ('in', 'arr[{}]'.format(NUM_RAW_PIXELS), 'in', 'in', 'in'),
        'identificationQuery':
        ('in', 'buf[256]', 'buf[256]', 'buf[256]', 'buf[256]', 'buf[256]'),
        'revision_query': ('in', 'out', 'out'),
        'reset': ('in'),
        'self_test': ('in', 'out', 'out'),
        'setUserText': ('in', 'in'),
        'getUserText': ('in', 'out'),
        'setAttribute': ('in', 'in', 'in'),
        'getAttribute': ('in', 'in', 'out'),
        'error_query': ('in', 'out', 'out'),
        'error_message': ('in', 'in', 'buf[512]', {
            'ret': 'ignore'
        })
    })
コード例 #4
0
ファイル: ff_midlib.py プロジェクト: zhli-hbar/Instrumental
class NiceFF(NiceLib):
    """Mid-level wrapper for Thorlabs.MotionControl.FilterFlipper.dll"""
    _info_ = load_lib('ff_', __package__, builder='._build_kinesis',
                      kwargs={'shortname': 'ff',
                              'sublib': 'Thorlabs.MotionControl.FilterFlipper'})
    _prefix_ = 'TLI_'
    _ret_ = ret_errcheck

    BuildDeviceList = Sig()
    GetDeviceListSize = Sig(ret=ret_return)
    GetDeviceListExt = Sig('buf', 'len')
    GetDeviceListByTypeExt = Sig('buf', 'len', 'in')
    GetDeviceListByTypesExt = Sig('buf', 'len', 'in', 'in')
    GetDeviceInfo = Sig('in', 'out', ret=ret_success)

    # GetDeviceList = Sig('out')
    # GetDeviceListByType = Sig('out', 'in', first_arg=False)
    # GetDeviceListByTypes = Sig('out', 'in', 'in', first_arg=False)

    class Flipper(NiceObject):
        _prefix_ = 'FF_'

        Open = Sig('in')
        Close = Sig('in')
        Identify = Sig('in')
        GetHardwareInfo = Sig('in', 'buf', 'len', 'out', 'out', 'buf', 'len', 'out', 'out', 'out')
        GetFirmwareVersion = Sig('in', ret=ret_return)
        GetSoftwareVersion = Sig('in', ret=ret_return)
        LoadSettings = Sig('in', ret=ret_success)
        PersistSettings = Sig('in', ret=ret_success)
        GetNumberPositions = Sig('in', ret=ret_return)
        Home = Sig('in')
        MoveToPosition = Sig('in', 'in')
        GetPosition = Sig('in', ret=ret_return)
        GetIOSettings = Sig('in', 'out')
        GetTransitTime = Sig('in', ret=ret_return)
        SetTransitTime = Sig('in', 'in')
        RequestStatus = Sig('in')
        GetStatusBits = Sig('in', ret=ret_return)
        StartPolling = Sig('in', 'in', ret=ret_success)
        PollingDuration = Sig('in', ret=ret_return)
        StopPolling = Sig('in')
        RequestSettings = Sig('in')
        ClearMessageQueue = Sig('in')
        RegisterMessageCallback = Sig('in', 'in')
        MessageQueueSize = Sig('in', ret=ret_return)
        GetNextMessage = Sig('in', 'in', 'in', 'in', ret=ret_success)
        WaitForMessage = Sig('in', 'in', 'in', 'in', ret=ret_success)
コード例 #5
0
ファイル: test_foo.py プロジェクト: GillesLM/NiceLib
class NiceFoo(NiceLib):
    """Foo library"""
    _info = load_lib('foo', pkg=None, dir=__file__)
    _ret = ret_return

    add = Sig('in', 'in')
    subtract = Sig('in', 'in')
    create_item = Sig()

    class Item(NiceObject):
        _init_ = 'create_item'
        _prefix_ = 'item_'

        get_id = Sig('in')
        get_value = Sig('in')
        set_value = Sig('in', 'in')
        static_value = Sig(use_handle=False)
コード例 #6
0
ファイル: test_hybrid_func.py プロジェクト: GillesLM/NiceLib
class NiceFoo(NiceLib):
    """Foo library"""
    _info = load_lib('foo', pkg=None, dir=__file__)
    _ret = ret_return

    @Sig('in', 'in')
    def add(cls, a, b):
        return cls._autofunc_add(a, b)

    create_item = Sig()

    class Item(NiceObject):
        _init_ = 'create_item'
        _prefix_ = 'item_'

        get_id = Sig('in')
        get_value = Sig('in', ret=ret_ignore)
        set_value = Sig('in', 'in')
コード例 #7
0
class NiceTLI(NiceLib):
    """Mid-level wrapper for Thorlabs Kinesis TLI_ functions"""
    # NOTE: Wraps FilterFlipper DLL now because as of August 2020, DeviceManager DLL does not
    # include simulation-related functions
    _info_ = load_lib('tli_',
                      __package__,
                      builder='._build_kinesis',
                      kwargs={
                          'shortname': 'tli',
                          'sublib': 'Thorlabs.MotionControl.FilterFlipper'
                      })
    _prefix_ = 'TLI_'
    _ret_ = ret_errcheck

    BuildDeviceList = Sig()
    GetDeviceListSize = Sig(ret=ret_return)
    GetDeviceListExt = Sig('buf', 'len')
    GetDeviceListByTypeExt = Sig('buf', 'len', 'in')
    GetDeviceListByTypesExt = Sig('buf', 'len', 'in', 'in')
    GetDeviceInfo = Sig('in', 'out', ret=ret_success)
    InitializeSimulations = Sig(ret=ret_ignore)
    UninitializeSimulations = Sig(ret=ret_ignore)
コード例 #8
0
class NiceCCSLib(NiceLib):
    """Mid-level wrapper for TLCCS_XX.dll"""
    _info_ = load_lib('tlccs', __package__)
    _prefix_ = 'tlccs_'
    _buflen_ = 256
    _ret_ = ccs_errcheck

    init = Sig('in', 'in', 'in', 'out')
    error_message = Sig('in', 'in', 'buf[512]')

    class NiceCCS(NiceObject):
        close = Sig('in')
        setIntegrationTime = Sig('in', 'in')
        getIntegrationTime = Sig('in', 'out')
        startScan = Sig('in')
        startScanCont = Sig('in')
        startScanExtTrg = Sig('in')
        startScanContExtTrg = Sig('in')
        getDeviceStatus = Sig('in', 'out')
        getScanData = Sig('in', 'arr[{}]'.format(NUM_RAW_PIXELS))
        getRawScanData = Sig('in', 'out')
        setWavelengthData = Sig('in', 'in', 'in', 'in')
        getWavelengthData = Sig('in', 'in', 'arr[{}]'.format(NUM_RAW_PIXELS),
                                'out', 'out')
        getUserCalibrationPoints = Sig('in', 'out', 'out', 'out')
        setAmplitudeData = Sig('in', 'in', 'in', 'in', 'in')
        getAmplitudeData = Sig('in', 'arr[{}]'.format(NUM_RAW_PIXELS), 'in',
                               'in', 'in')
        identificationQuery = Sig('in', 'buf[256]', 'buf[256]', 'buf[256]',
                                  'buf[256]', 'buf[256]')
        revision_query = Sig('in', 'out', 'out')
        reset = Sig('in')
        self_test = Sig('in', 'out', 'out')
        setUserText = Sig('in', 'in')
        getUserText = Sig('in', 'out')
        setAttribute = Sig('in', 'in', 'in')
        getAttribute = Sig('in', 'in', 'out')
        error_query = Sig('in', 'out', 'out')
        error_message = Sig('in', 'in', 'buf[512]', ret=ret_ignore)
コード例 #9
0
"""

from warnings import warn
from numpy import frombuffer, sum, uint16, hstack, vstack
from enum import Enum
from nicelib import NiceLib, NiceObjectDef, load_lib
from ...errors import Error, InstrumentNotFoundError
from ..util import check_units, check_enums
from ... import Q_


class PicamError(Error):
    pass


lib = load_lib('picam', __package__)
BYTES_PER_PIXEL = 2


class NicePicamLib(NiceLib):
    """Wrapper for Picam.dll"""
    _info = lib
    _buflen = 256
    _prefix = 'Picam_'
    _ret_wrap = 'error'

    def _ret_error(error):
        if error != 0:
            if bool(NicePicamLib.IsLibraryInitialized()):
                NicePicamLib.GetEnumerationString(
                    lib.PicamEnumeratedType_Error, error)
コード例 #10
0
from nicelib import NiceLib, Sig, NiceObject, load_lib, RetHandler

from . import Camera
from .. import ParamSet
from ..util import check_units
from ...errors import Error, TimeoutError, LibError
from ... import Q_, u

if PY2:
    memoryview = buffer  # Needed b/c np.frombuffer is broken on memoryviews in PY2

__all__ = ['Pixelfly']

# Developed using version 2.1.0.29 of pf_cam.dll
info = load_lib('pixelfly', __package__)
ffi = info._ffi


class PixelflyLibError(LibError):
    MSG_FORMAT = '(0x{:X}) {}'


@RetHandler(num_retvals=0)
def pixelfly_errorcheck(code):
    from ._pixelfly import errortext  # Hide from sphinx
    if code != 0:
        pbuf = errortext.ffi.new('char[]', 1024)
        errortext.lib.PCO_GetErrorText(
            errortext.ffi.cast('unsigned int', code), pbuf, len(pbuf))
        err_message = errortext.ffi.string(pbuf)
コード例 #11
0
ファイル: mabuchi.py プロジェクト: aquilesC/experimentor
class NiceKinesisISC(NiceLib):
    """ This class provides a convenient low-level wrapper for the library
    Thorlabs.MotionControl.FilterFlipper.dll"""
    _info = load_lib('kinesis', __package__)

    #
    # Error wrapping functions
    #
    def _ret(ret):
        if ret != 0:
            raise KinesisError(ret)

    def _ret_success(ret, funcname):
        if not ret:
            raise KinesisError(
                msg="Call to function '{}' failed".format(funcname))

    #
    # Function signatures
    #
    _prefix = 'TLI_'

    BuildDeviceList = ()
    GetDeviceListSize = ({'ret': 'return'}, )
    GetDeviceListExt = ('buf', 'len')
    GetDeviceListByTypeExt = ('buf', 'len', 'in')
    GetDeviceListByTypesExt = ('buf', 'len', 'in', 'in')
    GetDeviceInfo = ('in', 'out')

    # GetDeviceList = ('out')
    # GetDeviceListByType = ('out', 'in', dict(first_arg=False))
    # GetDeviceListByTypes = ('out', 'in', 'in', dict(first_arg=False))

    Device = NiceObjectDef(prefix='ISC_',
                           attrs=dict(
                               Open=('in'),
                               Close=('in', {
                                   'ret': 'return'
                               }),
                               Identify=('in', {
                                   'ret': 'ignore'
                               }),
                               GetHardwareInfo=('in', 'buf', 'len', 'out',
                                                'out', 'buf', 'len', 'out',
                                                'out', 'out'),
                               GetFirmwareVersion=('in', {
                                   'ret': 'return'
                               }),
                               GetSoftwareVersion=('in', {
                                   'ret': 'return'
                               }),
                               LoadSettings=('in', {
                                   'ret': 'success'
                               }),
                               PersistSettings=('in', {
                                   'ret': 'success'
                               }),
                               GetNumberPositions=('in', {
                                   'ret': 'return'
                               }),
                               Home=('in'),
                               NeedsHoming=('in', {
                                   'ret': 'return'
                               }),
                               MoveToPosition=('in', 'in'),
                               GetPosition=('in', {
                                   'ret': 'return'
                               }),
                               RequestStatus=('in'),
                               RequestStatusBits=('in'),
                               GetStatusBits=('in', {
                                   'ret': 'return'
                               }),
                               StartPolling=(
                                   'in',
                                   'in',
                                   {
                                       'ret': 'success'
                                   },
                               ),
                               PollingDuration=('in', {
                                   'ret': 'return'
                               }),
                               StopPolling=('in', {
                                   'ret': 'ignore'
                               }),
                               RequestSettings=('in'),
                               ClearMessageQueue=('in', {
                                   'ret': 'ignore'
                               }),
                               RegisterMessageCallback=('in', 'in', {
                                   'ret': 'ignore'
                               }),
                               MessageQueueSize=('in', {
                                   'ret': 'return'
                               }),
                               GetNextMessage=('in', 'out', 'out', 'out', {
                                   'ret': 'success'
                               }),
                               WaitForMessage=('in', 'out', 'out', 'out', {
                                   'ret': 'success'
                               }),
                               GetMotorParamsExt=('in', 'out', 'out', 'out'),
                               SetJogStepSize=('in', 'in'),
                               GetJogVelParams=('in', 'out', 'out'),
                               GetBacklash=('in', {
                                   'ret': 'return'
                               }),
                               SetBacklash=('in', 'in'),
                           ))
コード例 #12
0
ファイル: uc480.py プロジェクト: lneuhaus/Instrumental
import atexit
import weakref
import logging as log
import fnmatch
import numpy as np
import win32event

from nicelib import NiceLib, NiceObjectDef, load_lib

from . import Camera
from ..util import check_units
from .. import _ParamDict
from ...errors import InstrumentTypeError, InstrumentNotFoundError, Error, TimeoutError
from ... import Q_

info = load_lib('uc480', __package__)
ffi = info._ffi

__all__ = ['UC480_Camera']

global_weakkeydict = weakref.WeakKeyDictionary()


def to_bytes(text):
    if isinstance(text, bytes):
        return text
    elif isinstance(text, unicode):
        text.encode('utf-8')


def char_to_int(char):
コード例 #13
0
        instruments.append(params)
    return instruments


class DAQError(Error):
    def __init__(self, code):
        msg = "({}) {}".format(code, NiceNI.GetErrorString(code))
        self.code = code
        super(DAQError, self).__init__(msg)


class NotSupportedError(DAQError):
    pass


info = load_lib('ni', __package__)


class NiceNI(NiceLib):
    _info = info
    _prefix = ('DAQmx_', 'DAQmx')
    _buflen = 512

    def _ret_wrap(code):
        if code != 0:
            raise DAQError(code)

    GetErrorString = ('in', 'buf', 'len')
    GetSysDevNames = ('buf', 'len')
    CreateTask = ('in', 'out')
コード例 #14
0
ファイル: uc480.py プロジェクト: mabuchilab/Instrumental
                     RetHandler, Sig, ret_return)  # req: nicelib >= 0.5

from . import Camera
from ..util import check_units
from .. import ParamSet, Facet
from ...errors import (InstrumentNotFoundError, Error, TimeoutError, LibError,
                       UnsupportedFeatureError)
from ...log import get_logger
from ... import Q_

log = get_logger(__name__)

_INST_PARAMS = ['serial', 'id', 'model']
_INST_CLASSES = ['UC480_Camera']

info = load_lib('uc480', __package__)
ffi = info._ffi

__all__ = ['UC480_Camera']

global_weakkeydict = weakref.WeakKeyDictionary()


def to_bytes(text):
    if isinstance(text, bytes):
        return text
    elif isinstance(text, unicode):
        text.encode('utf-8')


def char_to_int(char):
コード例 #15
0
ファイル: picam.py プロジェクト: mabuchilab/Instrumental
from enum import Enum
from nicelib import NiceLib, load_lib, RetHandler, ret_ignore, Sig, NiceObject

from ...errors import Error
from ..util import check_units, check_enums
from ... import Q_

if PY2:
    memoryview = buffer  # Needed b/c np.frombuffer is broken on memoryviews in PY2


class PicamError(Error):
    pass


lib = load_lib('picam', __package__)
BYTES_PER_PIXEL = 2


@RetHandler(num_retvals=0)
def ret_error(error):
    if error != 0:
        if bool(NicePicamLib.IsLibraryInitialized()):
            NicePicamLib.GetEnumerationString(lib.PicamEnumeratedType_Error, error)
        else:
            ret_enum_string_error(error)


@RetHandler(num_retvals=0)
def ret_enum_string_error(error):
    if error != 0:
コード例 #16
0
ファイル: pixelfly.py プロジェクト: mabuchilab/Instrumental
from nicelib import NiceLib, Sig, NiceObject, load_lib, RetHandler

from . import Camera
from .. import ParamSet
from ..util import check_units
from ...errors import Error, TimeoutError, LibError
from ... import Q_, u

if PY2:
    memoryview = buffer  # Needed b/c np.frombuffer is broken on memoryviews in PY2

__all__ = ['Pixelfly']

# Developed using version 2.1.0.29 of pf_cam.dll
info = load_lib('pixelfly', __package__)
ffi = info._ffi


class PixelflyLibError(LibError):
    MSG_FORMAT = '(0x{:X}) {}'


@RetHandler(num_retvals=0)
def pixelfly_errorcheck(code):
    from ._pixelfly import errortext  # Hide from sphinx
    if code != 0:
        pbuf = errortext.ffi.new('char[]', 1024)
        errortext.lib.PCO_GetErrorText(errortext.ffi.cast('unsigned int', code), pbuf, len(pbuf))
        err_message = errortext.ffi.string(pbuf)
        raise PixelflyLibError(code & 0xFFFFFFFF, err_message)