<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.bci2000.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jrenga</id>
	<title>BCI2000 Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.bci2000.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jrenga"/>
	<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php/Special:Contributions/Jrenga"/>
	<updated>2026-06-09T07:12:08Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQFilter&amp;diff=5782</id>
		<title>Contributions:NIDAQFilter</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQFilter&amp;diff=5782"/>
		<updated>2010-09-07T22:07:36Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
A filter that outputs different statesr from BCI2000 to outputs connected to a National Instruments Board running DAQmx 8.5 or higher.&lt;br /&gt;
==Location==&lt;br /&gt;
The file(s) should be in the following directory:&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/shared/modules/signalsource/&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
1.0&lt;br /&gt;
===Source Code Revision===&lt;br /&gt;
Not Applicable&lt;br /&gt;
==Functional Description==&lt;br /&gt;
The NIDAQFilter uses any DAQmx 8.5 or higher compliant board and allows the user to pipe state data from BCI2000 through the board. All necesary components must be connected to the BCI computer before initiating a module using the filter.&lt;br /&gt;
==Adding and Compiling==&lt;br /&gt;
To add and compile the NIDAQFilter module, make sure the latest NIDAQ MX drivers are installed on your computer. When that is done, go into the C:\Program Files\National Instruments\NI-DAQ\DAQmx ANSI C Dev\ folder. Inside are two folders: lib and include. The lib folder will contain the NIDAQmx.lib file (inside of the folder msvc). Copy that into the project&#039;s library folder. Inside of the include folder is the NIDAQmx.h file, which contains the function prototypes needed to use the NIDAQLogger module. Move this file into the project&#039;s include folder. Make sure the project links the new .lib file, and that the NIDAQFilter.h and NIDAQFilter.cpp files include the NIDAQmx.h file correctly. The NIDAQFiltershould now be able to compile normally.&lt;br /&gt;
==Parameters==&lt;br /&gt;
The NIDAQFilter uses command line parameters to initialize the device(s) and set up the active ports. It then uses BCI2000 parameters for finer controls over the device, such as changing the sampling rate of the device.&lt;br /&gt;
===Command Line Parameters===&lt;br /&gt;
====Initializing the NIDAQFilter====&lt;br /&gt;
To begin using the NIDAQFilter, use the &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; flag and set it equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;. To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiOut&amp;lt;/code&amp;gt; --&amp;gt; Enable the device to use digital output characteristics&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaOut&amp;lt;/code&amp;gt; --&amp;gt; Enable the device to use analog output characteristics&lt;br /&gt;
The format for the outputs for above flags is as follows:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;[flag]=&amp;quot;[device specification]-[port specifications]&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Please note that if &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; is enabled, then at least one of the above flags &amp;lt;b&amp;gt;MUST&amp;lt;/b&amp;gt; be used.&lt;br /&gt;
====Device Specification====&lt;br /&gt;
The device name is to be written as &amp;quot;Dev1&amp;quot; or &amp;quot;Dev2&amp;quot; (without the quotes) in the first part of the parameter value. After the device name is specified, use a hyphen (-) to indicate the device name is finished. For example, the first part of the parameter value would look like this: &amp;lt;code&amp;gt; &amp;quot;Dev1-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;If the device numbers are unclear, run the filter with just the &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; flag specified. The device names (along with their familiar names) will appear in the operator log.&amp;lt;/i&amp;gt;&lt;br /&gt;
====Port Specifications====&lt;br /&gt;
There are two acceptable states that the user can specify for each port that they are going to use:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; --&amp;gt; the associated port WILL NOT be used&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; --&amp;gt; the associated port WILL be used&lt;br /&gt;
&lt;br /&gt;
The values will be used for every single port that the user wants to use. For example, if the user wants to use ports 3 and 5 on a device with 10 ports, then the port specification for that device will be the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;0010100000&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice how even though the user wants to use only 2 ports, all 10 ports have been indicated. This is required. Any port that is not needed should be marked with a &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;. If the number of ports specified in the parameter file does not match the number of ports found on the device, an error will be thrown, showing the number of ports were specified and how many ports there are for that device function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Important: If both the NIDAQLogger([[Contributions:NIDAQLogger]]) and the NIDAQFilter are being used, and both are using the digital lines on the same device, make sure that any port that is being referenced in a parameter is referenced only once. One port cannot use both digital input and digital output functionality, and will cause BCI2000 to throw an error, saying that the line is RESERVED.&amp;lt;/i&amp;gt;&lt;br /&gt;
====A Completed Flag====&lt;br /&gt;
The following is the completed flag, whose parts were described above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;--LogAnaOut=&amp;quot;Dev1-0010100000&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above flag tells the filter that the user wants to use the analog output ports on Device 1, which has 10 ports on it. The user wants to use the 3rd and 5th ports on the device, but leave everything else unused.&lt;br /&gt;
===BCI2000 Parameters===&lt;br /&gt;
After the commandline parameters have been set, more parameters may be configured in the Configuration dialog box in BCI2000. Under the header &amp;lt;i&amp;gt;NIDAQFilter&amp;lt;/i&amp;gt;, the following parameters MAY appear, as some of them are dependant on flags being used:&lt;br /&gt;
*&amp;lt;b&amp;gt;#OVRanges&amp;lt;/b&amp;gt; [ENUMERATION] --&amp;gt; This parameter tells the user if there are multiple output voltage ranges that are acceptable for use. If not, then the parameter will NOT show up. The parameter is activated by the &amp;lt;code&amp;gt;--LogAnaOut&amp;lt;/code&amp;gt; flag.&lt;br /&gt;
*&amp;lt;b&amp;gt;FilterExpressions&amp;lt;/b&amp;gt; [MATRIX] --&amp;gt; This parameter allows the user to associate different states to individual output lines on the board. By clicking on the Edit Matrix button, the user will see a list of the lines that are active on the board, and a space to put an expression. This parameter will always show up, regardless of the flags being used.&lt;br /&gt;
==States==&lt;br /&gt;
===Template===&lt;br /&gt;
The states are constructed in a contextual manner, that is to say, they are created based on the channels that the user decides to use. The template of the state names is shown below:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;&amp;lt;b&amp;gt;NI[device name][A:D]OUTPUT[port number-1]&amp;lt;/b&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Some key things about the template:&lt;br /&gt;
*[device name] -&amp;gt; the name of the device to which the port is associated to (for example, if Device 4 is being used, then there will be a state that begins with NIDev4 will exist)&lt;br /&gt;
*[A:D] -&amp;gt; analog or digital state (an analog state has a bit width of 16, while a digital state has a bit width of 1). This is dependant on the way the device is being used, and is not settable by the user.&lt;br /&gt;
*[port number - 1] -&amp;gt; the number of the port being used (the states begin at port 0, so when port 4 is being used, the number in the state will be 3)&lt;br /&gt;
===Example===&lt;br /&gt;
If the following parameter list were used as a user&#039;s command line parameter:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;--LogNIDAQout=1 --LogAnaOut=&amp;quot;Dev1-00100010100&amp;quot; --LogDigiOut=&amp;quot;Dev2-00100001010&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Then the following states would be produced:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
      NIDev1AOUTPUT2     NIDev1AOUTPUT6     NIDev1AOUTPUT8&lt;br /&gt;
      NIDev2DOUTPUT2     NIDev2DOUTPUT7     NIDev2DOUTPUT9&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5781</id>
		<title>Contributions:NIDAQLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5781"/>
		<updated>2010-09-07T22:07:33Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
National Instruments Data Acquisition Module&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
The file(s) should be in the following directory:&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/shared/modules/signalsource/&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: --&lt;br /&gt;
*Known to compile under: --&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
The NIDAQLogger has been tested with the USB-6009 and PCI-6024E National Instruments boards at sampling rates up to and including 4096Hz, with sample block sizes up to and including 1024 samples/block. Both devices were running under DAQmx driver version 8.9.5 .&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
There are a couple of known issues with the NIDAQLogger that are listed below:&lt;br /&gt;
*Occasional &amp;quot;glitching&amp;quot; may occur : the condition known as &amp;quot;glitching&amp;quot; is when some data gets swapped with slightly older data, producing a result that looks wrong.&lt;br /&gt;
*The NIDAQLogger, when coupled with the NIDAQmx Source Module, does not currently work at sampling rates above 8192Hz.&lt;br /&gt;
*Poor results may occur if the NIDAQLogger is used within 5 minutes of starting the BCI2000 computer up.&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Acquires signals using National Instruments Data Acquisition boards, other devices, and the computer. Device(s) must be connected to computer beforehand.&lt;br /&gt;
&lt;br /&gt;
==Adding and Compiling==&lt;br /&gt;
To add and compile the NIDAQLogger module, make sure the latest NIDAQ MX drivers are installed on your computer.&lt;br /&gt;
When that is done, go into the C:\Program Files\National Instruments\NI-DAQ\DAQmx ANSI C Dev\ folder. Inside are two folders: lib and include. The lib folder will contain the NIDAQmx.lib file (inside of the folder msvc). Copy that into the project&#039;s library folder. Inside of the include folder is the NIDAQmx.h file, which contains the function prototypes needed to use the NIDAQLogger module. Move this file into the project&#039;s include folder. Make sure the project links the new .lib file, and that the NIDAQLogger.h and NIDAQLogger.cpp files include the NIDAQmx.h file correctly. The NIDAQLogger should now be able to compile normally.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===Command Line Parameters===&lt;br /&gt;
====Initializing NIDAQLogger====&lt;br /&gt;
To begin using the NIDAQLogger module, use the &amp;lt;code&amp;gt;--LogNIDAQin&amp;lt;/code&amp;gt; flag, and set it equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;.&lt;br /&gt;
To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiIn&amp;lt;/code&amp;gt; (for digital input)&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaIn&amp;lt;/code&amp;gt; (for analog input)&lt;br /&gt;
The format for the inputs for the above flags is as follows: &amp;lt;code&amp;gt;[flag]=&amp;quot;[device name]-[port specification]&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
Note that if &amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; is used, that at least one of the two above flags MUST be used.&lt;br /&gt;
====Device Specification====&lt;br /&gt;
The device name (usually) is to be written as &amp;quot;Dev1&amp;quot; or &amp;quot;Dev2&amp;quot; (without the &amp;quot;&amp;quot;). Afterwards, use a - to indicate the device name is finished. If the device number is unclear, run the program with the &amp;lt;code&amp;gt;--LogNIDAQin&amp;lt;/code&amp;gt; flag activated, and look at the Operator Log. The devices (along with their number) will be listed.&lt;br /&gt;
====Port Specifications====&lt;br /&gt;
There are two acceptable states that the user can specify for each port:&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;INACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Important: If both the NIDAQLogger and the NIDAQFilter (see [[Contributions:NIDAQFilter]]) are being used, and both are using the digital lines on the same device, make sure that any port that is being referenced in a parameter is referenced only once. One port cannot use both digital input and digital output functionality, and will cause BCI2000 to throw an error, saying that the line is RESERVED. &amp;lt;/i&amp;gt;&lt;br /&gt;
====Example====&lt;br /&gt;
Let&#039;s assume that the user wants to use one device for both analog and digital input. The device has 8 Analog Input ports and 12 Digital I/O ports.&lt;br /&gt;
The user also wants to use the 3rd and 4th analog input ports, and the 4th and 10th digital ports for digital input.&lt;br /&gt;
&lt;br /&gt;
The user needs to use 3 flags to accomplish this:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIDAQin=1&amp;lt;/code&amp;gt; -&amp;gt; This flag activates the NIDAQLogger for use.&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot;&amp;lt;/code&amp;gt; -&amp;gt; This flag indicates that the user wants to use digital I/O. &amp;quot;Dev1&amp;quot; is the name of the device connected to the computer that she wants to use. &amp;lt;code&amp;gt;0001000000100&amp;lt;/code&amp;gt; indicates that the user wants ports 4 and 10 (the &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;&#039;s) as &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaIn=&amp;quot;Dev1-00011000&amp;quot;&amp;lt;/code&amp;gt; -&amp;gt; This flag indicates that she wants to use analog output. &amp;quot;Dev1&amp;quot; is the name of the device connected to the computer that she wants to use. &amp;lt;code&amp;gt;00011000&amp;lt;/code&amp;gt; indicates that she wants to the use ports 3 and 4 on analog input.&lt;br /&gt;
The full command (assuming she uses this with SignalGenerator.exe) that the user would use is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQin=1 --LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot; --LogAnaIn=&amp;quot;Dev1-00011000&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===BCI2000 Parameters===&lt;br /&gt;
There are two possible parameters that the user will be able to use. They are outlined below:&lt;br /&gt;
*&amp;lt;b&amp;gt;#IVRanges&amp;lt;/b&amp;gt; - the available voltage ranges for analog input for the given device (where &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; will be replaced by the device name)&lt;br /&gt;
**&amp;lt;i&amp;gt;This parameter will only be enabled if the &amp;lt;/i&amp;gt;&amp;lt;code&amp;gt;--LogAnaIn&amp;lt;/code&amp;gt;&amp;lt;i&amp;gt; flag is being used&amp;lt;/i&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;#InSampleRate&amp;lt;/b&amp;gt; - the sampling rate for the NIDAQLogger&lt;br /&gt;
**&amp;lt;i&amp;gt;This parameter will be here if the &amp;lt;/i&amp;gt;&amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt;&amp;lt;i&amp;gt; flag is being used&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters will be located under the &amp;lt;b&amp;gt;Source&amp;lt;/b&amp;gt; tab, in the section labeled &amp;lt;i&amp;gt;NILogger&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
The states that are available are dependent on the port specifications declared in the command line parameters. The format for the states is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NIDev#[A:D]INPUT#&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The first &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the device number.&lt;br /&gt;
*The second &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the line number (starting at &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;).&lt;br /&gt;
*The &amp;lt;b&amp;gt;[A:D]&amp;lt;/b&amp;gt; denotes if the state refers to an analog (&amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt;) or a digital (&amp;lt;b&amp;gt;D&amp;lt;/b&amp;gt;) channel.&lt;br /&gt;
&lt;br /&gt;
For example, if the command parameters look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQin=1 --LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot; --LogAnaIn=&amp;quot;Dev1-10011000&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the states that will be created are the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      NIDev1DINPUT3     NIDev1DINPUT9     NIDev1AINPUT0&lt;br /&gt;
              NIDev1AINPUT2     NIDev1AINPUT3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
==Acquired Data==&lt;br /&gt;
The data (analog) that is acquired by the device is translated to make sure that all of the data will fit inside of the state&#039;s parameters. Due to this fact, the data needs to be translated back in order to return it to units of milliVolts (mV). This can be done by subtracting the data by (2000*upper voltage bound). For example, if the data was logged with the range -10V to 10V, then the data must be subtracted by 20,000.&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:ADCs&amp;diff=5779</id>
		<title>Contributions:ADCs</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:ADCs&amp;diff=5779"/>
		<updated>2010-08-31T23:26:38Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following data acquisition filters are available in the [[Contributions:Contents|Contributions]] section of BCI2000:&lt;br /&gt;
&lt;br /&gt;
*[[Contributions:AmpServerProADC]]: Interface to the EGI AmpServerPro.&lt;br /&gt;
*[[Contributions:BioRadioADC]]: Interface to the BioRadio amplifer.&lt;br /&gt;
*[[Contributions:Biosemi2ADC]]: Interface to the Biosemi amplifier.&lt;br /&gt;
*[[Contributions:DAS_ADC]]: Interface to MeasurementComputing AD cards.&lt;br /&gt;
*[[Contributions:DTADC]]: Interface to Data Translation boards.&lt;br /&gt;
*[[Contributions:Emotiv]]: Interface to the Emotiv EPOC.&lt;br /&gt;
*[[Contributions:MicromedADC]]: Interface to the Micromed EEG system.&lt;br /&gt;
*[[Contributions:ModularEEG]]: Interface to the ModularEEG system.&lt;br /&gt;
*[[Contributions:NIADC]]: Interface to National Instruments boards.&lt;br /&gt;
*[[Contributions:NIDAQ-MX]]: Interface to National Instruments boards using the MX driver.&lt;br /&gt;
*[[Contributions:NeuroscanADC]]: Neuroscan Acquire socket protocol client.&lt;br /&gt;
*[[Contributions:NeuroscanAccessSDK]]: Interface to Neuroscan Direct Access SDK.&lt;br /&gt;
*[[Contributions:NeuroSky]]: Interface to Neurosky MindSet.&lt;br /&gt;
*[[Contributions:NicoletOne]]: Interface to NicoletOne nEEG series amplifiers.&lt;br /&gt;
*[[Contributions:ctfneurod]]: CTF RealTime to Neuroscan Acquire relay.&lt;br /&gt;
*[[Contributions:RDAClientADC]]: Brain Vision RDA socket protocol client.&lt;br /&gt;
*[[Contributions:TDTADC]]: Interface to Tucker-Davis Pentusa systems.&lt;br /&gt;
*[[Contributions:TMSiADC]]: Interface to TMSi Refa and Porti systems.&lt;br /&gt;
*[[Contributions:vAmpADC]]: Interface to Brain Products V-amp systems.&lt;br /&gt;
*[[Contributions:EnobioADC]]: Interface to Enobio sensor.&lt;br /&gt;
*[[Contributions:NIDAQLogger]]: Interface to multiple National Instruments DAQ boards using MX driver (INPUT ONLY)&lt;br /&gt;
*[[Contributions:NIDAQFilter]]: Interface to multiple National Instruments DAQ boards using MX driver (OUTPUT ONLY)&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Filters]], [[Contributions:How to use a Contributed Source Module]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contents]][[Category:Data Acquisition]]&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQFilter&amp;diff=5778</id>
		<title>Contributions:NIDAQFilter</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQFilter&amp;diff=5778"/>
		<updated>2010-08-31T23:24:34Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: /* Location */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
