BioDevice console output

From: Dave Fisher (dfisher_at_pophost.com)
Date: 2002-07-10 03:47:07


This is the output from the preliminary version of the "BioDevice" library.
Right now the only device implemented is Thought Technologies ProComp+. To
really flesh out the library and make sure the design "holds water," we'll need
other devices implemented -- ModularEEG, TinyEEG, BrainMaster, or otherwise.
Any takers, please raise your hand.

Here's the basic flow with comments:

22:16:22: Debug: Creating BioSysInfo system object
22:16:22: Debug: Config: default system file path: ./
22:16:22: Debug: Config: client data file path = ~/biomon
22:16:22: Debug: Config: Creating table of BioUnits (8 items)
22:16:22: Debug: 1: NONE
22:16:22: Debug: 2: MICROVOLTS
22:16:22: Debug: 3: CELCIUS
22:16:22: Debug: 4: FAHRENHEIT
22:16:22: Debug: 5: PERCENTAGE
22:16:22: Debug: 6: MICROMHO
22:16:22: Debug: 7: KILOOHM
22:16:22: Debug: 8: HERTZ
22:16:22: Debug: Config: Creating table of BioDataTypes (9 items)
22:16:22: Debug: 1: NONE
22:16:22: Debug: 2: EEG
22:16:22: Debug: 3: GSR
22:16:22: Debug: 4: EKG
22:16:22: Debug: 5: TEMP
22:16:22: Debug: 6: BVP
22:16:22: Debug: 7: RESP
22:16:22: Debug: 8: FFT
22:16:22: Debug: 9: BATTERY
22:16:22: Debug: Config: Adding to device list: ProComp (Thought Technologies
ProComp+)
22:16:22: Debug: Loading BioDevice info from configuration file
(key=/biolib/device-ProComp)
22:16:22: Debug: Device ProComp: Adding modality (undefined type) ((undefined
unit type))
22:16:22: Debug: Device ProComp: Adding modality EEG (microvolts)
22:16:22: Debug: Device ProComp: Adding modality SC/GSR (micromho)
22:16:22: Debug: Device ProComp: Adding modality EKG (microvolts)
22:16:22: Debug: Device ProComp: Adding modality HR/BVP (Percentage (0..1))
22:16:22: Debug: Device ProComp: Adding modality Respiration (Percentage
(0..1))
22:16:22: Debug: Device ProComp: Adding modality Temperature (Celcius)
22:16:22: Debug: Device ProComp: Adding modality Temperature (Fahrenheit)
22:16:22: Debug: Device ProComp: Adding modality Battery Level (microvolts)
22:16:22: Debug: Device ProComp: Adding channel Channel-A (tied to modality
EEG-microvolts)
22:16:22: Debug: Device ProComp: Adding channel Channel-B (tied to modality
EEG-microvolts)
22:16:22: Debug: Device ProComp: Adding channel Channel-C (tied to modality
NONE-(undefined unit type))
22:16:22: Debug: Device ProComp: Adding channel Channel-D (tied to modality
NONE-(undefined unit type))
22:16:22: Debug: Device ProComp: Adding channel Channel-E (tied to modality
NONE-(undefined unit type))
22:16:22: Debug: Device ProComp: Adding channel Channel-F (tied to modality
NONE-(undefined unit type))
22:16:22: Debug: Device ProComp: Adding channel Channel-G (tied to modality
NONE-(undefined unit type))
22:16:22: Debug: Device ProComp: Adding channel Channel-H (tied to modality
NONE-(undefined unit type))
22:16:22: Main Started.
22:16:22: Debug: BioDevice Information for device ProComp (Thought Technologies
ProComp+)
22:16:22: Debug: Available modalities: 9
22:16:22: Debug: 1: NONE ((undefined type), (undefined unit type))
22:16:22: Debug: 2: EEG (EEG, microvolts)
22:16:22: Debug: 3: GSR (SC/GSR, micromho)
22:16:22: Debug: 4: EKG (EKG, microvolts)
22:16:22: Debug: 5: BVP (HR/BVP, Percentage (0..1))
22:16:22: Debug: 6: RESP (Respiration, Percentage (0..1))
22:16:22: Debug: 7: TEMP (Temperature, Celcius)
22:16:22: Debug: 8: TEMP (Temperature, Fahrenheit)
22:16:22: Debug: 9: BATTERY (Battery Level, microvolts)
22:16:22: Debug: Default channels: 8
22:16:22: Debug: 1: Channel-A using modality EEG
22:16:22: Debug: 2: Channel-B using modality EEG
22:16:22: Debug: 3: Channel-C using modality NONE
22:16:22: Debug: 4: Channel-D using modality NONE
22:16:22: Debug: 5: Channel-E using modality NONE
22:16:22: Debug: 6: Channel-F using modality NONE
22:16:22: Debug: 7: Channel-G using modality NONE
22:16:22: Debug: 8: Channel-H using modality NONE
22:16:22: Debug: BioNode: Creating node object 'Thought Technologies ProComp+'
22:16:22: Debug: BioNode: Creating output channel 'Channel-A' (type=EEG)
22:16:22: Debug: BioNode: Creating output channel 'Channel-B' (type=EEG)
22:16:22: Debug: BioNode: Creating output channel 'Channel-C' (type=(undefined
type))
22:16:22: Debug: BioNode: Creating output channel 'Channel-D' (type=(undefined
type))
22:16:22: Debug: BioNode: Creating output channel 'Channel-E' (type=(undefined
type))
22:16:22: Debug: BioNode: Creating output channel 'Channel-F' (type=(undefined
type))
22:16:22: Debug: BioNode: Creating output channel 'Channel-G' (type=(undefined
type))
22:16:22: Debug: BioNode: Creating output channel 'Channel-H' (type=(undefined
type))
22:16:22: Debug: BioNode: Adding node 'Thought Technologies ProComp+' - address
= 0x806e278

