Changes

Jump to navigation Jump to search
2,231 bytes added ,  14:09, 23 January 2023
Line 27: Line 27:  
     | downloads          =  
 
     | downloads          =  
 
     | manuals            = {{bulleted list
 
     | manuals            = {{bulleted list
         | [https://docs.unity3d.com/Manual/index.html Official Documentation]
+
         | [https://docs.openbci.com/ Documentation]
 +
        | [https://sccn.ucsd.edu/~mgrivich/LSL_Validation.html LSL Validation]
 +
        | [https://labstreaminglayer.readthedocs.io/info/supported_devices.html Supported Devices and Tools]
 +
    }}
 +
    | header2            = Templates
 +
    | data2              = {{bulleted list
 +
        | [https://surfdrive.surf.nl/files/index.php/s/qggfMMKsnUIDO0k example scripts (zip)]
 
     }}
 
     }}
 
   }}
 
   }}
Line 54: Line 60:  
==Usage==
 
==Usage==
 
=== Python ===
 
=== Python ===
 +
A short example for sending lsl streaming data:
 
<syntaxhighlight lang="python" line>
 
<syntaxhighlight lang="python" line>
 
#!/usr/bin/env python
 
#!/usr/bin/env python
   −
# import the rusocsci.buttonbox module
+
import threading
from rusocsci import buttonbox
+
from pylsl import StreamInfo, StreamOutlet
   −
# make a buttonbox
+
def getData():
bb = buttonbox.Buttonbox()
+
    while running:
 +
        buffer_in = getSensorData()
 +
        send_data = True
 +
        time.sleep(0.001)
   −
# wait for a single button press
+
info = StreamInfo(
bb.sendMarker(100)   #This is your marker code, range code 1-255
+
    name='MyStream',
core.wait(0.002)     #2ms delay for the code to be recorded by brainvision; 2ms->500hz sampling rate
+
    type='COP',
bb.sendMarker(0)     #Back to 0; now ready to send a new code
+
    channel_count=4,
 +
    nominal_srate = 200,
 +
    source_id='BalanceBoard_stream'
 +
    )
 +
outlet = StreamOutlet(info)  
 +
 
 +
threading.Thread(target=getData).start()
 +
while running == True:
 +
if send_data:
 +
outlet.push_chunk(buffer_in)
 +
send_data = False
 
</syntaxhighlight>
 
</syntaxhighlight>
   −
==References==  
+
A short example for receiving lsl data:
<references />
+
<syntaxhighlight lang="python" line>
 +
#!/usr/bin/env python
 +
 
 +
from pylsl import StreamInlet, resolve_stream
 +
 
 +
streams = resolve_stream('name', 'MyStream')
 +
#streams = resolve_streams()
 +
 
 +
inlet = StreamInlet(streams[0])
 +
while True:
 +
    sample, timestamp = inlet.pull_sample()
 +
    print(timestamp, sample)
 +
</syntaxhighlight>
 +
 
 +
=== Matlab ===
 +
Please, read the instructions on the GitHub labstreaminglayer website (https://github.com/labstreaminglayer/liblsl-Matlab) on how to prepare Matlab to work with LSL. You can either use the latest release for your Matlab version, or if that doesn't workout well, build it from the source files. Make sure to add the liblsl-Matlab folder to your path recursively to make it available to your own scripts.
 +
 
 +
A short example for sending lsl streaming data:
 +
<syntaxhighlight lang="matlab" line>
 +
%% instantiate the library
 +
disp('Loading library...');
 +
lib = lsl_loadlib();
 +
 
 +
% make a new stream outlet
 +
disp('Creating a new streaminfo...');
 +
info = lsl_streaminfo(lib,'BioSemi','EEG',8,100,'cf_float32','sdfwerr32432');
 +
 
 +
disp('Opening an outlet...');
 +
outlet = lsl_outlet(info);
 +
 
 +
% send data into the outlet, sample by sample
 +
disp('Now transmitting data...');
 +
while true
 +
    outlet.push_sample(randn(8,1));
 +
    pause(0.01);
 +
end
 +
</syntaxhighlight>
 +
 
 +
A short example for receiving lsl streaming data:
 +
<syntaxhighlight lang="matlab" line>
 +
%% instantiate the library
 +
disp('Loading the library...');
 +
lib = lsl_loadlib();
 +
 
 +
% resolve a stream...
 +
disp('Resolving an EEG stream...');
 +
result = {};
 +
while isempty(result)
 +
    result = lsl_resolve_byprop(lib,'type','EEG'); end
 +
 
 +
% create a new inlet
 +
disp('Opening an inlet...');
 +
inlet = lsl_inlet(result{1});
   −
==External Links== <!-- Optional -->
+
disp('Now receiving data...');
*{{Official website|https://unity3d.com}}
+
while true
*[https://docs.unity3d.com/Manual/index.html Official Documentation]
+
    % get data from the inlet
 +
    [vec,ts] = inlet.pull_sample();
 +
    % and display it
 +
    fprintf('%.2f\t',vec);
 +
    fprintf('%.5f\n',ts);
 +
end</syntaxhighlight>

Navigation menu