Читайте два визовых инструмента параллельно с Matlab

Я пытаюсь читать данные с двух осциллографов Keysight параллельно с Matlab (2015a). Для этого я использую набор инструментов параллельных вычислений с командой spmd. У меня есть функция для чтения данных, которая принимает объект визы в качестве параметра и возвращает необработанные данные. Это отлично работает вне команды spmd, например (scope1 и scope2 являются объектами с открытой визой):

scope = {scope1, scope2}
scopedata1 = scopeGetCh1Raw(scope{1});
scopedata2 = scopeGetCh1Raw(scope{2});

Я получаю данные с обоих осциллографов.

If I do:

spmd
    scopedata = scopeGetCh1Raw(scope{labindex});
end

Я получаю следующую ошибку:

Error detected on workers 1 2.

Caused by:
    Error using icinterface/fprintf (line 147)
    OBJ must be connected to the hardware with FOPEN.
    Error using icinterface/fprintf (line 147)
    OBJ must be connected to the hardware with FOPEN.

Любые идеи, что происходит не так?

Ура Нильс


person Nils    schedule 27.10.2015    source источник


Ответы (1)


Обработчики, работающие с телом вашего блока spmd, являются отдельными процессами. Я предполагаю, что вам нужно будет вызвать fopen внутри spmd, например:

spmd
    myScope = fopen(...); % do whatever to open the scope
    scopedata = scopeGetCh1Raw(myScope);
end
person Edric    schedule 27.10.2015