All the above is default information read from the configuration file. Below
is where I actually configure the device the way I wanted it -- which is to
associate EEG modalities with Channels A & B and GSR with Channel C. Most
devices will not need this step, as they will have fixed modalities.

22:16:22: Debug: Serial port configured and ready.
22:16:22: Debug: BioNode: Thought Technologies ProComp+
22:16:22: Debug: Input Channels = 0
22:16:22: Debug: Output Channels = 8
22:16:22: Debug: Output Channel 1 : Channel-A (EEG)
22:16:22: Debug: Output Channel 2 : Channel-B (EEG)
22:16:22: Debug: Output Channel 3 : Channel-C (SC/GSR)
22:16:22: Debug: Output Channel 4 : Channel-D ((undefined type))
22:16:22: Debug: Output Channel 5 : Channel-E ((undefined type))
22:16:22: Debug: Output Channel 6 : Channel-F ((undefined type))
22:16:22: Debug: Output Channel 7 : Channel-G ((undefined type))
22:16:22: Debug: Output Channel 8 : Channel-H ((undefined type))
22:16:22: Debug: BioNode: Creating node object 'BioData Monitor'
22:16:22: Debug: BioNode: Adding node 'BioData Monitor' - address = 0xbffff968

The "BioNode" method of handling the data streams is Jim P's brainchild. While
I have implemented it using some STL conventions (vectors and iterators), I am
thinking that he is right in that it can be made much more efficient (and
probably should be done considering the time critical nature of this part of
the system) by using straight C code.

22:16:22: Debug: Data Processing Network:
22:16:22: Debug: Node count = 2
22:16:22: Debug: BioNode: Thought Technologies ProComp+
22:16:22: Debug: Input Channels = 0
22:16:22: Debug: Output Channels = 8
22:16:22: Debug: Output Channel 1 : Channel-A (EEG)
22:16:22: Debug: Output Channel 2 : Channel-B (EEG)
22:16:22: Debug: Output Channel 3 : Channel-C (SC/GSR)
22:16:22: Debug: Output Channel 4 : Channel-D ((undefined type))
22:16:22: Debug: Output Channel 5 : Channel-E ((undefined type))
22:16:22: Debug: Output Channel 6 : Channel-F ((undefined type))
22:16:22: Debug: Output Channel 7 : Channel-G ((undefined type))
22:16:22: Debug: Output Channel 8 : Channel-H ((undefined type))
22:16:22: Debug: BioNode: BioData Monitor
22:16:22: Debug: Input Channels = 3
22:16:22: Debug: Output Channels = 0
22:16:22: Debug: Input Channel 1 : Channel-A
22:16:22: Debug: Input Channel 2 : Channel-B
22:16:22: Debug: Input Channel 3 : Channel-C
22:16:22: Debug: Got sync!

