Contributions:NicoletOne

From BCI2000 Wiki
Jump to navigation Jump to search

Synopsis

The NicoletOne series of EEG amplifiers are produced by Viasys Healthcare, now CareFusion. They perform EEG logging through an instance of "Recorder.exe". As required by the "Live Data" api the NicoletOne module sets up an MFC based Winsock connection in a separate thread to acquire information from the recording computer.

Known Issues

  • The module currently has poor latency problems. Every second or so a latency spike of 50-100ms occurs which yields poor system performance. This is due to the socketed nature of communications between the recorder software and the module.
  • The module will issue an error - "Couldn't connect to the device - Device may have a connection already. Try again later." - sometimes. This is due to some residual usage of the socket by the module after the module terminates. The behavior is caused by some bug in the library for the device. Until it is fixed, this error will appear upon "Set Config". Simply wait a few minutes for this error to go away, or restart the computer if necessary. The bug cannot be fixed by changing the source code of the module.

Location

http://www.bci2000.org/svn/branches/3.0/src/contrib/SignalSource/NicoletOne

Versioning

Authors

Griffin Milsap (griffin.milsap@gmail.com) Rensselaer Polytechnic Institute

Version History

Source Code Revisions

Functional Description

Acquires signal data from the NicoletOne series of devices through the Viasys "Recorder.exe" software.

The amplifier is configured using the "Recorder.exe" software. Although this means that it is possible to change the sampling rate or number of acive channels mid-run, the source module will be on the lookout for these changes and stop the experiment if they occur. BCI2000 has no means of dealing with changes such as these mid-run. When BCI2000 hits the preflight stage, the source module will query the "Recorder.exe" software.

Although the devices are capable of recording bipolar signals and perform math operations on the signals within the Recorder.exe software, these signals are not understood by BCI2000 and are not supported. When configuring the amplifier in "Recorder.exe", do not use these special types of signals.

Installation

The NicoletOne hardware interfaces only with its counterpart software from Viasys - Recorder.exe. This software can only be attained through Viasys or with your NicoletOne amplifier. A security dongle will also be required. If your main BCI system will be running on Windows XP 32, it is possible to run with only one computer. If you plan to run BCI2000 on Windows Vista or 7 (32 or 64), you'll need to acquire a second computer running Windows XP for the "Recorder.exe" software - as it only runs on Windows XP 32. If a separate XP recording machine is to be used, a network switch may also be necessary to connect the BCI computer, Recording computer, and the amplifier together.

Install the Viasys software on the recording computer. You do not need to install the "Study Room" suite. Once the Viasys software has been installed on the recording computer, plug the security dongle in and install drivers for it. The NicoletOne communicates through ethernet with the recording computer. If a separate recording computer is being used, connect the ethernet port on the recording computer to an ethernet switch, then connect the NicoletOne to the same network switch. If the recording computer is the same as the BCI computer, just plug the NicoletOne directly into the recording/BCI computer.

Set the IP address of the recording computer to 192.168.101.2 with a subnet mask of 255.255.255.0. This can be accomplished by going to "Control Panel"->"Network Connections", right clicking on your ethernet adapter, opening "Properties", scrolling down to "Internet Protocol", selecting it, clicking "Properties", selecting "Use the following IP address", and filling in 192.168.101.2 in the IP address field and filling in 255.255.255.0 in the subnet mask field. If the recording computer and BCI computer are not the same, the BCI computer will need to be on the same subnet in order to communicate with the recording computer. This is best accomplished by setting the IP address of the BCI computer to 192.168.101.3 with a subnet mask of 255.255.255.0.

If the BCI computer and the recording computer are not the same, it may help to make sure they're on the same workgroup. This can be accomplished by right clicking "My Computer", going to properties, going to the "Computer Name" tab, clicking the "Change..." button, and changing the Workgroup field. This may not be necessary, but it helps sometimes.

Copy the "SocketDef.reg" file in the http://www.bci2000.org/svn/branches/3.0/src/contrib/SignalSource/NicoletOne/reg folder to the recording computer and double click the file (even if the recording and BCI computer are the same). This adds a registry entry to the recording computer which tells the "Recorder.exe" software what port to output its recorded data to. This only needs to be performed once.

On the BCI computer, go to http://www.bci2000.org/svn/branches/3.0/src/contrib/SignalSource/NicoletOne/lib/DLLs and run "RegisterDLL.bat". This only needs to performed once. This runs the dll files as services. and sets them up to be run when the computer starts up in the future.

At this point, restart both the BCI and the Recording computer. When the recording computer boots up, start "Recorder.exe" (There should be a shortcut on the desktop). When Recorder.exe starts up, it will likely pop up an error box saying that communication with the amplifier cannot be established. This is normal behavior. Wait for recorder to start up and go to the "Protocol" menu item. A long list of supported protocols should appear. Select a protocol which works with your amplifier. Internally, the development and testing of this module was performed with the NicoletOne V32 amplifier (as indicated on the front of the device). The V32 Neonate protocol works for this amplifier. Once a proper protocol has been selected, a dialog asking which amplifier to use should appear. Hopefully, if everything has been installed successfully, the amplifier should appear in this box. Select it and click "OK".

Important: When the "Recorder.exe" program starts up, it will automatically start logging the EEG data to files on the hard drive. Click the "Record" button at the top of the application to turn off recording. BCI2000 will record to its own file format. Recording the EEG to the recording computer simultaneously just takes up extra hard drive space and is redundant.

When the module starts up it will attempt to connect to the recording computer at 192.168.101.2. If it is not at that IP address the module will error. This IP address is hard coded in and is assumed to be constant due to the fact that the recording computer must be set to 192.168.101.2.

Compilation

Due to the nature of the "LiveData" api provided by Viasys, the NicoletOne module can only be compiled using Microsoft Visual Studio Professional Edition (Any version). The Visual Studio Express editions cannot be used to compile this module because Microsoft does not allow compilation of MFC based projects in the express editions. If you have the professional edition of any CMake supported version of Visual Studio, simply generate project files for BCI2000 and build the project.

Parameters

  • SourceCh must be set to the number of channels reported by Recorder.exe
  • SamplingRate must be set to the current sampling rate of the device.
  • SampleBlockSize is the number of samples to acquire for every system clock. This can be set to whatever gives good system performance.
  • ChannelNames should be set to the names of the signals incoming from the "Recorder.exe" software.
  • SourceChOffset should be set to whatever the Recorder.exe program outputs.
  • SourceChGain should be set to whatever the Recorder.exe program outputs.

A note on these parameters: When "SetConfig" is pushed, the preflight error messages should be informative enough to set these parameters correctly. If these values are changed by Recorder.exe mid run, the source module will stop collecting data and the system will shut down.

States

None.

Future Work

Perhaps an implementation for bipolar signals and support for multiple amplifiers could be implemented later.

See also

User Reference:Filters, Contributions:ADCs