A filter that outputs different statesr from BCI2000 to outputs connected to a National Instruments Board running DAQmx 8.5 or higher.&lt;br /&gt;
==Location==&lt;br /&gt;
The file(s) should be in the following directory:&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/shared/modules/signalsource/&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
1.0&lt;br /&gt;
===Source Code Revision===&lt;br /&gt;
Not Applicable&lt;br /&gt;
==Functional Description==&lt;br /&gt;
The NIDAQFilter uses any DAQmx 8.5 or higher compliant board and allows the user to pipe state data from BCI2000 through the board. All necesary components must be connected to the BCI computer before initiating a module using the filter.&lt;br /&gt;
==Parameters==&lt;br /&gt;
The NIDAQFilter uses command line parameters to initialize the device(s) and set up the active ports. It then uses BCI2000 parameters for finer controls over the device, such as changing the sampling rate of the device.&lt;br /&gt;
===Command Line Parameters===&lt;br /&gt;
====Initializing the NIDAQFilter====&lt;br /&gt;
To begin using the NIDAQFilter, use the &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; flag and set it equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;. To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiOut&amp;lt;/code&amp;gt; --&amp;gt; Enable the device to use digital output characteristics&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaOut&amp;lt;/code&amp;gt; --&amp;gt; Enable the device to use analog output characteristics&lt;br /&gt;
The format for the outputs for above flags is as follows:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;[flag]=&amp;quot;[device specification]-[port specifications]&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Please note that if &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; is enabled, then at least one of the above flags &amp;lt;b&amp;gt;MUST&amp;lt;/b&amp;gt; be used.&lt;br /&gt;
====Device Specification====&lt;br /&gt;
The device name is to be written as &amp;quot;Dev1&amp;quot; or &amp;quot;Dev2&amp;quot; (without the quotes) in the first part of the parameter value. After the device name is specified, use a hyphen (-) to indicate the device name is finished. For example, the first part of the parameter value would look like this: &amp;lt;code&amp;gt; &amp;quot;Dev1-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;If the device numbers are unclear, run the filter with just the &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; flag specified. The device names (along with their familiar names) will appear in the operator log.&amp;lt;/i&amp;gt;&lt;br /&gt;
====Port Specifications====&lt;br /&gt;
There are two acceptable states that the user can specify for each port that they are going to use:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; --&amp;gt; the associated port WILL NOT be used&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; --&amp;gt; the associated port WILL be used&lt;br /&gt;
&lt;br /&gt;
The values will be used for every single port that the user wants to use. For example, if the user wants to use ports 3 and 5 on a device with 10 ports, then the port specification for that device will be the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;0010100000&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice how even though the user wants to use only 2 ports, all 10 ports have been indicated. This is required. Any port that is not needed should be marked with a &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;. If the number of ports specified in the parameter file does not match the number of ports found on the device, an error will be thrown, showing the number of ports were specified and how many ports there are for that device function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Important: If both the NIDAQLogger([[Contributions:NIDAQLogger]]) and the NIDAQFilter are being used, and both are using the digital lines on the same device, make sure that any port that is being referenced in a parameter is referenced only once. One port cannot use both digital input and digital output functionality, and will cause BCI2000 to throw an error, saying that the line is RESERVED.&amp;lt;/i&amp;gt;&lt;br /&gt;
====A Completed Flag====&lt;br /&gt;
The following is the completed flag, whose parts were described above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;--LogAnaOut=&amp;quot;Dev1-0010100000&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above flag tells the filter that the user wants to use the analog output ports on Device 1, which has 10 ports on it. The user wants to use the 3rd and 5th ports on the device, but leave everything else unused.&lt;br /&gt;
===BCI2000 Parameters===&lt;br /&gt;
After the commandline parameters have been set, more parameters may be configured in the Configuration dialog box in BCI2000. Under the header &amp;lt;i&amp;gt;NIDAQFilter&amp;lt;/i&amp;gt;, the following parameters MAY appear, as some of them are dependant on flags being used:&lt;br /&gt;
*&amp;lt;b&amp;gt;#OVRanges&amp;lt;/b&amp;gt; [ENUMERATION] --&amp;gt; This parameter tells the user if there are multiple output voltage ranges that are acceptable for use. If not, then the parameter will NOT show up. The parameter is activated by the &amp;lt;code&amp;gt;--LogAnaOut&amp;lt;/code&amp;gt; flag.&lt;br /&gt;
*&amp;lt;b&amp;gt;FilterExpressions&amp;lt;/b&amp;gt; [MATRIX] --&amp;gt; This parameter allows the user to associate different states to individual output lines on the board. By clicking on the Edit Matrix button, the user will see a list of the lines that are active on the board, and a space to put an expression. This parameter will always show up, regardless of the flags being used.&lt;br /&gt;
==States==&lt;br /&gt;
===Template===&lt;br /&gt;
The states are constructed in a contextual manner, that is to say, they are created based on the channels that the user decides to use. The template of the state names is shown below:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;&amp;lt;b&amp;gt;NI[device name][A:D]OUTPUT[port number-1]&amp;lt;/b&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Some key things about the template:&lt;br /&gt;
*[device name] -&amp;gt; the name of the device to which the port is associated to (for example, if Device 4 is being used, then there will be a state that begins with NIDev4 will exist)&lt;br /&gt;
*[A:D] -&amp;gt; analog or digital state (an analog state has a bit width of 16, while a digital state has a bit width of 1). This is dependant on the way the device is being used, and is not settable by the user.&lt;br /&gt;
*[port number - 1] -&amp;gt; the number of the port being used (the states begin at port 0, so when port 4 is being used, the number in the state will be 3)&lt;br /&gt;
===Example===&lt;br /&gt;
If the following parameter list were used as a user&#039;s command line parameter:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;--LogNIDAQout=1 --LogAnaOut=&amp;quot;Dev1-00100010100&amp;quot; --LogDigiOut=&amp;quot;Dev2-00100001010&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Then the following states would be produced:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
      NIDev1AOUTPUT2     NIDev1AOUTPUT6     NIDev1AOUTPUT8&lt;br /&gt;
      NIDev2DOUTPUT2     NIDev2DOUTPUT7     NIDev2DOUTPUT9&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5777</id>
		<title>Contributions:NIDAQLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5777"/>
		<updated>2010-08-31T23:24:05Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: /* Location */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