And here comes the data from the monitoring class. Notice that Channel-C is at
a different sample rate than Channels A & B. The ProComp generates 256Hz for A
& B, while Channels C-H are 32Hz. I need to change the message a bit because
it says "Error: No value..." which is really not an error at all. The data
simply comes through the data processing node network at different rates.

BTW.... the EEG electrodes were not connected to my head, which is good sign
because if you look at the numbers, you might truly wonder if it is safe for me
to be working with electronic equipment at all. ;-) The GSR are real values,
however, as I connected those to my index and middle finger.

22:16:22: ProComp Channel-A: EEG sample value = 4.3075 uV
22:16:22: ProComp Channel-B: EEG sample value = 4.3074 uV
22:16:22: ProComp Channel-C: GSR sample value = 0.0000 mo
22:16:22: ProComp Channel-A: EEG sample value = 29.4685 uV
22:16:22: ProComp Channel-B: EEG sample value = 45.2452 uV
22:16:22: Error: No value from Channel 2 (Channel-C)
22:16:22: ProComp Channel-A: EEG sample value = 222.4730 uV
22:16:22: ProComp Channel-B: EEG sample value = 84.7914 uV
22:16:22: ProComp Channel-C: GSR sample value = 3.9053 mo
22:16:22: ProComp Channel-A: EEG sample value = 193.8386 uV
22:16:23: ProComp Channel-B: EEG sample value = 284.6070 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 54.4194 uV
22:16:23: ProComp Channel-B: EEG sample value = 284.6070 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 53.3769 uV
22:16:23: ProComp Channel-B: EEG sample value = 97.9271 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 134.9711 uV
22:16:23: ProComp Channel-B: EEG sample value = 34.8896 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 152.1379 uV
22:16:23: ProComp Channel-B: EEG sample value = 274.8769 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 134.3456 uV
22:16:23: ProComp Channel-B: EEG sample value = 284.6070 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 111.9663 uV
22:16:23: ProComp Channel-B: EEG sample value = 166.6637 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 67.4161 uV
22:16:23: ProComp Channel-B: EEG sample value = 17.8618 uV
22:16:23: ProComp Channel-C: GSR sample value = 3.9053 mo
22:16:23: ProComp Channel-A: EEG sample value = 78.3277 uV
22:16:23: ProComp Channel-B: EEG sample value = 195.9236 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 186.7495 uV
22:16:23: ProComp Channel-B: EEG sample value = 284.6070 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 196.7576 uV
22:16:23: ProComp Channel-B: EEG sample value = 232.3422 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 33.3605 uV
22:16:23: ProComp Channel-B: EEG sample value = 28.4955 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 271.3323 uV
22:16:23: ProComp Channel-B: EEG sample value = 119.1944 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 201.3447 uV
22:16:23: ProComp Channel-B: EEG sample value = 284.6070 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 7.2976 uV
22:16:23: ProComp Channel-B: EEG sample value = 284.6070 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 37.3221 uV
22:16:23: ProComp Channel-B: EEG sample value = 70.2656 uV
22:16:23: ProComp Channel-C: GSR sample value = 3.9003 mo
22:16:23: ProComp Channel-A: EEG sample value = 176.9498 uV
22:16:23: ProComp Channel-B: EEG sample value = 56.7824 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 177.2973 uV
22:16:23: ProComp Channel-B: EEG sample value = 284.6070 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 96.4675 uV
22:16:23: ProComp Channel-B: EEG sample value = 284.6070 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 78.3277 uV
22:16:23: ProComp Channel-B: EEG sample value = 129.3416 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 97.8576 uV
22:16:23: ProComp Channel-B: EEG sample value = 20.7113 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 119.2639 uV
22:16:23: ProComp Channel-B: EEG sample value = 236.5818 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 164.9261 uV
22:16:23: ProComp Channel-B: EEG sample value = 284.6070 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 152.6244 uV
22:16:23: ProComp Channel-B: EEG sample value = 202.8042 uV
22:16:23: ProComp Channel-C: GSR sample value = 3.9003 mo
22:16:23: ProComp Channel-A: EEG sample value = 46.0792 uV
22:16:23: ProComp Channel-B: EEG sample value = 22.2404 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 34.3335 uV
22:16:23: ProComp Channel-B: EEG sample value = 157.7675 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 199.3292 uV
22:16:23: ProComp Channel-B: EEG sample value = 284.6070 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 244.1574 uV
22:16:23: ProComp Channel-B: EEG sample value = 265.9807 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 30.7195 uV
22:16:23: ProComp Channel-B: EEG sample value = 51.0833 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 224.2801 uV
22:16:23: ProComp Channel-B: EEG sample value = 88.3359 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 194.8116 uV
22:16:23: ProComp Channel-B: EEG sample value = 284.6070 uV
22:16:23: Error: No value from Channel 2 (Channel-C)
22:16:23: ProComp Channel-A: EEG sample value = 54.9754 uV
22:16:23: ProComp Channel-B: EEG sample value = 284.6070 uV
22:16:23: ProComp Channel-C: GSR sample value = 3.9003 mo

