From BCI2000 Wiki
Jump to: navigation, search


This module can be used to read data sent over TCP/IP from a Micromed acquisition unit running SystemPLUS Rev. 1.02.1056.




Erik J. Aarnoutse Rudolf Magnus Institute, UMC Dept. Psychiatry, Utrecht, The Netherlands May 19, 2006

Version History

V0.01 - 19/04/2006 - First working version, based on Neusoscan.exe

V0.02 - 08/05/2006 - Added condition testing, 22bit mode and downsampling

V0.03 - 17/05/2006 - Added notchfilter

V0.04 - 19/09/2006 - Added digital trigger packets, changed note packet

V0.05 - 27/11/2006 - Added Priority, fixed digital trigger code

V0.06 - 13/03/2007 - Added note output in textfile

V0.07 - 04/04/2007 - Added error handling: server shuts down if stalling

V2.00 - 29/06/2008 - Updated for BCI2000 v2.0

Source Code Revisions

(In this section, indicate the BCI2000 source code revisions (changesets) that you used when developing your contribution, and information about testing/compilation. Adapt the list to your own needs. Hint: You obtain the revision of a source code repository by right-clicking its top level directory, and choosing "show log" from the TortoiseSVN submenu.)

  • Initial development: 1126
  • Tested under: 1126
  • Known to compile under: 2040
  • Broken since: --

Functional Description

The BCI source module that receives the data from the acquisition is the server, so it must be in listening mode before the acquisition unit starts to save data (data is sent only during recording). Micromed sends 64 data packets per second for SD, 32 for LTM. The connection is reset if the computer running BCI2000 is too slow to read all packets. This happens gracefully in version 2.0. Make sure you have SystemPlus 1.02.1091 or higher, in this version Micromed also gracefully closes the TCP/IP connection at BCI2000 errors. A packet of data is structured in 2 sections the first is the header and the second is information data. The first packet sent from the client is the header of an EEG Micromed trace and is read for condition checking. If a note is added in SystemPLUS it is sent as a note packet to the source module. If a digital trigger is sent the trigger code is sent to the source module in two ways: the complete code and a bitmasked code. This allows to send information on a condition (eg in SIGFRIED) and extra information for offline analysis. The header packet and the data packets are in the same format as in a Micromed trace file. The note packet sends the complete note buffer, and written in a textfile with the Micromed Sample Number.


To activate data transfer via TCP, it is necessary to add 3 registry keys on the acquisition unit under HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Brain Quick - System 98\EEG_Settings:

  1. "tcpSendAcq" is a string type key which must be set to "1" to activate data transfer via TCP, and to "0" to deactivate it
  2. "tcpServerName" is a string type key that represents the IP address of the computer to receive EEG data.
  3. "tcpPortNumber" is a string type key that represents the port number used (e.g., "5000").



Power line notch filter.

  • 0: disabled,
  • 1: at 50 Hz,
  • 2: at 60 Hz


The number of samples transmitted at a time in the BCI2000 system. If SampleBlockSize is a multiple of SamplingRate/64, data packets are merged. This way the BCI system can run on less than 64 sampleblocks per second, which saves CPU power.


The sample rate set by the acquisition unit.


Address and port of the BCI Server. You can enter "*:5000" if your port number is 5000. This means that the server listens to all IP addresses, localhost and external. The port number can be set in the acquisition unit by changing the registry setting "tcpPortNumber".

Packet Rate

Number of TCP/IP packets per second: 32 for LTM,64 for SD


Numeric type of output signal:

  • 0: int16,
  • 3: int32.

Other values are not allowed. Use 0 for Micromeds 16 bit mode, 3 for 22 bit mode: only the first 22 bits are used, but data packets are filled with 32 bit integers.

Condition Mask

Bitmask. Digital trigger code AND Condition Mask equals conditions without extra information. When not used, set to 0xFF.


CPU Priority. Default=1, set higher if the CPU load is too heavy.


The number of digitized and stored channels, must match the number of channels in the acquisition unit.



The serial code read into the Micromed acquisition computer.


The MicromedCode bitmasked with ConditionMask. This way you can use the first bits to flag a condition, while changing the MicromedCode for each trial.

See also

User Reference:Filters, Contributions:ADCs