経緯
MATLABで刺激制御とオンライン自動解析系を組みたかったので調べた.
記録PCが刺激PCに命令を出す形で計測がスタートする.時間精度がいらない制御なら十分.
クライアント側 (記録PC)
計測担当のPC.刺激PC出して欲しい刺激のIDを送る.
IPはサーバー側PCに設定する.
clear all
jTcpObj = jtcp('request','192.168.1.1', 3000, 'timeout', 2000);
mssg = [];
for i = 1:10
disp('-------------------')
disp(['Send: ' num2str(i)])
jtcp('write', jTcpObj, num2str(i));
pause(1)
while isempty(mssg)
mssg = jtcp('read',jTcpObj);
end
disp(mssg)
mssg = [];
end
jtcp('write', jTcpObj, 'quit');
jtcp('close',jTcpObj);
サーバー側 (刺激PC)
クライアントから刺激IDを受け取って表示する.
clear jTcpObj;
clearvars
i = 1;
disp('Waiting Access from client...')
jTcpObj = jtcp('accept', 3000, 'timeout', 30000);
disp(['Connected: ' jTcpObj.remoteHost])
mssg = [];
while true
disp('---------------');
disp(['trial: ' num2str(i) ', waiting stimID ...'])
while isempty(mssg)
mssg = jtcp('read',jTcpObj);
end
jTcpObj.outputStream.flush;
ids{i} = mssg;
if strcmp(mssg, 'quit')
disp('Received "quit" closing socket...')
jtcp('close',jTcpObj);
break;
end
jtcp('write',jTcpObj,['Stim Server Received: "' mssg '"']);
% stimuli
disp(['"' mssg '" Start']);
pause(2)
disp(['"' mssg '" Finished']);
i = i+1; mssg = [];
end
disp('')
disp('Session Finished')