<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi David,<div class=""><br class=""></div><div class="">The buffer mex allows you to start a buffer server within MATLAB. However, the low-level C code does not allow multiple (posix) threads to be started to support multiple buffers in a single executable (i.e. in MATLAB), since the threads would all be reading/writing at the same piece of memory. So the only way to go is to start multiple executables. The way that I usually do this is by starting multiple instances of buffer.exe, specifying for each which port it should listen to. </div><div class=""><br class=""></div><div class="">If you start a command line prompt, you can cd to the fieldtrip/realtime/bin/win32 directory and start</div><div class="">buffer.exe <PORT></div><div class="">where you specify the port number. Repeat that (in multiple command windows) for each of the buffers, each with a separate port. </div><div class=""><br class=""></div><div class="">The buffer always runs on the computer where you start it. So the answer to the question “can the buffer run on another computer than localhost?” is no. But the code that reads and/or writes to the buffer can connect to another computer. Please note that the firewall settings have to allow for this. </div><div class=""> </div><div class="">On <a href="http://www.fieldtriptoolbox.org/development/realtime/fmri" class="">http://www.fieldtriptoolbox.org/development/realtime/fmri</a> you can find an example for a pipeline that involves two buffers.</div><div class=""><br class=""></div><div class="">Furthermore I recommend that you do not use the buffer.mex file (it is in private for a good reason!), but rather that you use ft_read_data and ft_write_data. At that level you can also find plenty of examples, e.g. starting at <a href="http://www.fieldtriptoolbox.org/getting_started/realtime" class="">http://www.fieldtriptoolbox.org/getting_started/realtime</a> and looking at the code in fieldtrip/realtime/example. </div><div class=""><br class=""></div><div class="">best</div><div class="">Robert</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 04 Apr 2017, at 03:41, David Painter <<a href="mailto:d.painter1@uq.edu.au" class="">d.painter1@uq.edu.au</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=""><div class="">Dear Fieldtrippers,<div style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class="">I've been using Fieldtrip's buffer.exe in conjunction with biosemi2ft.exe to read EEG data in realtime.</div><div style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class="">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.</div><div style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class="">Does anyone know if host and port can accept values other than "localhost" and "1972"?<br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class="">I couldn't many explicit examples on this procedure online, so I've posted my code for future reference.<br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class="">David</div><div style="margin-top: 0px; margin-bottom: 0px;" class="">University of Queensland<br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class="">Windows 7 & 10, 64-bit - Matlab R2016b  64-bit<br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class="">% matlab code<br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class="">% direct.realtime ---> where buffer.exe and related files are located:</div><div style="margin-top: 0px; margin-bottom: 0px;" class="">% buffer.exe</div><div style="margin-top: 0px; margin-bottom: 0px;" class="">% pthreadGC2-w64.dll                   <br class="">% buffer.mexw32</div><div style="margin-top: 0px; margin-bottom: 0px;" class="">% pthreadGC2.dll                       <br class="">% Labview_DLL.dll</div><div style="margin-top: 0px; margin-bottom: 0px;" class="">% buffer.mexw64                        <br class="">% biosemi2ft.exe</div><div style="margin-top: 0px; margin-bottom: 0px;" class="">% libgcc_s_dw2-1.dll                   <br class="">% biosemi_config.txt</div><div style="margin-top: 0px; margin-bottom: 0px;" class="">% libstdc++-6.dll      <span class="Apple-converted-space"> </span><br class=""><br class="">!taskkill /F /IM cmd.exe /T<br class="">!taskkill /F /IM buffer.exe /T<br class="">system( ['e: -& cd "' direct.realtime '" & buffer.exe -&'] ); % start buffer.exe<br class=""><br class="">cfg.host = 'localhost'; % <---- CAN THESE VALUES CHANGE?<br class="">cfg.port = uint32( 1972 ); % <----- CAN THESE VALUES CHANGE?<br class=""><br class="">cfg.nchans = uint32( 1 );<br class="">dat.nchans = uint32( 32 );<br class="">dat.nsamples = uint32( 200 );<br class="">dat.nevents = uint32( 0 );<br class="">dat.fsample = uint32( 200 );<br class="">dat.data_type = uint32( 9 ); % single precision data<br class="">dat.bufsize = uint32( dat.nsamples * dat.nchans * 4 );<br class="">dat.buf = single( rand(dat.nsamples,dat.nchans ) );<br class=""><br class="">buffer('put_hdr', dat, cfg.host, cfg.port);<br class="">% hdr = buffer('get_hdr', [], cfg.host, cfg.port); % ----- read header<br class="">buffer('put_dat', dat, cfg.host, cfg.port);<br class="">% hdr = buffer('get_hdr', [], cfg.host, cfg.port); % ----- read header<br class=""><br class="">begsample = 1;<br class="">endsample = 200;<br class=""><br class="">dat = buffer('get_dat', [begsample-1 endsample-1], cfg.host, cfg.port);<br class=""></div></div></div><span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); float: none; display: inline !important;" class="">_______________________________________________</span><br style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=""><span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); float: none; display: inline !important;" class="">fieldtrip mailing list</span><br style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=""><a href="mailto:fieldtrip@donders.ru.nl" style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class="">fieldtrip@donders.ru.nl</a><br style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=""><a href="https://mailman.science.ru.nl/mailman/listinfo/fieldtrip" style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class="">https://mailman.science.ru.nl/mailman/listinfo/fieldtrip</a></div></blockquote></div><br class=""></div></body></html>