<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none"><!--P{margin-top:0;margin-bottom:0;} p
        {margin-top:0;
        margin-bottom:0}--></style>
</head>
<body dir="ltr" style="font-size:12pt;color:#000000;background-color:#FFFFFF;font-family:Calibri,Arial,Helvetica,sans-serif;">
<div dir="ltr" style="font-size:12pt; color:#000000; background-color:#FFFFFF; font-family:Calibri,Arial,Helvetica,sans-serif">
<div>Dear Fieldtrippers,
<p><br>
</p>
<p>I've been using Fieldtrip's buffer.exe in conjunction with biosemi2ft.exe to read EEG data in realtime.</p>
<p><br>
</p>
<p>I'd like to use buffer.exe to communicate EEG analysis results between Matlab sessions. I was wondering whether it's possible to spawn multiple buffer threads on separate ports? Host 'localhost' and port 1972 are already occupied by reading data from the
 amplifier. I'd like to use a separate port for additional communication during neurofeedback, but the only value for "port" that seems to work is 1972. "Host" accepts the values of 'localhost' and the current ip4 config address of the computer but can't seem to
 allow remote connections.</p>
<p><br>
</p>
<p>Does anyone know if host and port can accept values other than "localhost" and "1972"?<br>
</p>
<p><br>
</p>
<p>I couldn't many explicit examples on this procedure online, so I've posted my code for future reference.<br>
</p>
<p><br>
</p>
<p>David</p>
<p>University of Queensland<br>
</p>
<p>Windows 7 & 10, 64-bit - Matlab R2016b  64-bit<br>
</p>
<p><br>
</p>
<p>% matlab code<br>
</p>
<p><br>
</p>
<p>% direct.realtime ---> where buffer.exe and related files are located:</p>
<p>% buffer.exe</p>
<p>% pthreadGC2-w64.dll                   <br>
% buffer.mexw32</p>
<p>% pthreadGC2.dll                       <br>
% Labview_DLL.dll</p>
<p>% buffer.mexw64                        <br>
% biosemi2ft.exe</p>
<p>% libgcc_s_dw2-1.dll                   <br>
% biosemi_config.txt</p>
<p>% libstdc++-6.dll       <br>
<br>
!taskkill /F /IM cmd.exe /T<br>
!taskkill /F /IM buffer.exe /T<br>
system( ['e: -& cd "' direct.realtime '" & buffer.exe -&'] ); % start buffer.exe<br>
<br>
cfg.host = 'localhost'; % <---- CAN THESE VALUES CHANGE?<br>
cfg.port = uint32( 1972 ); % <----- CAN THESE VALUES CHANGE?<br>
<br>
cfg.nchans = uint32( 1 );<br>
dat.nchans = uint32( 32 );<br>
dat.nsamples = uint32( 200 );<br>
dat.nevents = uint32( 0 );<br>
dat.fsample = uint32( 200 );<br>
dat.data_type = uint32( 9 ); % single precision data<br>
dat.bufsize = uint32( dat.nsamples * dat.nchans * 4 );<br>
dat.buf = single( rand(dat.nsamples,dat.nchans ) );<br>
<br>
buffer('put_hdr', dat, cfg.host, cfg.port);<br>
% hdr = buffer('get_hdr', [], cfg.host, cfg.port); % ----- read header<br>
buffer('put_dat', dat, cfg.host, cfg.port);<br>
% hdr = buffer('get_hdr', [], cfg.host, cfg.port); % ----- read header<br>
<br>
begsample = 1;<br>
endsample = 200;<br>
<br>
dat = buffer('get_dat', [begsample-1 endsample-1], cfg.host, cfg.port);<br>
</p>
</div>
</div>
</body>
</html>