Передайте NET-Object в параллельную функцию (parfeval) в Matab
Я пытаюсь передать NET-объект функции, работающей в параллельном пуле в Matlab.
Хотя я думал, что "parallel.pool.Constant" - это способ сделать это, поскольку он отлично работает для других объектов (например, для подключения к базе данных), в этом случае он не работает.
Поскольку я не получаю сообщения об ошибке, я не могу понять, почему это не работает.
Также функция отображения ничего не показывает.
Образец кода:
%% Import Ads.dll
AdsAssembly = NET.addAssembly('D:\TwinCat3\AdsApi\.NET\v4.0.30319\TwinCAT.Ads.dll');
import TwinCAT.Ads.*;
%Create TcAdsClient instance
tcClient = TcAdsClient;
tc = parallel.pool.Constant(tcClient); %Create pool constant to pass object
pool = gcp();
parfeval(pool,@pfcn,0,tc);
function pfcn(tc)
disp(tc.Value);
tcClient = tc.Value;
tcClient.Connect(851); %Connect to ADS port 851 on the local machine
end
Пример, когда у меня все работает нормально (клиент OPC UA):
pool = gcp();
Q = parallel.pool.DataQueue;
serverList = opcuaserverinfo('192.168.60.200');
hsInfo = findDescription(serverList, 'K6');
uaClient = opcua(hsInfo);
opc_const = parallel.pool.Constant(uaClient);
parfeval(pool, @pfcn, 0, Q, opc_const);
listener = afterEach(Q, @disp);
function pfcn(Q, opc_const)
par_uaClient = opc_const.Value;
connect(par_uaClient);
conn_state = isConnected(par_uaClient);
send(Q, par_uaClient)
end