National Instruments Data Acquisition Module&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
The file(s) should be in the following directory:&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/shared/modules/signalsource/&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: --&lt;br /&gt;
*Known to compile under: --&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
The NIDAQLogger has been tested with the USB-6009 and PCI-6024E National Instruments boards at sampling rates up to and including 4096Hz, with sample block sizes up to and including 1024 samples/block. Both devices were running under DAQmx driver version 8.9.5 .&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
There are a couple of known issues with the NIDAQLogger that are listed below:&lt;br /&gt;
*Occasional &amp;quot;glitching&amp;quot; may occur : the condition known as &amp;quot;glitching&amp;quot; is when some data gets swapped with slightly older data, producing a result that looks wrong.&lt;br /&gt;
*The NIDAQLogger, when coupled with the NIDAQmx Source Module, does not currently work at sampling rates above 8192Hz.&lt;br /&gt;
*Poor results may occur if the NIDAQLogger is used within 5 minutes of starting the BCI2000 computer up.&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Acquires signals using National Instruments Data Acquisition boards, other devices, and the computer. Device(s) must be connected to computer beforehand.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===Command Line Parameters===&lt;br /&gt;
====Initializing NIDAQLogger====&lt;br /&gt;
To begin using the NIDAQLogger module, use the &amp;lt;code&amp;gt;--LogNIDAQin&amp;lt;/code&amp;gt; flag, and set it equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;.&lt;br /&gt;
To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiIn&amp;lt;/code&amp;gt; (for digital input)&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaIn&amp;lt;/code&amp;gt; (for analog input)&lt;br /&gt;
The format for the inputs for the above flags is as follows: &amp;lt;code&amp;gt;[flag]=&amp;quot;[device name]-[port specification]&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
Note that if &amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; is used, that at least one of the two above flags MUST be used.&lt;br /&gt;
====Device Specification====&lt;br /&gt;
The device name (usually) is to be written as &amp;quot;Dev1&amp;quot; or &amp;quot;Dev2&amp;quot; (without the &amp;quot;&amp;quot;). Afterwards, use a - to indicate the device name is finished. If the device number is unclear, run the program with the &amp;lt;code&amp;gt;--LogNIDAQin&amp;lt;/code&amp;gt; flag activated, and look at the Operator Log. The devices (along with their number) will be listed.&lt;br /&gt;
====Port Specifications====&lt;br /&gt;
There are two acceptable states that the user can specify for each port:&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;INACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Important: If both the NIDAQLogger and the NIDAQFilter (see [[Contributions:NIDAQFilter]]) are being used, and both are using the digital lines on the same device, make sure that any port that is being referenced in a parameter is referenced only once. One port cannot use both digital input and digital output functionality, and will cause BCI2000 to throw an error, saying that the line is RESERVED. &amp;lt;/i&amp;gt;&lt;br /&gt;
====Example====&lt;br /&gt;
Let&#039;s assume that the user wants to use one device for both analog and digital input. The device has 8 Analog Input ports and 12 Digital I/O ports.&lt;br /&gt;
The user also wants to use the 3rd and 4th analog input ports, and the 4th and 10th digital ports for digital input.&lt;br /&gt;
&lt;br /&gt;
The user needs to use 3 flags to accomplish this:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIDAQin=1&amp;lt;/code&amp;gt; -&amp;gt; This flag activates the NIDAQLogger for use.&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot;&amp;lt;/code&amp;gt; -&amp;gt; This flag indicates that the user wants to use digital I/O. &amp;quot;Dev1&amp;quot; is the name of the device connected to the computer that she wants to use. &amp;lt;code&amp;gt;0001000000100&amp;lt;/code&amp;gt; indicates that the user wants ports 4 and 10 (the &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;&#039;s) as &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaIn=&amp;quot;Dev1-00011000&amp;quot;&amp;lt;/code&amp;gt; -&amp;gt; This flag indicates that she wants to use analog output. &amp;quot;Dev1&amp;quot; is the name of the device connected to the computer that she wants to use. &amp;lt;code&amp;gt;00011000&amp;lt;/code&amp;gt; indicates that she wants to the use ports 3 and 4 on analog input.&lt;br /&gt;
The full command (assuming she uses this with SignalGenerator.exe) that the user would use is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQin=1 --LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot; --LogAnaIn=&amp;quot;Dev1-00011000&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===BCI2000 Parameters===&lt;br /&gt;
There are two possible parameters that the user will be able to use. They are outlined below:&lt;br /&gt;
*&amp;lt;b&amp;gt;#IVRanges&amp;lt;/b&amp;gt; - the available voltage ranges for analog input for the given device (where &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; will be replaced by the device name)&lt;br /&gt;
**&amp;lt;i&amp;gt;This parameter will only be enabled if the &amp;lt;/i&amp;gt;&amp;lt;code&amp;gt;--LogAnaIn&amp;lt;/code&amp;gt;&amp;lt;i&amp;gt; flag is being used&amp;lt;/i&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;#InSampleRate&amp;lt;/b&amp;gt; - the sampling rate for the NIDAQLogger&lt;br /&gt;
**&amp;lt;i&amp;gt;This parameter will be here if the &amp;lt;/i&amp;gt;&amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt;&amp;lt;i&amp;gt; flag is being used&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters will be located under the &amp;lt;b&amp;gt;Source&amp;lt;/b&amp;gt; tab, in the section labeled &amp;lt;i&amp;gt;NILogger&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
The states that are available are dependent on the port specifications declared in the command line parameters. The format for the states is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NIDev#[A:D]INPUT#&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The first &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the device number.&lt;br /&gt;
*The second &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the line number (starting at &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;).&lt;br /&gt;
*The &amp;lt;b&amp;gt;[A:D]&amp;lt;/b&amp;gt; denotes if the state refers to an analog (&amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt;) or a digital (&amp;lt;b&amp;gt;D&amp;lt;/b&amp;gt;) channel.&lt;br /&gt;
&lt;br /&gt;
For example, if the command parameters look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQin=1 --LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot; --LogAnaIn=&amp;quot;Dev1-10011000&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the states that will be created are the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      NIDev1DINPUT3     NIDev1DINPUT9     NIDev1AINPUT0&lt;br /&gt;
              NIDev1AINPUT2     NIDev1AINPUT3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
==Acquired Data==&lt;br /&gt;
The data (analog) that is acquired by the device is translated to make sure that all of the data will fit inside of the state&#039;s parameters. Due to this fact, the data needs to be translated back in order to return it to units of milliVolts (mV). This can be done by subtracting the data by (2000*upper voltage bound). For example, if the data was logged with the range -10V to 10V, then the data must be subtracted by 20,000.&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5766</id>
		<title>Contributions:NIDAQLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5766"/>
		<updated>2010-08-03T20:34:25Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
National Instruments Data Acquisition Module&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
Not yet in the repository.&lt;br /&gt;
(It would be in the following directory:&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/SignalSource/NIDAQLogger)&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: --&lt;br /&gt;
*Known to compile under: --&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
The NIDAQLogger has been tested with the USB-6009 and PCI-6024E National Instruments boards at sampling rates up to and including 4096Hz, with sample block sizes up to and including 1024 samples/block. Both devices were running under DAQmx driver version 8.9.5 .&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
There are a couple of known issues with the NIDAQLogger that are listed below:&lt;br /&gt;
*Occasional &amp;quot;glitching&amp;quot; may occur : the condition known as &amp;quot;glitching&amp;quot; is when some data gets swapped with slightly older data, producing a result that looks wrong.&lt;br /&gt;
*The NIDAQLogger, when coupled with the NIDAQmx Source Module, does not currently work at sampling rates above 8192Hz.&lt;br /&gt;
*Poor results may occur if the NIDAQLogger is used within 5 minutes of starting the BCI2000 computer up.&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Acquires signals using National Instruments Data Acquisition boards, other devices, and the computer. Device(s) must be connected to computer beforehand.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===Command Line Parameters===&lt;br /&gt;
====Initializing NIDAQLogger====&lt;br /&gt;
To begin using the NIDAQLogger module, use the &amp;lt;code&amp;gt;--LogNIDAQin&amp;lt;/code&amp;gt; flag, and set it equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;.&lt;br /&gt;
To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiIn&amp;lt;/code&amp;gt; (for digital input)&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaIn&amp;lt;/code&amp;gt; (for analog input)&lt;br /&gt;
The format for the inputs for the above flags is as follows: &amp;lt;code&amp;gt;[flag]=&amp;quot;[device name]-[port specification]&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
Note that if &amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; is used, that at least one of the two above flags MUST be used.&lt;br /&gt;
====Device Specification====&lt;br /&gt;
The device name (usually) is to be written as &amp;quot;Dev1&amp;quot; or &amp;quot;Dev2&amp;quot; (without the &amp;quot;&amp;quot;). Afterwards, use a - to indicate the device name is finished. If the device number is unclear, run the program with the &amp;lt;code&amp;gt;--LogNIDAQin&amp;lt;/code&amp;gt; flag activated, and look at the Operator Log. The devices (along with their number) will be listed.&lt;br /&gt;
====Port Specifications====&lt;br /&gt;
There are two acceptable states that the user can specify for each port:&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;INACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Important: If both the NIDAQLogger and the NIDAQFilter (see [[Contributions:NIDAQFilter]]) are being used, and both are using the digital lines on the same device, make sure that any port that is being referenced in a parameter is referenced only once. One port cannot use both digital input and digital output functionality, and will cause BCI2000 to throw an error, saying that the line is RESERVED. &amp;lt;/i&amp;gt;&lt;br /&gt;
====Example====&lt;br /&gt;
Let&#039;s assume that the user wants to use one device for both analog and digital input. The device has 8 Analog Input ports and 12 Digital I/O ports.&lt;br /&gt;
The user also wants to use the 3rd and 4th analog input ports, and the 4th and 10th digital ports for digital input.&lt;br /&gt;
&lt;br /&gt;
The user needs to use 3 flags to accomplish this:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIDAQin=1&amp;lt;/code&amp;gt; -&amp;gt; This flag activates the NIDAQLogger for use.&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot;&amp;lt;/code&amp;gt; -&amp;gt; This flag indicates that the user wants to use digital I/O. &amp;quot;Dev1&amp;quot; is the name of the device connected to the computer that she wants to use. &amp;lt;code&amp;gt;0001000000100&amp;lt;/code&amp;gt; indicates that the user wants ports 4 and 10 (the &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;&#039;s) as &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaIn=&amp;quot;Dev1-00011000&amp;quot;&amp;lt;/code&amp;gt; -&amp;gt; This flag indicates that she wants to use analog output. &amp;quot;Dev1&amp;quot; is the name of the device connected to the computer that she wants to use. &amp;lt;code&amp;gt;00011000&amp;lt;/code&amp;gt; indicates that she wants to the use ports 3 and 4 on analog input.&lt;br /&gt;
The full command (assuming she uses this with SignalGenerator.exe) that the user would use is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQin=1 --LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot; --LogAnaIn=&amp;quot;Dev1-00011000&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===BCI2000 Parameters===&lt;br /&gt;
There are two possible parameters that the user will be able to use. They are outlined below:&lt;br /&gt;
*&amp;lt;b&amp;gt;#IVRanges&amp;lt;/b&amp;gt; - the available voltage ranges for analog input for the given device (where &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; will be replaced by the device name)&lt;br /&gt;
**&amp;lt;i&amp;gt;This parameter will only be enabled if the &amp;lt;/i&amp;gt;&amp;lt;code&amp;gt;--LogAnaIn&amp;lt;/code&amp;gt;&amp;lt;i&amp;gt; flag is being used&amp;lt;/i&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;#InSampleRate&amp;lt;/b&amp;gt; - the sampling rate for the NIDAQLogger&lt;br /&gt;
**&amp;lt;i&amp;gt;This parameter will be here if the &amp;lt;/i&amp;gt;&amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt;&amp;lt;i&amp;gt; flag is being used&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters will be located under the &amp;lt;b&amp;gt;Source&amp;lt;/b&amp;gt; tab, in the section labeled &amp;lt;i&amp;gt;NILogger&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
The states that are available are dependent on the port specifications declared in the command line parameters. The format for the states is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NIDev#[A:D]INPUT#&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The first &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the device number.&lt;br /&gt;
*The second &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the line number (starting at &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;).&lt;br /&gt;
*The &amp;lt;b&amp;gt;[A:D]&amp;lt;/b&amp;gt; denotes if the state refers to an analog (&amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt;) or a digital (&amp;lt;b&amp;gt;D&amp;lt;/b&amp;gt;) channel.&lt;br /&gt;
&lt;br /&gt;
For example, if the command parameters look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQin=1 --LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot; --LogAnaIn=&amp;quot;Dev1-10011000&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the states that will be created are the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      NIDev1DINPUT3     NIDev1DINPUT9     NIDev1AINPUT0&lt;br /&gt;
              NIDev1AINPUT2     NIDev1AINPUT3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
==Acquired Data==&lt;br /&gt;
The data (analog) that is acquired by the device is translated to make sure that all of the data will fit inside of the state&#039;s parameters. Due to this fact, the data needs to be translated back in order to return it to units of milliVolts (mV). This can be done by subtracting the data by (2000*upper voltage bound). For example, if the data was logged with the range -10V to 10V, then the data must be subtracted by 20,000.&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQFilter&amp;diff=5764</id>
		<title>Contributions:NIDAQFilter</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQFilter&amp;diff=5764"/>
		<updated>2010-07-27T20:50:59Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
A filter that outputs different statesr from BCI2000 to outputs connected to a National Instruments Board running DAQmx 8.5 or higher.&lt;br /&gt;
==Location==&lt;br /&gt;
Not yet in the repository.&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
1.0&lt;br /&gt;
===Source Code Revision===&lt;br /&gt;
Not Applicable&lt;br /&gt;
==Functional Description==&lt;br /&gt;
The NIDAQFilter uses any DAQmx 8.5 or higher compliant board and allows the user to pipe state data from BCI2000 through the board. All necesary components must be connected to the BCI computer before initiating a module using the filter.&lt;br /&gt;
==Parameters==&lt;br /&gt;
The NIDAQFilter uses command line parameters to initialize the device(s) and set up the active ports. It then uses BCI2000 parameters for finer controls over the device, such as changing the sampling rate of the device.&lt;br /&gt;
===Command Line Parameters===&lt;br /&gt;
====Initializing the NIDAQFilter====&lt;br /&gt;
To begin using the NIDAQFilter, use the &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; flag and set it equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;. To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiOut&amp;lt;/code&amp;gt; --&amp;gt; Enable the device to use digital output characteristics&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaOut&amp;lt;/code&amp;gt; --&amp;gt; Enable the device to use analog output characteristics&lt;br /&gt;
The format for the outputs for above flags is as follows:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;[flag]=&amp;quot;[device specification]-[port specifications]&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Please note that if &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; is enabled, then at least one of the above flags &amp;lt;b&amp;gt;MUST&amp;lt;/b&amp;gt; be used.&lt;br /&gt;
====Device Specification====&lt;br /&gt;
The device name is to be written as &amp;quot;Dev1&amp;quot; or &amp;quot;Dev2&amp;quot; (without the quotes) in the first part of the parameter value. After the device name is specified, use a hyphen (-) to indicate the device name is finished. For example, the first part of the parameter value would look like this: &amp;lt;code&amp;gt; &amp;quot;Dev1-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;If the device numbers are unclear, run the filter with just the &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; flag specified. The device names (along with their familiar names) will appear in the operator log.&amp;lt;/i&amp;gt;&lt;br /&gt;
====Port Specifications====&lt;br /&gt;
There are two acceptable states that the user can specify for each port that they are going to use:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; --&amp;gt; the associated port WILL NOT be used&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; --&amp;gt; the associated port WILL be used&lt;br /&gt;
&lt;br /&gt;
The values will be used for every single port that the user wants to use. For example, if the user wants to use ports 3 and 5 on a device with 10 ports, then the port specification for that device will be the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;0010100000&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice how even though the user wants to use only 2 ports, all 10 ports have been indicated. This is required. Any port that is not needed should be marked with a &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;. If the number of ports specified in the parameter file does not match the number of ports found on the device, an error will be thrown, showing the number of ports were specified and how many ports there are for that device function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Important: If both the NIDAQLogger([[Contributions:NIDAQLogger]]) and the NIDAQFilter are being used, and both are using the digital lines on the same device, make sure that any port that is being referenced in a parameter is referenced only once. One port cannot use both digital input and digital output functionality, and will cause BCI2000 to throw an error, saying that the line is RESERVED.&amp;lt;/i&amp;gt;&lt;br /&gt;
====A Completed Flag====&lt;br /&gt;
The following is the completed flag, whose parts were described above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;--LogAnaOut=&amp;quot;Dev1-0010100000&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above flag tells the filter that the user wants to use the analog output ports on Device 1, which has 10 ports on it. The user wants to use the 3rd and 5th ports on the device, but leave everything else unused.&lt;br /&gt;
===BCI2000 Parameters===&lt;br /&gt;
After the commandline parameters have been set, more parameters may be configured in the Configuration dialog box in BCI2000. Under the header &amp;lt;i&amp;gt;NIDAQFilter&amp;lt;/i&amp;gt;, the following parameters MAY appear, as some of them are dependant on flags being used:&lt;br /&gt;
*&amp;lt;b&amp;gt;#OVRanges&amp;lt;/b&amp;gt; [ENUMERATION] --&amp;gt; This parameter tells the user if there are multiple output voltage ranges that are acceptable for use. If not, then the parameter will NOT show up. The parameter is activated by the &amp;lt;code&amp;gt;--LogAnaOut&amp;lt;/code&amp;gt; flag.&lt;br /&gt;
*&amp;lt;b&amp;gt;FilterExpressions&amp;lt;/b&amp;gt; [MATRIX] --&amp;gt; This parameter allows the user to associate different states to individual output lines on the board. By clicking on the Edit Matrix button, the user will see a list of the lines that are active on the board, and a space to put an expression. This parameter will always show up, regardless of the flags being used.&lt;br /&gt;
==States==&lt;br /&gt;
===Template===&lt;br /&gt;
The states are constructed in a contextual manner, that is to say, they are created based on the channels that the user decides to use. The template of the state names is shown below:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;&amp;lt;b&amp;gt;NI[device name][A:D]OUTPUT[port number-1]&amp;lt;/b&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Some key things about the template:&lt;br /&gt;
*[device name] -&amp;gt; the name of the device to which the port is associated to (for example, if Device 4 is being used, then there will be a state that begins with NIDev4 will exist)&lt;br /&gt;
*[A:D] -&amp;gt; analog or digital state (an analog state has a bit width of 16, while a digital state has a bit width of 1). This is dependant on the way the device is being used, and is not settable by the user.&lt;br /&gt;
*[port number - 1] -&amp;gt; the number of the port being used (the states begin at port 0, so when port 4 is being used, the number in the state will be 3)&lt;br /&gt;
===Example===&lt;br /&gt;
If the following parameter list were used as a user&#039;s command line parameter:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;--LogNIDAQout=1 --LogAnaOut=&amp;quot;Dev1-00100010100&amp;quot; --LogDigiOut=&amp;quot;Dev2-00100001010&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Then the following states would be produced:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
      NIDev1AOUTPUT2     NIDev1AOUTPUT6     NIDev1AOUTPUT8&lt;br /&gt;
      NIDev2DOUTPUT2     NIDev2DOUTPUT7     NIDev2DOUTPUT9&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQFilter&amp;diff=5763</id>
		<title>Contributions:NIDAQFilter</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQFilter&amp;diff=5763"/>
		<updated>2010-07-27T20:48:46Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Synopsis=&lt;br /&gt;
A filter that outputs different statesr from BCI2000 to outputs connected to a National Instruments Board running DAQmx 8.5 or higher.&lt;br /&gt;
=Location=&lt;br /&gt;
Not yet in the repository.&lt;br /&gt;
=Versioning=&lt;br /&gt;
==Author==&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
==Version History==&lt;br /&gt;
1.0&lt;br /&gt;
==Source Code Revision==&lt;br /&gt;
Not Applicable&lt;br /&gt;
=Functional Description=&lt;br /&gt;
The NIDAQFilter uses any DAQmx 8.5 or higher compliant board and allows the user to pipe state data from BCI2000 through the board. All necesary components must be connected to the BCI computer before initiating a module using the filter.&lt;br /&gt;
=Parameters=&lt;br /&gt;
The NIDAQFilter uses command line parameters to initialize the device(s) and set up the active ports. It then uses BCI2000 parameters for finer controls over the device, such as changing the sampling rate of the device.&lt;br /&gt;
==Command Line Parameters==&lt;br /&gt;
===Initializing the NIDAQFilter===&lt;br /&gt;
To begin using the NIDAQFilter, use the &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; flag and set it equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;. To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiOut&amp;lt;/code&amp;gt; --&amp;gt; Enable the device to use digital output characteristics&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaOut&amp;lt;/code&amp;gt; --&amp;gt; Enable the device to use analog output characteristics&lt;br /&gt;
The format for the outputs for above flags is as follows:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;[flag]=&amp;quot;[device specification]-[port specifications]&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Please note that if &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; is enabled, then at least one of the above flags &amp;lt;b&amp;gt;MUST&amp;lt;/b&amp;gt; be used.&lt;br /&gt;
===Device Specification===&lt;br /&gt;
The device name is to be written as &amp;quot;Dev1&amp;quot; or &amp;quot;Dev2&amp;quot; (without the quotes) in the first part of the parameter value. After the device name is specified, use a hyphen (-) to indicate the device name is finished. For example, the first part of the parameter value would look like this: &amp;lt;code&amp;gt; &amp;quot;Dev1-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;If the device numbers are unclear, run the filter with just the &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; flag specified. The device names (along with their familiar names) will appear in the operator log.&amp;lt;/i&amp;gt;&lt;br /&gt;
===Port Specifications===&lt;br /&gt;
There are two acceptable states that the user can specify for each port that they are going to use:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; --&amp;gt; the associated port WILL NOT be used&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; --&amp;gt; the associated port WILL be used&lt;br /&gt;
&lt;br /&gt;
The values will be used for every single port that the user wants to use. For example, if the user wants to use ports 3 and 5 on a device with 10 ports, then the port specification for that device will be the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;0010100000&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice how even though the user wants to use only 2 ports, all 10 ports have been indicated. This is required. Any port that is not needed should be marked with a &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;. If the number of ports specified in the parameter file does not match the number of ports found on the device, an error will be thrown, showing the number of ports were specified and how many ports there are for that device function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Important: If both the NIDAQLogger([[Contributions:NIDAQLogger]]) and the NIDAQFilter are being used, and both are using the digital lines on the same device, make sure that any port that is being referenced in a parameter is referenced only once. One port cannot use both digital input and digital output functionality, and will cause BCI2000 to throw an error, saying that the line is RESERVED.&amp;lt;/i&amp;gt;&lt;br /&gt;
===A Completed Flag===&lt;br /&gt;
The following is the completed flag, whose parts were described above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;--LogAnaOut=&amp;quot;Dev1-0010100000&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above flag tells the filter that the user wants to use the analog output ports on Device 1, which has 10 ports on it. The user wants to use the 3rd and 5th ports on the device, but leave everything else unused.&lt;br /&gt;
==BCI2000 Parameters==&lt;br /&gt;
After the commandline parameters have been set, more parameters may be configured in the Configuration dialog box in BCI2000. Under the header &amp;lt;i&amp;gt;NIDAQFilter&amp;lt;/i&amp;gt;, the following parameters MAY appear, as some of them are dependant on flags being used:&lt;br /&gt;
*&amp;lt;b&amp;gt;#OVRanges&amp;lt;/b&amp;gt; [ENUMERATION] --&amp;gt; This parameter tells the user if there are multiple output voltage ranges that are acceptable for use. If not, then the parameter will NOT show up. The parameter is activated by the &amp;lt;code&amp;gt;--LogAnaOut&amp;lt;/code&amp;gt; flag.&lt;br /&gt;
*&amp;lt;b&amp;gt;FilterExpressions&amp;lt;/b&amp;gt; [MATRIX] --&amp;gt; This parameter allows the user to associate different states to individual output lines on the board. By clicking on the Edit Matrix button, the user will see a list of the lines that are active on the board, and a space to put an expression. This parameter will always show up, regardless of the flags being used.&lt;br /&gt;
=States=&lt;br /&gt;
==Template==&lt;br /&gt;
The states are constructed in a contextual manner, that is to say, they are created based on the channels that the user decides to use. The template of the state names is shown below:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;&amp;lt;b&amp;gt;NI[device name][A:D]OUTPUT[port number-1]&amp;lt;/b&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Some key things about the template:&lt;br /&gt;
*[device name] -&amp;gt; the name of the device to which the port is associated to (for example, if Device 4 is being used, then there will be a state that begins with NIDev4 will exist)&lt;br /&gt;
*[A:D] -&amp;gt; analog or digital state (an analog state has a bit width of 16, while a digital state has a bit width of 1). This is dependant on the way the device is being used, and is not settable by the user.&lt;br /&gt;
*[port number - 1] -&amp;gt; the number of the port being used (the states begin at port 0, so when port 4 is being used, the number in the state will be 3)&lt;br /&gt;
==Example==&lt;br /&gt;
If the following parameter list were used as a user&#039;s command line parameter:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;--LogNIDAQout=1 --LogAnaOut=&amp;quot;Dev1-00100010100&amp;quot; --LogDigiOut=&amp;quot;Dev2-00100001010&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Then the following states would be produced:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
      NIDev1AOUTPUT2     NIDev1AOUTPUT6     NIDev1AOUTPUT8&lt;br /&gt;
      NIDev2DOUTPUT2     NIDev2DOUTPUT7     NIDev2DOUTPUT9&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5762</id>
		<title>Contributions:NIDAQLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5762"/>
		<updated>2010-07-27T20:40:23Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
National Instruments Data Acquisition Module&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
Not yet in the repository.&lt;br /&gt;
(It would be in the following directory:&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/SignalSource/NIDAQLogger)&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: --&lt;br /&gt;
*Known to compile under: --&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Acquires signals using National Instruments Data Acquisition boards, other devices, and the computer. Device must be connected to computer beforehand.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===Command Line Parameters===&lt;br /&gt;
====Initializing NIDAQLogger====&lt;br /&gt;
To begin using the NIDAQLogger module, use the &amp;lt;code&amp;gt;--LogNIDAQin&amp;lt;/code&amp;gt; flag, and set it equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;.&lt;br /&gt;
To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiIn&amp;lt;/code&amp;gt; (for digital input)&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaIn&amp;lt;/code&amp;gt; (for analog input)&lt;br /&gt;
The format for the inputs for the above flags is as follows: &amp;lt;code&amp;gt;[flag]=&amp;quot;[device name]-[port specification]&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
Note that if &amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; is used, that at least one of the two above flags MUST be used.&lt;br /&gt;
====Device Specification====&lt;br /&gt;
The device name (usually) is to be written as &amp;quot;Dev1&amp;quot; or &amp;quot;Dev2&amp;quot; (without the &amp;quot;&amp;quot;). Afterwards, use a - to indicate the device name is finished. If the device number is unclear, run the program with the &amp;lt;code&amp;gt;--LogNIDAQin&amp;lt;/code&amp;gt; flag activated, and look at the Operator Log. The devices (along with their number) will be listed.&lt;br /&gt;
====Port Specifications====&lt;br /&gt;
There are two acceptable states that the user can specify for each port:&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;INACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Important: If both the NIDAQLogger and the NIDAQFilter[[Contributions:NIDAQFilter]] are being used, and both are using the digital lines on the same device, make sure that any port that is being referenced in a parameter is referenced only once. One port cannot use both digital input and digital output functionality, and will cause BCI2000 to throw an error, saying that the line is RESERVED. &amp;lt;/i&amp;gt;&lt;br /&gt;
====Example====&lt;br /&gt;
Let&#039;s assume that the user wants to use one device for both analog and digital input. The device has 8 Analog Input ports and 12 Digital I/O ports.&lt;br /&gt;
The user also wants to use the 3rd and 4th analog input ports, and the 4th and 10th digital ports for digital input.&lt;br /&gt;
&lt;br /&gt;
The user needs to use 3 flags to accomplish this:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIDAQin=1&amp;lt;/code&amp;gt; -&amp;gt; This flag activates the NIDAQLogger for use.&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot;&amp;lt;/code&amp;gt; -&amp;gt; This flag indicates that the user wants to use digital I/O. &amp;quot;Dev1&amp;quot; is the name of the device connected to the computer that she wants to use. &amp;lt;code&amp;gt;0001000000100&amp;lt;/code&amp;gt; indicates that the user wants ports 4 and 10 (the &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;&#039;s) as &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaIn=&amp;quot;Dev1-00011000&amp;quot;&amp;lt;/code&amp;gt; -&amp;gt; This flag indicates that she wants to use analog output. &amp;quot;Dev1&amp;quot; is the name of the device connected to the computer that she wants to use. &amp;lt;code&amp;gt;00011000&amp;lt;/code&amp;gt; indicates that she wants to the use ports 3 and 4 on analog input.&lt;br /&gt;
The full command (assuming she uses this with SignalGenerator.exe) that the user would use is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQin=1 --LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot; --LogAnaIn=&amp;quot;Dev1-00011000&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===BCI2000 Parameters===&lt;br /&gt;
There are two possible parameters that the user will be able to use. They are outlined below:&lt;br /&gt;
*&amp;lt;b&amp;gt;#IVRanges&amp;lt;/b&amp;gt; - the available voltage ranges for analog input for the given device (where &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; will be replaced by the device name)&lt;br /&gt;
**&amp;lt;i&amp;gt;This parameter will only be enabled if the &amp;lt;/i&amp;gt;&amp;lt;code&amp;gt;--LogAnaIn&amp;lt;/code&amp;gt;&amp;lt;i&amp;gt; flag is being used&amp;lt;/i&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;#InSampleRate&amp;lt;/b&amp;gt; - the sampling rate for the NIDAQLogger&lt;br /&gt;
**&amp;lt;i&amp;gt;This parameter will be here if the &amp;lt;/i&amp;gt;&amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt;&amp;lt;i&amp;gt; flag is being used&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters will be located under the &amp;lt;b&amp;gt;Source&amp;lt;/b&amp;gt; tab, in the section labeled &amp;lt;i&amp;gt;NILogger&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
The states that are available are dependent on the port specifications declared in the command line parameters. The format for the states is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NIDev#[A:D]INPUT#&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The first &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the device number.&lt;br /&gt;
*The second &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the line number (starting at &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;).&lt;br /&gt;
*The &amp;lt;b&amp;gt;[A:D]&amp;lt;/b&amp;gt; denotes if the state refers to an analog (&amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt;) or a digital (&amp;lt;b&amp;gt;D&amp;lt;/b&amp;gt;) channel.&lt;br /&gt;
&lt;br /&gt;
For example, if the command parameters look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQin=1 --LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot; --LogAnaIn=&amp;quot;Dev1-10011000&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the states that will be created are the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      NIDev1DINPUT3     NIDev1DINPUT9     NIDev1AINPUT0&lt;br /&gt;
              NIDev1AINPUT2     NIDev1AINPUT3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
==Acquired Data==&lt;br /&gt;
The data (analog) that is acquired by the device is translated to make sure that all of the data will fit inside of the state&#039;s parameters. Due to this fact, the data needs to be translated back in order to return it to units of milliVolts (mV). This can be done by subtracting the data by (2000*upper voltage bound). For example, if the data was logged with the range -10V to 10V, then the data must be subtracted by 20,000.&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQFilter&amp;diff=5761</id>
		<title>Contributions:NIDAQFilter</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQFilter&amp;diff=5761"/>
		<updated>2010-07-27T20:12:13Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Synopsis=&lt;br /&gt;
A filter that outputs different statesr from BCI2000 to outputs connected to a National Instruments Board running DAQmx 8.5 or higher.&lt;br /&gt;
=Location=&lt;br /&gt;
Not yet in the repository.&lt;br /&gt;
=Versioning=&lt;br /&gt;
==Author==&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
==Version History==&lt;br /&gt;
1.0&lt;br /&gt;
==Source Code Revision==&lt;br /&gt;
=Functional Description=&lt;br /&gt;
The NIDAQFilter uses any DAQmx 8.5 or higher compliant board and allows the user to pipe state data from BCI2000 through the board. All necesary components must be connected to the BCI computer before initiating a module using the filter.&lt;br /&gt;
=Parameters=&lt;br /&gt;
The NIDAQFilter uses command line parameters to initialize the device(s) and set up the active ports. It then uses BCI2000 parameters for finer controls over the device, such as changing the sampling rate of the device.&lt;br /&gt;
==Command Line Parameters==&lt;br /&gt;
===Initializing the NIDAQFilter===&lt;br /&gt;
To begin using the NIDAQFilter, use the &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; flag and set it equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;. To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiOut&amp;lt;/code&amp;gt; --&amp;gt; Enable the device to use digital output characteristics&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaOut&amp;lt;/code&amp;gt; --&amp;gt; Enable the device to use analog output characteristics&lt;br /&gt;
The format for the outputs for above flags is as follows:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;[flag]=&amp;quot;[device specification]-[port specifications]&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Please note that if &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; is enabled, then at least one of the above flags &amp;lt;b&amp;gt;MUST&amp;lt;/b&amp;gt; be used.&lt;br /&gt;
===Device Specification===&lt;br /&gt;
The device name is to be written as &amp;quot;Dev1&amp;quot; or &amp;quot;Dev2&amp;quot; (without the quotes) in the first part of the parameter value. After the device name is specified, use a hyphen (-) to indicate the device name is finished. For example, the first part of the parameter value would look like this: &amp;lt;code&amp;gt; &amp;quot;Dev1-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;If the device numbers are unclear, run the filter with just the &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; flag specified. The device names (along with their familiar names) will appear in the operator log.&amp;lt;/i&amp;gt;&lt;br /&gt;
===Port Specifications===&lt;br /&gt;
There are two acceptable states that the user can specify for each port that they are going to use:&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; --&amp;gt; the associated port WILL NOT be used&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; --&amp;gt; the associated port WILL be used&lt;br /&gt;
&lt;br /&gt;
The values will be used for every single port that the user wants to use. For example, if the user wants to use ports 3 and 5 on a device with 10 ports, then the port specification for that device will be the following:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;0010100000&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice how even though the user wants to use only 2 ports, all 10 ports have been indicated. This is required. Any port that is not needed should be marked with a &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;. If the number of ports specified in the parameter file does not match the number of ports found on the device, an error will be thrown, showing the number of ports were specified and how many ports there are for that device function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Important: If both the NIDAQLogger([[Contributions:NIDAQLogger]]) and the NIDAQFilter are being used, and both are using the digital lines on the same device, make sure that any port that is being referenced in a parameter is referenced only once. One port cannot use both digital input and digital output functionality, and will cause BCI2000 to throw an error, saying that the line is RESERVED.&amp;lt;/i&amp;gt;&lt;br /&gt;
===A Completed Flag===&lt;br /&gt;
The following is the completed flag, whose parts were described above:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;--LogAnaOut=&amp;quot;Dev1-0010100000&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above flag tells the filter that the user wants to use the analog output ports on Device 1, which has 10 ports on it. The user wants to use the 3rd and 5th ports on the device, but leave everything else unused.&lt;br /&gt;
==BCI2000 Parameters==&lt;br /&gt;
After the commandline parameters have been set, more parameters may be configured in the Configuration dialog box in BCI2000. Under the header &amp;lt;i&amp;gt;NIDAQFilter&amp;lt;/i&amp;gt;, the following parameters MAY appear, as some of them are dependant on flags being used:&lt;br /&gt;
*&amp;lt;b&amp;gt;#OVRanges&amp;lt;/b&amp;gt; --&amp;gt; This parameter tells the user if there are multiple output voltage ranges that are acceptable for use. If not, then the parameter will NOT show up. The parameter is an enumeration, and is activated by the &amp;lt;code&amp;gt;--LogAnaOut&amp;lt;/code&amp;gt; flag.&lt;br /&gt;
*&amp;lt;b&amp;gt;#OutSamplingRate&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;FilterExpressions&amp;lt;/b&amp;gt;&lt;br /&gt;
=States=&lt;br /&gt;
==Template==&lt;br /&gt;
The states are constructed in a contextual manner, that is to say, they are created based on the channels that the user decides to use. The template of the state names is shown below:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;&amp;lt;b&amp;gt;NI[device name][A:D]OUTPUT[port number-1]&amp;lt;/b&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Some key things about the template:&lt;br /&gt;
*[device name] -&amp;gt; the name of the device to which the port is associated to (for example, if Device 4 is being used, then there will be a state that begins with NIDev4 will exist)&lt;br /&gt;
*[A:D] -&amp;gt; analog or digital state (an analog state has a bit width of 16, while a digital state has a bit width of 1). This is dependant on the way the device is being used, and is not settable by the user.&lt;br /&gt;
*[port number - 1] -&amp;gt; the number of the port being used (the states begin at port 0, so when port 4 is being used, the number in the state will be 3)&lt;br /&gt;
==Example==&lt;br /&gt;
If the following parameter list were used as a user&#039;s command line parameter:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;--LogNIDAQout=1 --LogAnaOut=&amp;quot;Dev1-00100010100&amp;quot; --LogDigiOut=&amp;quot;Dev2-00100001010&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Then the following states would be produced:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
      NIDev1AOUTPUT2     NIDev1AOUTPUT6     NIDev1AOUTPUT8&lt;br /&gt;
      NIDev2DOUTPUT2     NIDev2DOUTPUT7     NIDev2DOUTPUT9&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQFilter&amp;diff=5760</id>
		<title>Contributions:NIDAQFilter</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQFilter&amp;diff=5760"/>
		<updated>2010-07-27T19:53:01Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Synopsis=&lt;br /&gt;
A filter that outputs different statesr from BCI2000 to outputs connected to a National Instruments Board running DAQmx 8.5 or higher.&lt;br /&gt;
=Location=&lt;br /&gt;
Not yet in the repository.&lt;br /&gt;
=Versioning=&lt;br /&gt;
==Author==&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
==Version History==&lt;br /&gt;
1.0&lt;br /&gt;
==Source Code Revision==&lt;br /&gt;
=Functional Description=&lt;br /&gt;
=Parameters=&lt;br /&gt;
The NIDAQFilter uses command line parameters to initialize the device(s) and set up the active ports. It then uses BCI2000 parameters for finer controls over the device, such as changing the sampling rate of the device.&lt;br /&gt;
==Command Line Parameters==&lt;br /&gt;
===Initializing the NIDAQFilter===&lt;br /&gt;
To begin using the NIDAQFilter, use the &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; flag and set it equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;. To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiOut&amp;lt;/code&amp;gt; --&amp;gt; Enable the device to use digital output characteristics&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaOut&amp;lt;/code&amp;gt; --&amp;gt; Enable the device to use analog output characteristics&lt;br /&gt;
The format for the outputs for above flags is as follows:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;[flag]=&amp;quot;[device specification]-[port specifications]&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Please note that if &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; is enabled, then at least one of the above flags &amp;lt;b&amp;gt;MUST&amp;lt;/b&amp;gt; be used.&lt;br /&gt;
===Device Specification===&lt;br /&gt;
The device name is to be written as &amp;quot;Dev1&amp;quot; or &amp;quot;Dev2&amp;quot; (without the quotes) in the first part of the parameter value. After the device name is specified, use a hyphen (-) to indicate the device name is finished. For example, the first part of the parameter value would look like this: &amp;lt;code&amp;gt; &amp;quot;Dev1-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;If the device numbers are unclear, run the filter with just the &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; flag specified. The device names (along with their familiar names) will appear in the operator log.&amp;lt;/i&amp;gt;&lt;br /&gt;
===Port Specifications===&lt;br /&gt;
There are two acceptable states that the user can specify for each port that they are going to use:&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; --&amp;gt; the associated port WILL NOT be used&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; --&amp;gt; the associated port WILL be used&lt;br /&gt;
&lt;br /&gt;
The values will be used for every single port that the user wants to use. For example, if the user wants to use ports 3 and 5 on a device with 10 ports, then the port specification for that device will be the following:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;0010100000&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice how even though the user wants to use only 2 ports, all 10 ports have been indicated. This is required. Any port that is not needed should be marked with a &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;. If the number of ports specified in the parameter file does not match the number of ports found on the device, an error will be thrown, showing the number of ports were specified and how many ports there are for that device function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Important: If both the NIDAQLogger([[Contributions:NIDAQLogger]]) and the NIDAQFilter are being used, and both are using the digital lines on the same device, make sure that any port that is being referenced in a parameter is referenced only once. One port cannot use both digital input and digital output functionality, and will cause BCI2000 to throw an error, saying that the line is RESERVED.&amp;lt;/i&amp;gt;&lt;br /&gt;
===A Completed Flag===&lt;br /&gt;
The following is the completed flag, whose parts were described above:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;--LogAnaOut=&amp;quot;Dev1-0010100000&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above flag tells the filter that the user wants to use the analog output ports on Device 1, which has 10 ports on it. The user wants to use the 3rd and 5th ports on the device, but leave everything else unused.&lt;br /&gt;
==BCI2000 Parameters==&lt;br /&gt;
After the commandline parameters have been set, more parameters may be configured in the Configuration dialog box in BCI2000. Under the header &amp;lt;i&amp;gt;NIDAQFilter&amp;lt;/i&amp;gt;, the following parameters MAY appear, as some of them are dependant on flags being used:&lt;br /&gt;
*&amp;lt;b&amp;gt;#OVRanges&amp;lt;/b&amp;gt; --&amp;gt; This parameter tells the user if there are multiple output voltage ranges that are acceptable for use. If not, then the parameter will NOT show up. The parameter is an enumeration, and is activated by the &amp;lt;code&amp;gt;--LogAnaOut&amp;lt;/code&amp;gt; flag.&lt;br /&gt;
*&amp;lt;b&amp;gt;#OutSamplingRate&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;FilterExpressions&amp;lt;/b&amp;gt;&lt;br /&gt;
=States=&lt;br /&gt;
==Template==&lt;br /&gt;
The states are constructed in a contextual manner, that is to say, they are created based on the channels that the user decides to use. The template of the state names is shown below:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;&amp;lt;b&amp;gt;NI[device name][A:D]OUTPUT[port number-1]&amp;lt;/b&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Some key things about the template:&lt;br /&gt;
*[device name] -&amp;gt; the name of the device to which the port is associated to (for example, if Device 4 is being used, then there will be a state that begins with NIDev4 will exist)&lt;br /&gt;
*[A:D] -&amp;gt; analog or digital state (an analog state has a bit width of 16, while a digital state has a bit width of 1). This is dependant on the way the device is being used, and is not settable by the user.&lt;br /&gt;
*[port number - 1] -&amp;gt; the number of the port being used (the states begin at port 0, so when port 4 is being used, the number in the state will be 3)&lt;br /&gt;
==Example==&lt;br /&gt;
If the following parameter list were used as a user&#039;s command line parameter:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;--LogNIDAQout=1 --LogAnaOut=&amp;quot;Dev1-00100010100&amp;quot; --LogDigiOut=&amp;quot;Dev2-00100001010&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Then the following states would be produced:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
      NIDev1AOUTPUT2     NIDev1AOUTPUT6     NIDev1AOUTPUT8&lt;br /&gt;
      NIDev2DOUTPUT2     NIDev2DOUTPUT7     NIDev2DOUTPUT9&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQFilter&amp;diff=5759</id>
		<title>Contributions:NIDAQFilter</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQFilter&amp;diff=5759"/>
		<updated>2010-07-27T19:08:33Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Synopsis=&lt;br /&gt;
A filter that outputs different statesr from BCI2000 to outputs connected to a National Instruments Board running DAQmx 8.5 or higher.&lt;br /&gt;
=Location=&lt;br /&gt;
Not yet in the repository.&lt;br /&gt;
=Versioning=&lt;br /&gt;
==Author==&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
==Version History==&lt;br /&gt;
1.0&lt;br /&gt;
==Source Code Revision==&lt;br /&gt;
=Functional Description=&lt;br /&gt;
=Parameters=&lt;br /&gt;
The NIDAQFilter uses command line parameters to initialize the device(s) and set up the active ports. It then uses BCI2000 parameters for finer controls over the device, such as changing the sampling rate of the device.&lt;br /&gt;
==Command Line Parameters==&lt;br /&gt;
===Initializing the NIDAQFilter===&lt;br /&gt;
To begin using the NIDAQFilter, use the &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; flag and set it equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;. To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiOut&amp;lt;/code&amp;gt; --&amp;gt; Enable the device to use digital output characteristics&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaOut&amp;lt;/code&amp;gt; --&amp;gt; Enable the device to use analog output characteristics&lt;br /&gt;
The format for the outputs for above flags is as follows:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;[flag]=&amp;quot;[device specification]-[port specifications]&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Please note that if &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; is enabled, then at least one of the above flags &amp;lt;b&amp;gt;MUST&amp;lt;/b&amp;gt; be used.&lt;br /&gt;
===Device Specification===&lt;br /&gt;
The device name is to be written as &amp;quot;Dev1&amp;quot; or &amp;quot;Dev2&amp;quot; (without the quotes) in the first part of the parameter value. After the device name is specified, use a hyphen (-) to indicate the device name is finished. For example, the first part of the parameter value would look like this: &amp;lt;code&amp;gt; &amp;quot;Dev1-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;If the device numbers are unclear, run the filter with just the &amp;lt;code&amp;gt;--LogNIDAQout&amp;lt;/code&amp;gt; flag specified. The device names (along with their familiar names) will appear in the operator log.&amp;lt;/i&amp;gt;&lt;br /&gt;
===Port Specifications===&lt;br /&gt;
There are two acceptable states that the user can specify for each port that they are going to use:&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; --&amp;gt; the associated port WILL NOT be used&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; --&amp;gt; the associated port WILL be used&lt;br /&gt;
&lt;br /&gt;
The values will be used for every single port that the user wants to use. For example, if the user wants to use ports 3 and 5 on a device with 10 ports, then the port specification for that device will be the following:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;0010100000&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice how even though the user wants to use only 2 ports, all 10 ports have been indicated. This is required. Any port that is not needed should be marked with a &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;. If the number of ports specified in the parameter file does not match the number of ports found on the device, an error will be thrown, showing the number of ports were specified and how many ports there are for that device function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Important: If both the NIDAQLogger([[Contributions:NIDAQLogger]]) and the NIDAQFilter are being used, and both are using the digital lines on the same device, make sure that any port that is being referenced in a parameter is referenced only once. One port cannot use both digital input and digital output functionality, and will cause BCI2000 to throw an error, saying that the line is RESERVED.&amp;lt;/i&amp;gt;&lt;br /&gt;
===A Completed Flag===&lt;br /&gt;
The following is the completed flag, whose parts were described above:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;--LogAnaOut=&amp;quot;Dev1-0010100000&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above flag tells the filter that the user wants to use the analog output ports on Device 1, which has 10 ports on it. The user wants to use the 3rd and 5th ports on the device, but leave everything else unused.&lt;br /&gt;
==BCI2000 Parameters==&lt;br /&gt;
After the commandline parameters have been set, more parameters may be configured in the Configuration dialog box in BCI2000. Under the header &amp;lt;i&amp;gt;NIDAQFilter&amp;lt;/i&amp;gt;, the following parameters MAY appear, as some of them are dependant on flags being used:&lt;br /&gt;
*&amp;lt;b&amp;gt;#OVRanges&amp;lt;/b&amp;gt; --&amp;gt; This parameter tells the user if there are multiple output voltage ranges that are acceptable for use. If not, then the parameter will NOT show up. The parameter is an enumeration, and is activated by the &amp;lt;code&amp;gt;--LogAnaOut&amp;lt;/code&amp;gt; flag.&lt;br /&gt;
*&amp;lt;b&amp;gt;#OutSamplingRate&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;FilterExpressions&amp;lt;/b&amp;gt;&lt;br /&gt;
=States=&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5755</id>
		<title>Contributions:NIDAQLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5755"/>
		<updated>2010-07-26T20:40:26Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
National Instruments Data Acquisition Module&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
Not yet in the repository.&lt;br /&gt;
(It would be in the following directory:&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/SignalSource/NIDAQLogger)&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: --&lt;br /&gt;
*Known to compile under: --&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Acquires signals using National Instruments Data Acquisition boards, other devices, and the computer. Device must be connected to computer beforehand.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===Command Line Parameters===&lt;br /&gt;
====Initializing NIDAQLogger====&lt;br /&gt;
To begin using the NIDAQLogger module, use the &amp;lt;code&amp;gt;--LogNIDAQin&amp;lt;/code&amp;gt; flag, and set it equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;.&lt;br /&gt;
To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiIn&amp;lt;/code&amp;gt; (for digital input)&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaIn&amp;lt;/code&amp;gt; (for analog input)&lt;br /&gt;
The format for the inputs for the above flags is as follows: &amp;lt;code&amp;gt;[flag]=&amp;quot;[device name]-[port specification]&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
Note that if &amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; is used, that at least one of the three above flags MUST be used.&lt;br /&gt;
====Device Specification====&lt;br /&gt;
The device name (usually) is to be written as &amp;quot;Dev1&amp;quot; or &amp;quot;Dev2&amp;quot; (without the &amp;quot;&amp;quot;). Afterwards, use a - to indicate the device name is finished. If the device number is unclear, run the program with the &amp;lt;code&amp;gt;--LogNIDAQin&amp;lt;/code&amp;gt; flag activated, and look at the Operator Log. The devices (along with their number) will be listed.&lt;br /&gt;
====Port Specifications====&lt;br /&gt;
There are two acceptable states that the user can specify for each port:&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;INACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Important Note: If using the logger with the NIDAQFilter and using digital input / output, make sure only one of the programs uses a specified digital line. If both programs attempt to use the same channel for conflicting purposes, the programs will throw errors indicating the line is RESERVED.&amp;lt;/i&amp;gt;&lt;br /&gt;
====Example====&lt;br /&gt;
Let&#039;s assume that the user wants to use one device for both analog and digital input. The device has 8 Analog Input ports and 12 Digital I/O ports.&lt;br /&gt;
The user also wants to use the 3rd and 4th analog input ports, and the 4th and 10th digital ports for digital input.&lt;br /&gt;
&lt;br /&gt;
The user needs to use 3 flags to accomplish this:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIDAQin=1&amp;lt;/code&amp;gt;&lt;br /&gt;
**This flag activates the NIDAQLogger for use.&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
**This flag indicates that the user wants to use digital I/O.&lt;br /&gt;
**&amp;quot;Dev1&amp;quot; is the name of the device connected to the computer that she wants to use.&lt;br /&gt;
**&amp;lt;code&amp;gt;0001000000100&amp;lt;/code&amp;gt; indicates that the user wants ports 4 and 10 (the &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;&#039;s) as &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaIn=&amp;quot;Dev1-00011000&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
**This flag indicates that she wants to use analog output.&lt;br /&gt;
**&amp;quot;Dev1&amp;quot; is the name of the device connected to the computer that she wants to use.&lt;br /&gt;
**&amp;lt;code&amp;gt;00011000&amp;lt;/code&amp;gt; indicates that she wants to the use ports 3 and 4 on analog input.&lt;br /&gt;
The full command (assuming she uses this with SignalGenerator.exe) that the user would use is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQin=1 --LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot; --LogAnaIn=&amp;quot;Dev1-00011000&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===BCI2000 Parameters===&lt;br /&gt;
There are two possible parameters that the user will be able to use. They are outlined below:&lt;br /&gt;
*&amp;lt;b&amp;gt;#IVRanges&amp;lt;/b&amp;gt; - the available voltage ranges for analog input for the given device (where &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; will be replaced by the device name)&lt;br /&gt;
**&amp;lt;i&amp;gt;This parameter will only be enabled if the &amp;lt;/i&amp;gt;&amp;lt;code&amp;gt;--LogAnaIn&amp;lt;/code&amp;gt;&amp;lt;i&amp;gt; flag is being used&amp;lt;/i&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;#InSampleRate&amp;lt;/b&amp;gt; - the sampling rate for the NIDAQLogger&lt;br /&gt;
**&amp;lt;i&amp;gt;This parameter will be here if the &amp;lt;/i&amp;gt;&amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt;&amp;lt;i&amp;gt; flag is being used&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters will be located under the &amp;lt;b&amp;gt;Source&amp;lt;/b&amp;gt; tab, in the section labeled &amp;lt;i&amp;gt;LogNIDAQ&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
The states that are available are dependent on the port specifications declared in the command line parameters. The format for the states is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NIDev#[A:D]INPUT#&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The first &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the device number.&lt;br /&gt;
*The second &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the line number (starting at &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;).&lt;br /&gt;
*The &amp;lt;b&amp;gt;[A:D]&amp;lt;/b&amp;gt; denotes if the state refers to an analog (&amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt;) or a digital (&amp;lt;b&amp;gt;D&amp;lt;/b&amp;gt;) channel.&lt;br /&gt;
&lt;br /&gt;
For example, if the command parameters look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQin=1 --LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot; --LogAnaIn=&amp;quot;Dev1-10011000&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the states that will be created are the following:&lt;br /&gt;
&lt;br /&gt;
*NIDev1DINPUT3&lt;br /&gt;
*NIDev1DINPUT9&lt;br /&gt;
*NIDev1AINPUT0&lt;br /&gt;
*NIDev1AINPUT2&lt;br /&gt;
*NIDev1AINPUT3&lt;br /&gt;
&lt;br /&gt;
==Acquired Data==&lt;br /&gt;
The data (analog) that is acquired by the device is translated to make sure that all of the data will fit inside of the state&#039;s parameters. Due to this fact, the data needs to be translated back in order to return it to units of milliVolts (mV). This can be done by subtracting the data by (2000*upper voltage bound). For example, if the data was logged with the range -10V to 10V, then the data must be subtracted by 20,000.&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5754</id>
		<title>Contributions:NIDAQLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5754"/>
		<updated>2010-07-26T20:33:02Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
National Instruments Data Acquisition Module&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
Not yet in the repository.&lt;br /&gt;
(It would be in the following directory:&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/SignalSource/NIDAQLogger)&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: --&lt;br /&gt;
*Known to compile under: --&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Acquires signals using National Instruments Data Acquisition boards, other devices, and the computer. Device must be connected to computer beforehand.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===Command Line Parameters===&lt;br /&gt;
====Initializing NIDAQLogger====&lt;br /&gt;
To begin using the NIDAQLogger module, use the &amp;lt;code&amp;gt;--LogNIDAQin&amp;lt;/code&amp;gt; flag, and set it equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;.&lt;br /&gt;
To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiIn&amp;lt;/code&amp;gt; (for digital input)&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaIn&amp;lt;/code&amp;gt; (for analog input)&lt;br /&gt;
The format for the inputs for the above flags is as follows: &amp;lt;code&amp;gt;[flag]=&amp;quot;[device name]-[port specification]&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
Note that if &amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; is used, that at least one of the three above flags MUST be used.&lt;br /&gt;
====Device Specification====&lt;br /&gt;
The device name (usually) is to be written as &amp;quot;Dev1&amp;quot; or &amp;quot;Dev2&amp;quot; (without the &amp;quot;&amp;quot;). Afterwards, use a - to indicate the device name is finished. If the device number is unclear, run the program with the &amp;lt;code&amp;gt;--LogNIDAQin&amp;lt;/code&amp;gt; flag activated, and look at the Operator Log. The devices (along with their number) will be listed.&lt;br /&gt;
====Port Specifications====&lt;br /&gt;
There are two acceptable states that the user can specify for each port:&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;INACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;&lt;br /&gt;
====Example====&lt;br /&gt;
Let&#039;s assume that the user wants to use one device for both analog and digital input. The device has 8 Analog Input ports and 12 Digital I/O ports.&lt;br /&gt;
The user also wants to use the 3rd and 4th analog input ports, and the 4th and 10th digital ports for digital input.&lt;br /&gt;
&lt;br /&gt;
The user needs to use 3 flags to accomplish this:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIDAQin=1&amp;lt;/code&amp;gt;&lt;br /&gt;
**This flag activates the NIDAQLogger for use.&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
**This flag indicates that the user wants to use digital I/O.&lt;br /&gt;
**&amp;quot;Dev1&amp;quot; is the name of the device connected to the computer that she wants to use.&lt;br /&gt;
**&amp;lt;code&amp;gt;0001000000100&amp;lt;/code&amp;gt; indicates that the user wants ports 4 and 10 (the &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;&#039;s) as &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaIn=&amp;quot;Dev1-00011000&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
**This flag indicates that she wants to use analog output.&lt;br /&gt;
**&amp;quot;Dev1&amp;quot; is the name of the device connected to the computer that she wants to use.&lt;br /&gt;
**&amp;lt;code&amp;gt;00011000&amp;lt;/code&amp;gt; indicates that she wants to the use ports 3 and 4 on analog input.&lt;br /&gt;
The full command (assuming she uses this with SignalGenerator.exe) that the user would use is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQin=1 --LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot; --LogAnaIn=&amp;quot;Dev1-00011000&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===BCI2000 Parameters===&lt;br /&gt;
There are two possible parameters that the user will be able to use. They are outlined below:&lt;br /&gt;
*&amp;lt;b&amp;gt;#IVRanges&amp;lt;/b&amp;gt; - the available voltage ranges for analog input for the given device (where &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; will be replaced by the device name)&lt;br /&gt;
**&amp;lt;i&amp;gt;This parameter will only be enabled if the &amp;lt;/i&amp;gt;&amp;lt;code&amp;gt;--LogAnaIn&amp;lt;/code&amp;gt;&amp;lt;i&amp;gt; flag is being used&amp;lt;/i&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;#InSampleRate&amp;lt;/b&amp;gt; - the sampling rate for the NIDAQLogger&lt;br /&gt;
**&amp;lt;i&amp;gt;This parameter will be here if the &amp;lt;/i&amp;gt;&amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt;&amp;lt;i&amp;gt; flag is being used&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters will be located under the &amp;lt;b&amp;gt;Source&amp;lt;/b&amp;gt; tab, in the section labeled &amp;lt;i&amp;gt;LogNIDAQ&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
The states that are available are dependent on the port specifications declared in the command line parameters. The format for the states is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NIDev#[A:D]INPUT#&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The first &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the device number.&lt;br /&gt;
*The second &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the line number (starting at &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;).&lt;br /&gt;
*The &amp;lt;b&amp;gt;[A:D]&amp;lt;/b&amp;gt; denotes if the state refers to an analog (&amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt;) or a digital (&amp;lt;b&amp;gt;D&amp;lt;/b&amp;gt;) channel.&lt;br /&gt;
&lt;br /&gt;
For example, if the command parameters look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQin=1 --LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot; --LogAnaIn=&amp;quot;Dev1-10011000&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the states that will be created are the following:&lt;br /&gt;
&lt;br /&gt;
*NIDev1DINPUT3&lt;br /&gt;
*NIDev1DINPUT9&lt;br /&gt;
*NIDev1AINPUT0&lt;br /&gt;
*NIDev1AINPUT2&lt;br /&gt;
*NIDev1AINPUT3&lt;br /&gt;
&lt;br /&gt;
==Acquired Data==&lt;br /&gt;
The data (analog) that is acquired by the device is translated to make sure that all of the data will fit inside of the state&#039;s parameters. Due to this fact, the data needs to be translated back in order to return it to units of milliVolts (mV). This can be done by subtracting the data by (2000*upper voltage bound). For example, if the data was logged with the range -10V to 10V, then the data must be subtracted by 20,000.&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5752</id>
		<title>Contributions:NIDAQLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5752"/>
		<updated>2010-07-22T20:31:15Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
National Instruments Data Acquisition Module&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
Not yet in the repository.&lt;br /&gt;
(It would be in the following directory:&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/SignalSource/NIDAQLogger)&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: --&lt;br /&gt;
*Known to compile under: --&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Acquires signals using National Instruments Data Acquisition boards, other devices, and the computer. Device must be connected to computer beforehand.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===Command Line Parameters===&lt;br /&gt;
====Initializing NIDAQLogger====&lt;br /&gt;
To begin using the NIDAQLogger module, use the &amp;lt;code&amp;gt;--LogNIDAQin&amp;lt;/code&amp;gt; flag, and set it equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;.&lt;br /&gt;
To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiIn&amp;lt;/code&amp;gt; (for digital input)&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaIn&amp;lt;/code&amp;gt; (for analog input)&lt;br /&gt;
The format for the inputs for the above flags is as follows: &amp;lt;code&amp;gt;[flag]=&amp;quot;[device name]-[port specification]&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
Note that if &amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; is used, that at least one of the three above flags MUST be used.&lt;br /&gt;
====Device Specification====&lt;br /&gt;
The device name (usually) is to be written as &amp;quot;Dev1&amp;quot; or &amp;quot;Dev2&amp;quot; (without the &amp;quot;&amp;quot;). Afterwards, use a - to indicate the device name is finished. If the device number is unclear, run the program with the &amp;lt;code&amp;gt;--LogNIDAQin&amp;lt;/code&amp;gt; flag activated, and look at the Operator Log. The devices (along with their number) will be listed.&lt;br /&gt;
====Port Specifications====&lt;br /&gt;
There are three acceptable states that the user can specify for each port:&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;INACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;&lt;br /&gt;
====Example====&lt;br /&gt;
Let&#039;s assume that the user wants to use one device for both analog and digital input. The device has 8 Analog Input ports and 12 Digital I/O ports.&lt;br /&gt;
The user also wants to use the 3rd and 4th analog input ports, and the 4th and 10th digital ports for digital input.&lt;br /&gt;
&lt;br /&gt;
The user needs to use 3 flags to accomplish this:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIDAQin=1&amp;lt;/code&amp;gt;&lt;br /&gt;
**This flag activates the NIDAQLogger for use.&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
**This flag indicates that the user wants to use digital I/O.&lt;br /&gt;
**&amp;quot;Dev1&amp;quot; is the name of the device connected to the computer that she wants to use.&lt;br /&gt;
**&amp;lt;code&amp;gt;0001000000100&amp;lt;/code&amp;gt; indicates that the user wants ports 4 and 10 (the &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;&#039;s) as &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogAnaIn=&amp;quot;Dev1-00011000&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
**This flag indicates that she wants to use analog output.&lt;br /&gt;
**&amp;quot;Dev1&amp;quot; is the name of the device connected to the computer that she wants to use.&lt;br /&gt;
**&amp;lt;code&amp;gt;00011000&amp;lt;/code&amp;gt; indicates that she wants to the use ports 3 and 4 on analog input.&lt;br /&gt;
The full command (assuming she uses this with SignalGenerator.exe) that the user would use is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQin=1 --LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot; --LogAnaIn=&amp;quot;Dev1-00011000&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===BCI2000 Parameters===&lt;br /&gt;
There are three possible parameters that the user will be able to use. They are outlined below:&lt;br /&gt;
*&amp;lt;b&amp;gt;#IVRanges&amp;lt;/b&amp;gt; - the available voltage ranges for analog input for the given device (where &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; will be replaced by the device name)&lt;br /&gt;
**&amp;lt;i&amp;gt;This parameter will only be enabled if the &amp;lt;/i&amp;gt;&amp;lt;code&amp;gt;--LogAnaIn&amp;lt;/code&amp;gt;&amp;lt;i&amp;gt; flag is being used&amp;lt;/i&amp;gt;..&lt;br /&gt;
*&amp;lt;b&amp;gt;#InSampleRate&amp;lt;/b&amp;gt; - the sampling rate for the NIDAQLogger&lt;br /&gt;
**&amp;lt;i&amp;gt;This parameter will be here if the &amp;lt;/i&amp;gt;&amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; flag is being used&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters will be located under the &amp;lt;b&amp;gt;Source&amp;lt;/b&amp;gt; tab, in the section labeled &amp;lt;i&amp;gt;LogNIDAQ&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
The states that are available are dependent on the port specifications declared in the command line parameters. The format for the states is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NIDev#[A:D]INPUT#&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The first &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the device number.&lt;br /&gt;
*The second &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the line number (starting at &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;).&lt;br /&gt;
*The &amp;lt;b&amp;gt;[A:D]&amp;lt;/b&amp;gt; denotes if the state refers to an analog (&amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt;) or a digital (&amp;lt;b&amp;gt;D&amp;lt;/b&amp;gt;) channel.&lt;br /&gt;
&lt;br /&gt;
For example, if the command parameters look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQin=1 --LogDigiIn=&amp;quot;Dev1-000100000100&amp;quot; --LogAnaIn=&amp;quot;Dev1-10011000&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the states that will be created are the following:&lt;br /&gt;
&lt;br /&gt;
*NIDev1DINPUT3&lt;br /&gt;
*NIDev1DINPUT9&lt;br /&gt;
*NIDev1AINPUT0&lt;br /&gt;
*NIDev1AINPUT2&lt;br /&gt;
*NIDev1AINPUT3&lt;br /&gt;
&lt;br /&gt;
==Acquired Data==&lt;br /&gt;
The data (analog) that is acquired by the device is translated to make sure that all of the data will fit inside of the state&#039;s parameters. Due to this fact, the data needs to be translated back in order to return it to units of milliVolts (mV). This can be done by subtracting the data by (2000*upper voltage bound). For example, if the data was logged with the range -10V to 10V, then the data must be subtracted by 20,000.&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:Emotiv&amp;diff=5724</id>
		<title>Contributions:Emotiv</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:Emotiv&amp;diff=5724"/>
		<updated>2010-06-30T17:56:28Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
The Emotiv DAQ is an in-expensive yet fully featured EEG device.  It is aimed toward the gaming market, but with a purchase of the &amp;quot;Research Edition&amp;quot; of the Emotiv SDK, raw EEG can be acquired from the device for use in BCI2000.  This documentation details the Emotiv source module.&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
http://{{SERVERNAME}}/svn/branches/3.0/src/contrib/SignalSource/Emotiv&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
&lt;br /&gt;
===Authors===&lt;br /&gt;
Griffin Milsap (griffin.milsap@gmail.com)&lt;br /&gt;
Rensselaer Polytechnic Institute&lt;br /&gt;
&lt;br /&gt;
===Version History===&lt;br /&gt;
&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Acquires signal data from the Emotiv device.  Also captures gyro data and writes it to states.&lt;br /&gt;
&lt;br /&gt;
The output from the Emotiv is in muV, however it has quite a large DC Offset of about 4000~4200 units.  The remaining DC offset comes from such factors as stored potential in the subject, and offsets added in the library to facilitate plotting.  As such, a 0.1 Hz high pass filter is applied in the source module to the output signal.  This effectively eliminates extra DC Offset.  You will notice a &amp;quot;Settling Time&amp;quot; before the signals all reach an approximate 0 DC Offset.  This time is about 10 to 15 seconds.  It would be advisable to wait until the signal has settled out before proceeding.  &lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Compile the Emotiv module using CMake and your compiler.  Currently only Visual Studio libraries for the Emotiv API are provided.  The resulting Emotiv.exe should be placed in the prog directory automatically.&lt;br /&gt;
Copy the &#039;&#039;&#039;edk.dll&#039;&#039;&#039; and &#039;&#039;&#039;edk_utils.dll&#039;&#039;&#039; found in http://{{SERVERNAME}}/svn/branches/3.0/src/contrib/SignalSource/Emotiv/dll to the prog directory for the module to work.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
* &#039;&#039;&#039;SourceCh&#039;&#039;&#039; must be set to 14.  The Emotiv has 14 channels not counting the ground and ref.&lt;br /&gt;
* &#039;&#039;&#039;SamplingRate&#039;&#039;&#039; must be set to 128.  The current Emotiv device only outputs 128 samples per second, though its internal sample rate before filtering is 2048 Hz.&lt;br /&gt;
* &#039;&#039;&#039;SampleBlockSize&#039;&#039;&#039; is the number of samples to acquire for every system clock.  The recommended value here is 4, causing 128/4 or 32 system clocks per second.&lt;br /&gt;
* &#039;&#039;&#039;ChannelNames&#039;&#039;&#039; is a list of names for the channels in the output signal.  According to the 10-20 International system, &#039;&#039;&#039;this should be set to &amp;quot;AF3 F7 F3 FC5 T7 P7, O1, O2 P8 T8 FC6 F4 F8 AF4&amp;quot; &#039;&#039;&#039;.  You can set the channel names to whatever you would like, but the module will still warn you if the channel names are not set likewise.&lt;br /&gt;
* &#039;&#039;&#039;SourceChOffset&#039;&#039;&#039; is a list of DC offsets to be applied to the signal output before the signal leaves the source module.  Due to the filtering done by the source module, &#039;&#039;&#039;a DC Offset of 0 is required for each channel&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;SourceChGain&#039;&#039;&#039; is a list of signal gains which transform the signal output to muV.  The API already provides output in muV.  The SourceChGain &#039;&#039;&#039;must be set to 1 for each channel&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;ConnectionType&#039;&#039;&#039; defines the way you would like to connect to the device.  If you&#039;re using SDKLite, you&#039;ll need to connect to the device through the EmoComposer program.  If you choose &amp;quot;EmoComposer&amp;quot; for this parameter, you must also set EmoComposerIP.  If you&#039;re using a direct connection and you have a research edition of the Emotiv device connected to the same computer, just leave this parameter as &amp;quot;Direct&amp;quot;.  NOTE: EmoComposer connections are untested in this program, though they should work.  It should be noted, however, that connecting to the device through EmoComposer may result in poor system performance due to the nature of a socketed connection to another program which is acquiring the signal.&lt;br /&gt;
* &#039;&#039;&#039;EmoComposerIP&#039;&#039;&#039; is where you put the IP of the computer running the EmoComposer software.  &#039;&#039;&#039;This parameter is NOT REQUIRED if you&#039;re using a &amp;quot;Direct&amp;quot; connection.&#039;&#039;&#039; See &#039;&#039;&#039;&amp;quot;ConnectionType&amp;quot;&#039;&#039;&#039; for more details.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
* &#039;&#039;&#039;EmotivGyroX&#039;&#039;&#039; is a 32 bit floating point number which represents the x axis of the onboard Emotiv gyro.  &lt;br /&gt;
* &#039;&#039;&#039;EmotivGyroY&#039;&#039;&#039; is a 32 bit floating point number which represents the y axis of the onboard Emotiv gyro.&lt;br /&gt;
These states are helpful for distinguishing head movements and using them to filter artifacts from your signal. &#039;&#039;&#039;Note: These states are interpreted by the BCI2000 system to be 32 bit integers.  If you interpret these numbers at the bit level to be IEEE 754 Floating point numbers, you get the gyro output.&lt;br /&gt;
&lt;br /&gt;
States regarding contact quality, and artifact causing physical motions are in the works.&lt;br /&gt;
&lt;br /&gt;
==Future Work==&lt;br /&gt;
A visualization panel which shows real time contact quality is in the works.  This panel will allow the experimenter to see the current quality of the seating of the Emotiv on the subject&#039;s head, as well as important figures such as signal quality, head movement, and battery life of the device.&lt;br /&gt;
&lt;br /&gt;
Due to the nature of the signal processing that the Emotiv Software suite provides, it is possible to record facial movements such as eye blinks and jaw clenching into the states as well.  This could allow for detailed filtering of signal artifacts from the output and could greatly enhance the quality of the final recording.  These states are in the works.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Filters]], [[Contributions:ADCs]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Data Acquisition]]&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5719</id>
		<title>Contributions:NIDAQLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5719"/>
		<updated>2010-06-29T18:30:54Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
National Instruments Data Acquisition Module&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
Not yet in the repository.&lt;br /&gt;
(It would be in the following directory:&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/SignalSource/NIDAQLogger)&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: --&lt;br /&gt;
*Known to compile under: --&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Acquires/Generates signals to/from National Instruments Data Acquisition boards, other devices, and the computer. Device must be connected to computer beforehand.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===Command Line Parameters===&lt;br /&gt;
====Initializing NIDAQLogger====&lt;br /&gt;
To begin using the NIDAQLogger module, use the &amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; flag (on SignalGenerator.exe), set equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;.&lt;br /&gt;
To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIDIO&amp;lt;/code&amp;gt; (for digital input/output)&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIAI&amp;lt;/code&amp;gt; (for analog input)&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIAO&amp;lt;/code&amp;gt; (for analog output)&lt;br /&gt;
The format for the inputs for the above flags is as follows: &amp;lt;code&amp;gt;[flag]=&amp;quot;[device name]-[port specification]&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
Note that if &amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; is used, that at least one of the three above flags MUST be used.&lt;br /&gt;
====Device Specification====&lt;br /&gt;
The device name (usually) is to be written as &amp;quot;dev1&amp;quot; or &amp;quot;dev2&amp;quot; (without the &amp;quot;&amp;quot;). Afterwards, use a - to indicate the device name is finished.&lt;br /&gt;
====Digital Port Specifications====&lt;br /&gt;
There are three acceptable states that the user can specify for each digital port:&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;INACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; - this indicates the port is to be used as &amp;lt;b&amp;gt;INPUT&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt; - this indicates the port is to be used as &amp;lt;b&amp;gt;OUTPUT&amp;lt;/b&amp;gt;&lt;br /&gt;
====Analog Port Specifications====&lt;br /&gt;
There are two acceptable states that the user can specify for each analog port (both input and output):&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;INACTIVE&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;&lt;br /&gt;
====Example====&lt;br /&gt;
Let&#039;s assume that the user wants to use one device for both digital input/output and analog output. The device has 2 Analog Output ports and 12 Digital I/O ports.&lt;br /&gt;
The user also wants to use the 1st analog output port, the 7th digital port as Digital Output, and the 4th and 10th digital ports as Digital Input.&lt;br /&gt;
&lt;br /&gt;
The user needs to use 3 flags to accomplish this:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIDAQ=1&amp;lt;/code&amp;gt;&lt;br /&gt;
**This flag activates the NIDAQLogger for use.&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIDIO=&amp;quot;dev1-000100200100&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
**This flag indicates that the user wants to use digital I/O.&lt;br /&gt;
**&amp;quot;dev1&amp;quot; is the name of the device connected to the computer that she wants to use.&lt;br /&gt;
**&amp;lt;code&amp;gt;0001000200100&amp;lt;/code&amp;gt; indicates that the user wants to use ports 4 and 10 (the &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;&#039;s) as &amp;lt;b&amp;gt;INPUT&amp;lt;/b&amp;gt;, and port 7 (the &amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt;) as &amp;lt;b&amp;gt;OUTPUT&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIAO=&amp;quot;dev1-10&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
**This flag indicates that she wants to use analog output.&lt;br /&gt;
**&amp;quot;dev1&amp;quot; is the name of the device connected to the computer that she wants to use.&lt;br /&gt;
**&amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; indicates that she wants to the use port 1 on analog output.&lt;br /&gt;
&lt;br /&gt;
The full command that the user would use is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQ=1 --LogNIDIO=&amp;quot;dev1-000100200100&amp;quot; --LogNIAO=&amp;quot;dev1-10&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
===BCI2000 Parameters===&lt;br /&gt;
There are three possible parameters that the user will be able to use. They are outlined below:&lt;br /&gt;
*&amp;lt;b&amp;gt;#IVRange&amp;lt;/b&amp;gt; - the available voltage ranges for analog input for the given device (where &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; will be replaced by the device name)&lt;br /&gt;
**&amp;lt;i&amp;gt;This parameter will only be enabled if the &amp;lt;/i&amp;gt;&amp;lt;code&amp;gt;--LogNIAI&amp;lt;/code&amp;gt;&amp;lt;i&amp;gt; flag is being used&amp;lt;/i&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;#OVRange&amp;lt;/b&amp;gt; - the available voltage ranges for analog output for the given device (where &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; will be replaced by the device name)&lt;br /&gt;
**&amp;lt;i&amp;gt;This parameter will only be enabled if the &amp;lt;/i&amp;gt;&amp;lt;code&amp;gt;--LogNIAO&amp;lt;/code&amp;gt;&amp;lt;i&amp;gt; flag is being used, or there are multiple possible ranges&amp;lt;/i&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;NIDAQSampleRate&amp;lt;/b&amp;gt; - the sampling rate for the NIDAQLogger&lt;br /&gt;
**&amp;lt;i&amp;gt;This parameter will be here if the &amp;lt;/i&amp;gt;&amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; flag is being used&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters will be located under the &amp;lt;b&amp;gt;Source&amp;lt;/b&amp;gt; tab, in the section labeled &amp;lt;i&amp;gt;LogNIDAQ&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
The states that are available are dependent on the port specifications declared in the command line parameters. The format for the states is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NIdev#[A:D][INPUT:OUTPUT]#&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The first &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the device number.&lt;br /&gt;
*The second &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the line number (starting at &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;).&lt;br /&gt;
*The &amp;lt;b&amp;gt;[A:D]&amp;lt;/b&amp;gt; denotes if the state refers to an analog (&amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt;) or a digital (&amp;lt;b&amp;gt;D&amp;lt;/b&amp;gt;) channel.&lt;br /&gt;
*The &amp;lt;b&amp;gt;[INPUT:OUTPUT]&amp;lt;/b&amp;gt; denotes if the state refers to an &amp;lt;b&amp;gt;input&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;output&amp;lt;/b&amp;gt; channel.&lt;br /&gt;
&lt;br /&gt;
For example, if the command parameters look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQ=1 --LogNIDIO=&amp;quot;dev1-000100200100&amp;quot; --LogNIAO=&amp;quot;dev1-10&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the states that will be created are the following:&lt;br /&gt;
&lt;br /&gt;
*NIdev1DINPUT3&lt;br /&gt;
*NIdev1DOUTPUT6&lt;br /&gt;
*NIdev1DINPUT9&lt;br /&gt;
*NIdev1AOUTPUT0&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5692</id>
		<title>Contributions:NIDAQLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5692"/>
		<updated>2010-06-24T20:45:57Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
National Instruments Data Acquisition Module&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
Not yet in the repository.&lt;br /&gt;
(It would be in the following directory:&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/SignalSource/NIDAQLogger)&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: --&lt;br /&gt;
*Known to compile under: --&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Acquires/Generates signals to/from National Instruments Data Acquisition boards, other devices, and the computer. Device must be connected to computer beforehand.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===Command Line Parameters===&lt;br /&gt;
====Initializing NIDAQLogger====&lt;br /&gt;
To begin using the NIDAQLogger module, use the &amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; flag (on SignalGenerator.exe), set equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;.&lt;br /&gt;
To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIDIO&amp;lt;/code&amp;gt; (for digital input/output)&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIAI&amp;lt;/code&amp;gt; (for analog input)&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIAO&amp;lt;/code&amp;gt; (for analog output)&lt;br /&gt;
The format for the inputs for the above flags is as follows: &amp;lt;code&amp;gt;[flag]=&amp;quot;[device name]-[port specification]&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
Note that if &amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; is used, that at least one of the three above flags MUST be used.&lt;br /&gt;
====Device Specification====&lt;br /&gt;
The device name (usually) is to be written as &amp;quot;dev1&amp;quot; or &amp;quot;dev2&amp;quot; (without the &amp;quot;&amp;quot;). Afterwards, use a - to indicate the device name is finished.&lt;br /&gt;
====Digital Port Specifications====&lt;br /&gt;
There are three acceptable states that the user can specify for each digital port:&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;INACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; - this indicates the port is to be used as &amp;lt;b&amp;gt;INPUT&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt; - this indicates the port is to be used as &amp;lt;b&amp;gt;OUTPUT&amp;lt;/b&amp;gt;&lt;br /&gt;
====Analog Port Specifications====&lt;br /&gt;
There are two acceptable states that the user can specify for each analog port (both input and output):&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;INACTIVE&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;&lt;br /&gt;
====Example====&lt;br /&gt;
Let&#039;s assume that the user wants to use one device for both digital input/output and analog output. The device has 2 Analog Output ports and 12 Digital I/O ports.&lt;br /&gt;
The user also wants to use the 1st analog output port, the 7th digital port as Digital Output, and the 4th and 10th digital ports as Digital Input.&lt;br /&gt;
&lt;br /&gt;
The user needs to use 3 flags to accomplish this:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIDAQ=1&amp;lt;/code&amp;gt;&lt;br /&gt;
**This flag activates the NIDAQLogger for use.&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIDIO=&amp;quot;dev1-000100200100&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
**This flag indicates that the user wants to use digital I/O.&lt;br /&gt;
**&amp;quot;dev1&amp;quot; is the name of the device connected to the computer that she wants to use.&lt;br /&gt;
**&amp;lt;code&amp;gt;0001000200100&amp;lt;/code&amp;gt; indicates that the user wants to use ports 4 and 10 (the &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;&#039;s) as &amp;lt;b&amp;gt;INPUT&amp;lt;/b&amp;gt;, and port 7 (the &amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt;) as &amp;lt;b&amp;gt;OUTPUT&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIAO=&amp;quot;dev1-10&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
**This flag indicates that she wants to use analog output.&lt;br /&gt;
**&amp;quot;dev1&amp;quot; is the name of the device connected to the computer that she wants to use.&lt;br /&gt;
**&amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; indicates that she wants to the use port 1 on analog output.&lt;br /&gt;
&lt;br /&gt;
The full command that the user would use is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQ=1 --LogNIDIO=&amp;quot;dev1-000100200100&amp;quot; --LogNIAO=&amp;quot;dev1-10&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
===BCI2000 Parameters===&lt;br /&gt;
If either the &amp;lt;code&amp;gt;--LogNIAI&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;--LogNIAO&amp;lt;/code&amp;gt; flags are used, there will be a parameter in the configuration box (under Source) &lt;br /&gt;
that will allow users to specify the voltage range they want the device to work under. There will be as many range parameters as there are devices connected &lt;br /&gt;
that use analog functionality. It will be labeled as &amp;lt;b&amp;gt;dev#VRanges&amp;lt;/b&amp;gt;, where # represents the device number.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
The states that are available are dependent on the port specifications declared in the command line parameters. The format for the states is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NIdev#[A:D][INPUT:OUTPUT]#&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The first &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the device number.&lt;br /&gt;
*The second &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the line number (starting at &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;).&lt;br /&gt;
*The &amp;lt;b&amp;gt;[A:D]&amp;lt;/b&amp;gt; denotes if the state refers to an analog (&amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt;) or a digital (&amp;lt;b&amp;gt;D&amp;lt;/b&amp;gt;) channel.&lt;br /&gt;
*The &amp;lt;b&amp;gt;[INPUT:OUTPUT]&amp;lt;/b&amp;gt; denotes if the state refers to an &amp;lt;b&amp;gt;input&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;output&amp;lt;/b&amp;gt; channel.&lt;br /&gt;
&lt;br /&gt;
For example, if the command parameters look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQ=1 --LogNIDIO=&amp;quot;dev1-000100200100&amp;quot; --LogNIAO=&amp;quot;dev1-10&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the states that will be created are the following:&lt;br /&gt;
&lt;br /&gt;
*NIdev1DINPUT3&lt;br /&gt;
*NIdev1DOUTPUT6&lt;br /&gt;
*NIdev1DINPUT9&lt;br /&gt;
*NIdev1AOUTPUT0&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5691</id>
		<title>Contributions:NIDAQLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5691"/>
		<updated>2010-06-24T19:38:13Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
National Instruments Data Acquisition Module&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
Not yet in the repository.&lt;br /&gt;
(It would be in the following directory:&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/SignalSource/NIDAQLogger)&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: --&lt;br /&gt;
*Known to compile under: --&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Acquires/Generates signals to/from National Instruments Data Acquisition boards, other devices, and the computer. Device must be connected to computer beforehand.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===Command Line Parameters===&lt;br /&gt;
====Initializing NIDAQLogger====&lt;br /&gt;
To begin using the NIDAQLogger module, use the &amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; flag (on SignalGenerator.exe), set equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;.&lt;br /&gt;
To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIDIO&amp;lt;/code&amp;gt; (for digital input/output)&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIAI&amp;lt;/code&amp;gt; (for analog input)&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIAO&amp;lt;/code&amp;gt; (for analog output)&lt;br /&gt;
The format for the inputs for the above flags is as follows: &amp;lt;code&amp;gt;[flag]=&amp;quot;[device name]-[port specification]&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
Note that if &amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; is used, that at least one of the three above flags MUST be used.&lt;br /&gt;
====Device Specification====&lt;br /&gt;
The device name (usually) is to be written as &amp;quot;dev1&amp;quot; or &amp;quot;dev2&amp;quot; (without the &amp;quot;&amp;quot;). Afterwards, use a - to indicate the device name is finished.&lt;br /&gt;
====Digital Port Specifications====&lt;br /&gt;
There are three acceptable states that the user can specify for each digital port:&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;INACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; - this indicates the port is to be used as &amp;lt;b&amp;gt;INPUT&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt; - this indicates the port is to be used as &amp;lt;b&amp;gt;OUTPUT&amp;lt;/b&amp;gt;&lt;br /&gt;
====Analog Port Specifications====&lt;br /&gt;
There are two acceptable states that the user can specify for each analog port (both input and output):&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;INACTIVE&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;&lt;br /&gt;
====Example====&lt;br /&gt;
Here is an example on the correct usage of the command line parameters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQ=1 --LogNIDIO=&amp;quot;dev1-000100200100&amp;quot; --LogNIAO=&amp;quot;dev1-10&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
===BCI2000 Parameters===&lt;br /&gt;
If either the &amp;lt;code&amp;gt;--LogNIAI&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;--LogNIAO&amp;lt;/code&amp;gt; flags are used, there will be a parameter in the configuration box (under Source) &lt;br /&gt;
that will allow users to specify the voltage range they want the device to work under. There will be as many range parameters as there are devices connected &lt;br /&gt;
that use analog functionality. It will be labeled as &amp;lt;b&amp;gt;dev#VRanges&amp;lt;/b&amp;gt;, where # represents the device number.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
The states that are available are dependent on the port specifications declared in the command line parameters. The format for the states is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NIdev#[A:D][INPUT:OUTPUT]#&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The first &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the device number.&lt;br /&gt;
*The second &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the line number (starting at &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;).&lt;br /&gt;
*The &amp;lt;b&amp;gt;[A:D]&amp;lt;/b&amp;gt; denotes if the state refers to an analog (&amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt;) or a digital (&amp;lt;b&amp;gt;D&amp;lt;/b&amp;gt;) channel.&lt;br /&gt;
&lt;br /&gt;
If the user specifies &amp;lt;code&amp;gt;--LogNIDIO=&amp;quot;dev1-000100200100&amp;quot;&amp;lt;/code&amp;gt; as a parameter, then the states that will be created are the following:&lt;br /&gt;
*NIdev1DINPUT3&lt;br /&gt;
*NIdev1DOUTPUT6&lt;br /&gt;
*NIdev1DINPUT9&lt;br /&gt;
&lt;br /&gt;
The similar states are generated for both analog input and analog output.&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5690</id>
		<title>Contributions:NIDAQLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5690"/>
		<updated>2010-06-24T19:37:34Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
National Instruments Data Acquisition Module&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
Not yet in the repository.&lt;br /&gt;
(It would be in the following directory:&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/SignalSource/NIDAQLogger)&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: --&lt;br /&gt;
*Known to compile under: --&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Acquires/Generates signals to/from National Instruments Data Acquisition boards. Device must be connected to computer beforehand.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===Command Line Parameters===&lt;br /&gt;
====Initializing NIDAQLogger====&lt;br /&gt;
To begin using the NIDAQLogger module, use the &amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; flag (on SignalGenerator.exe), set equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;.&lt;br /&gt;
To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIDIO&amp;lt;/code&amp;gt; (for digital input/output)&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIAI&amp;lt;/code&amp;gt; (for analog input)&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIAO&amp;lt;/code&amp;gt; (for analog output)&lt;br /&gt;
The format for the inputs for the above flags is as follows: &amp;lt;code&amp;gt;[flag]=&amp;quot;[device name]-[port specification]&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
Note that if &amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; is used, that at least one of the three above flags MUST be used.&lt;br /&gt;
====Device Specification====&lt;br /&gt;
The device name (usually) is to be written as &amp;quot;dev1&amp;quot; or &amp;quot;dev2&amp;quot; (without the &amp;quot;&amp;quot;). Afterwards, use a - to indicate the device name is finished.&lt;br /&gt;
====Digital Port Specifications====&lt;br /&gt;
There are three acceptable states that the user can specify for each digital port:&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;INACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; - this indicates the port is to be used as &amp;lt;b&amp;gt;INPUT&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt; - this indicates the port is to be used as &amp;lt;b&amp;gt;OUTPUT&amp;lt;/b&amp;gt;&lt;br /&gt;
====Analog Port Specifications====&lt;br /&gt;
There are two acceptable states that the user can specify for each analog port (both input and output):&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;INACTIVE&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;&lt;br /&gt;
====Example====&lt;br /&gt;
Here is an example on the correct usage of the command line parameters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQ=1 --LogNIDIO=&amp;quot;dev1-000100200100&amp;quot; --LogNIAO=&amp;quot;dev1-10&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
===BCI2000 Parameters===&lt;br /&gt;
If either the &amp;lt;code&amp;gt;--LogNIAI&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;--LogNIAO&amp;lt;/code&amp;gt; flags are used, there will be a parameter in the configuration box (under Source) &lt;br /&gt;
that will allow users to specify the voltage range they want the device to work under. There will be as many range parameters as there are devices connected &lt;br /&gt;
that use analog functionality. It will be labeled as &amp;lt;b&amp;gt;dev#VRanges&amp;lt;/b&amp;gt;, where # represents the device number.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
The states that are available are dependent on the port specifications declared in the command line parameters. The format for the states is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NIdev#[A:D][INPUT:OUTPUT]#&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The first &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the device number.&lt;br /&gt;
*The second &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the line number (starting at &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;).&lt;br /&gt;
*The &amp;lt;b&amp;gt;[A:D]&amp;lt;/b&amp;gt; denotes if the state refers to an analog (&amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt;) or a digital (&amp;lt;b&amp;gt;D&amp;lt;/b&amp;gt;) channel.&lt;br /&gt;
&lt;br /&gt;
If the user specifies &amp;lt;code&amp;gt;--LogNIDIO=&amp;quot;dev1-000100200100&amp;quot;&amp;lt;/code&amp;gt; as a parameter, then the states that will be created are the following:&lt;br /&gt;
*NIdev1DINPUT3&lt;br /&gt;
*NIdev1DOUTPUT6&lt;br /&gt;
*NIdev1DINPUT9&lt;br /&gt;
&lt;br /&gt;
The similar states are generated for both analog input and analog output.&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5689</id>
		<title>Contributions:NIDAQLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:NIDAQLogger&amp;diff=5689"/>
		<updated>2010-06-24T19:28:18Z</updated>

		<summary type="html">&lt;p&gt;Jrenga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
National Instruments Data Acquisition Module&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
Not yet in the repository.&lt;br /&gt;
(It would be in the following directory:&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/SignalSource/NIDAQLogger)&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Justin Renga (justin.renga@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: --&lt;br /&gt;
*Known to compile under: --&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Acquires/Generates signals to/from National Instruments Data Acquisition boards. Device must be connected to computer beforehand.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===Command Line Parameters===&lt;br /&gt;
====Initializing NIDAQLogger====&lt;br /&gt;
To begin using the NIDAQLogger module, use the &amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; flag (on SignalGenerator.exe), set equal to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;.&lt;br /&gt;
To activate device(s) for specific functions, use the following flags:&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIDIO&amp;lt;/code&amp;gt; (for digital input/output)&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIAI&amp;lt;/code&amp;gt; (for analog input)&lt;br /&gt;
*&amp;lt;code&amp;gt;--LogNIAO&amp;lt;/code&amp;gt; (for analog output)&lt;br /&gt;
The format for the inputs for the above flags is as follows: &amp;lt;code&amp;gt;[flag]=&amp;quot;[device name]-[port specification]&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
Note that if &amp;lt;code&amp;gt;--LogNIDAQ&amp;lt;/code&amp;gt; is used, that at least one of the three above flags MUST be used.&lt;br /&gt;
====Device Specification====&lt;br /&gt;
The device name (usually) is to be written as &amp;quot;dev1&amp;quot; or &amp;quot;dev2&amp;quot; (without the &amp;quot;&amp;quot;). Afterwards, use a - to indicate the device name is finished.&lt;br /&gt;
====Digital Port Specifications====&lt;br /&gt;
There are three acceptable states that the user can specify for each digital port:&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;INACTIVE&amp;lt;/b&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; - this indicates the port is to be used as &amp;lt;b&amp;gt;INPUT&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt; - this indicates the port is to be used as &amp;lt;b&amp;gt;OUTPUT&amp;lt;/b&amp;gt;&lt;br /&gt;
====Analog Port Specifications====&lt;br /&gt;
There are two acceptable states that the user can specify for each analog port (both input and output):&lt;br /&gt;
*&amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;INACTIVE&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; - this indicates the port is &amp;lt;b&amp;gt;ACTIVE&amp;lt;/b&amp;gt;&lt;br /&gt;
====Example====&lt;br /&gt;
Here is an example on the correct usage of the command line parameters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SignalGenerator.exe --LogNIDAQ=1 --LogNIDIO=&amp;quot;dev1-000100200100&amp;quot; --LogNIAO=&amp;quot;dev1-10&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
===BCI2000 Parameters===&lt;br /&gt;
If either the &amp;lt;code&amp;gt;--LogNIAI&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;--LogNIAO&amp;lt;/code&amp;gt; flags are used, there will be a parameter in the configuration box (under Source) &lt;br /&gt;
that will allow users to specify the voltage range they want the device to work under. There will be as many range parameters as there are devices connected &lt;br /&gt;
that use analog functionality. It will be labeled as &amp;lt;b&amp;gt;dev#VRanges&amp;lt;/b&amp;gt;, where # represents the device number.&lt;br /&gt;
==States==&lt;br /&gt;
The states that are available are dependent on the port specifications declared in the command line parameters. The format for the states is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NIdev#[A:D][INPUT:OUTPUT]#&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The first &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the device number.&lt;br /&gt;
*The second &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt; refers to the line number (starting at &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;).&lt;br /&gt;
*The &amp;lt;b&amp;gt;[A:D]&amp;lt;/b&amp;gt; denotes if the state refers to an analog (&amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt;) or a digital (&amp;lt;b&amp;gt;D&amp;lt;/b&amp;gt;) channel.&lt;br /&gt;
&lt;br /&gt;
If the user specifies &amp;lt;code&amp;gt;--LogNIDIO=&amp;quot;dev1-000100200100&amp;quot;&amp;lt;/code&amp;gt; as a parameter, then the states that will be created are the following:&lt;br /&gt;
*NIdev1DINPUT3&lt;br /&gt;
*NIdev1DOUTPUT6&lt;br /&gt;
*NIdev1DINPUT9&lt;br /&gt;
&lt;br /&gt;
The similar states are generated for both analog input and analog output.&lt;/div&gt;</summary>
		<author><name>Jrenga</name></author>
	</entry>
</feed>