[snip -- and so on...]

22:16:26: ProComp Channel-A: EEG sample value = 81.4553 uV
22:16:26: ProComp Channel-B: EEG sample value = 284.6070 uV
22:16:26: Error: No value from Channel 2 (Channel-C)
22:16:26: ProComp Channel-A: EEG sample value = 68.3196 uV
22:16:26: ProComp Channel-B: EEG sample value = 113.4258 uV
22:16:26: ProComp Channel-C: GSR sample value = 3.9053 mo
22:16:26: ProComp Channel-A: EEG sample value = 111.7578 uV
22:16:26: ProComp Channel-B: EEG sample value = 22.2404 uV
22:16:26: Error: No value from Channel 2 (Channel-C)
22:16:26: ProComp Channel-A: EEG sample value = 133.6506 uV
22:16:26: ProComp Channel-B: EEG sample value = 249.6480 uV
22:16:26: Error: No value from Channel 2 (Channel-C)

After running for a few seconds, I terminate the program and cleanup ensues.

22:16:26: Debug: Total number of read errors on device 'ProComp' : 0
22:16:26: Debug: BioNode: Removing node 'Thought Technologies ProComp+' from
the network
22:16:26: Debug: BioNode: destroying node object 'Thought Technologies
ProComp+'
22:16:26: Debug: BioNode: Removing output channel 'Channel-A' from node
'Thought Technologies ProComp+'
22:16:26: Debug: BioNode: Removing output channel 'Channel-B' from node
'Thought Technologies ProComp+'
22:16:26: Debug: BioNode: Removing output channel 'Channel-C' from node
'Thought Technologies ProComp+'
22:16:26: Debug: BioNode: Removing output channel 'Channel-D' from node
'Thought Technologies ProComp+'
22:16:26: Debug: BioNode: Removing output channel 'Channel-E' from node
'Thought Technologies ProComp+'
22:16:26: Debug: BioNode: Removing output channel 'Channel-F' from node
'Thought Technologies ProComp+'
22:16:26: Debug: BioNode: Removing output channel 'Channel-G' from node
'Thought Technologies ProComp+'
22:16:26: Debug: BioNode: Removing output channel 'Channel-H' from node
'Thought Technologies ProComp+'
22:16:27: Debug: Destroying MonitorData object
22:16:27: Debug: BioNode: destroying node object 'BioData Monitor'
22:16:27: Debug: BioNode: Removing InputChannel '(not defined)' from node
'BioData Monitor'
22:16:27: Debug: BioNode: Removing InputChannel '(not defined)' from node
'BioData Monitor'
22:16:27: Debug: BioNode: Removing InputChannel '(not defined)' from node
'BioData Monitor'
22:16:27: Main Ended.

That's it. If you have any questions, let me know.

Dave.



This archive was generated by hypermail 2.1.4 : 2002-07-27 12:28:44 BST