2013-02-27 2 views
0

Я запускаю из C++ функцию MATLAB (dll). Эта функция получает некоторые параметры, а запускает цикл со многими повторениями. Есть ли способ установить некоторый флаг в коде C++ и проверить его на каждой итерации из функции MATLAB. Если для этого флага установлено значение false (скажем, другим потоком) в коде C++, функция MATLAB будет разорвать цикл и вернуться к коду C++Элемент управления MATLAB dll из кода C++

+2

Как насчет того, если в случае события флага вы создаете файл, а MATLAB проверяет его с помощью функции 'exist'? – yuk

+0

У вас есть источник dll? – sfotiadis

ответ

0

Если вы можете изменить оба кода C++ и MATLAB (как мы можем предположить из вопроса) Я думаю, что самый простой способ - использовать пустой файл в качестве флага события. Если какой-либо другой поток может создать файл, скажем «event.flag», вы можете легко проверить свое существование в функции MATLAB:

if exist('event.flag','file') 
    % do_something 
end 

Не забудьте включить второй аргумент file, что заставит существовать работать намного быстрее ,

Я считаю, что это решение очень легко и безошибочно, чем пытаться использовать любые глобальные переменные.


Если вам необходимо обменяться данными между MATLAB и другим процессом во время выполнения, я бы рекомендовал использовать MEMMAPFILE объект. Проверьте документацию, чтобы убедиться, что это будет уместно в вашем случае.

Смежные вопросы