Biovotion Integration with Labstreaming Layer (LSL)

Lab Streaming Layer is a system for the unified collection of time series data in research experiments. It handles both the networking, time-synchronization, (near-) real-time access, centralized collection, visualization and disk recording of the data. In short, it collects data streams from all pieces of compatible control software and combines them together temporally. LSL’s platform provides a really good chance for us as experimenters to analyze biosignals in a more complex way.

The Biovotion monitor detects multiple body signals, including electrodermal activity, temperature, and heart rate. I started to do software-level integration of Biovotion for the simple reason that I needed to use it in my little experiment (which was still in progress) about fear of heights, as well as work on problem solving. It took me two weeks to communicate with the original developer to understand the overall structure of the software. I was advised to get the integration done on the upper level of the code, but it seemed to me that LSL works on the code’s lower version, so I tried to squeeze the code to the software’s DLL part, and it worked well (which took me another 2 weeks).

So how did the code I added work? To make a program integrate with LSL, one needs to first copy the library into the software that you want to integrate with LSL, and then add a few lines of code that construct the LSL instance. After that, (specifically for this Biovotion software) I found the line of code which sends its data out, and I added one line of code which sends the data to LSL pipeline under that original line of code in the DLL, and it worked perfectly. Biovotion sends its data out in a “string” way. For each time stamp (1/51.2 seconds), it sends all the information including signal channel, time and data in one string. So I basically “hijacked” that information and sent it again in LSL pipeline.

-Qiwei Dong


Leave a Reply

Your email address will not be published. Required fields are marked *