Эффективный способ индексации функций вызова инструмента для использования в функциях «сделай это» - PullRequest
0 голосов
/ 25 ноября 2018

Я управляю несколькими инструментами (осциллографом, регистратором данных и т. Д.) С помощью Python через PyVisa, и недавно я решил предварительно определить множество соответствующих синтаксисов функций инструментов как функции с переменными.Пример:

def scope_reset():
    import visa
    instr = visa.ResourceManager().open_resource('foo')
    instr.write('*RST')

def logger_reset():
    import visa
    instr = visa.ResourceManager().open_resource('bar')
    instr.write('*RST')

def reset_instrument(instruments):

    if 'scope' in instruments:
        scope_reset()

    if 'logger' in instruments:
        logger_reset()

Однако я хочу предварительно определить каждую из этих переменных инструмента ( instr в этом примере) и просто дать команду, выполнив что-то вроде этого:

def scope_reset():
    scope.write('*RST')

def logger_reset():
    logger.write('*RST')

def reset_instrument(instruments):

    if 'scope' in instruments:
        scope_reset()

    if 'logger' in instruments:
       logger_reset()

Другими словами, я хочу избавиться как от импорта виз, так и от определения переменной инструмента в функциях прямого инструмента, как в первых двух.Должен ли я:

  • Создать класс, который определяет переменную?Сможет ли передаваемая переменная прибора из экземпляра класса (это объект?) Выполнить свою работу, не будучи вызванной вызовом «импортной визы» в каждой функции, которая хочет использовать переменную?
  • Сделать файл .py для каждого инструмента, импортировать визу и определить инструмент в начале?Я предполагаю, что это не сработает, потому что импорт функции «оставил бы» импорт визы и переменную инструмента, импортируя только функцию instr.dosomething (), которая не имеет ни малейшего представления о том, что означает «instr».
  • Лучшее решение?(ставлю на это)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...