Home

Cogent 2000 User`s Manual

image

Contents

1. preparestring 2 Draw fixation point in display buffer 2 Prepare fixation sound 500ms 200Hz sine wave in sound buffer 2 preparepuretone 500 200 2 for i 1l countdatarows Get data from file code getdata i 1 word getdata i 2 soundfile getdata i 3 Load sound file into sound buffer 1 loadsound soundfile 1 Draw word in display buffer 1 clearpict 1 preparestring word 1 Display fixation point play fixation sound and wait 1500ms drawpict 2 playsound 2 wait 1500 drawpict 1 Display word playsound 1 Play sound file tO time Record time at which word is presented logstring tO clearkeys Clear all key events waituntil t0 500 Wait until 500ms after word was presented Clear screen and wait until 2000ms after word was presented drawpict 3 waituntil t0 2000 Read all key events since CLEARKEYS was called readkeys o logkeys Write key events to log Check key pressed set feedback error code and reaction time n countkeydown key t lastkeydown rt 0 if n 0 no key pressed message no response error 1 elseif n gt 1 multiple key pressed message multiple key press error 2 lseif key keymap Q amp key keymap P keys other than Q or P pressed 45 message invalid key press error 3 lseif ke
2. resolution screen resolution 1 640x480 2 800x600 3 1024x768 4 1152x864 5 1280x1024 6 1600x 1200 background background colour red green blue or palette index foreground foreground colour red green blue or palette index fontname name of font fontsize size of font nbuffers number of offscreen buffers nbits number of bits per pixel 8 palette mode 16 24 32 or 0 where 0 selects the maximum possible bits per pixel out of 16 24 or 32 scale horizontal size of screen in visual degrees 12 config _display is equivalent to config display 1 1 0 0 0 1 1 1 Helvetica 50 4 0 When configuring the display two important things to consider are the difference between palette and direct colour mode and between full screen and window mode It may also be important to consider the screen s refresh rate These points are discussed below Palette mode versus Direct Colour mode In In direct colour mode colours are represented by 16 24 or 32 bits where as in palette mode a k a 8 bit mode colours are represented by 8 bits i e 256 colours The use of these modes is defined by the number of bits per pixel argument in the config display command The default value of 0 will select the maximum possible number of bits per pixel for the computer s display out of 16 24 and 32 i e in direct colour mode Palette mode has some advanta
3. Wait for 1000ms Clear screen Wait for 1000ms de le dos sample4 m sample4 m is the same as sample3 m but sets the display to palette mode and the screen to window mode The display must be set to 256 colours as described in 3 2 1 for this script run 36 sample5 m sample5 m reads a list of words from a data file and presents them visually to the subject at absolute times determined by the waituntil command The waituntil command waits until a specified time has elapsed since the start_cogent command It is possible to use the time that one command has been executed to control when a following command will be executed In sample5 m all of the timing is calculated with reference to the time at which the fixation point is displayed between each word This means that any of the small but finite times needed to execute commands and wait for screen refreshes will not alter the inter trial interval of 2000ms In this script the stimuli a code and the times at which the stimuli are displayed are logged to a file The code may be used to identify the trial type SAMPLE5 Visual config_display 1 config_data config_log start_cogent PAg 2 preparestring to drawpict 2 for i 1 code word getdata i getdata i clearpict 1 presentation of words sample5 dat sample5 log countdatarows 1 2 preparestring word waituntil t0 100 tl drawpict 1 logstrin
4. 0 or 6 1 running under Windows 2000 Cogent 2000 also requires that a Microsoft Application Programming Interface API known as DirectX has been installed This should be set up by default as part of Windows 2000 but can also be downloaded or upgraded from http www microsoft com directx For more information about installing DirectX see the latest version of the Cogent Graphics Manual 1 2 Known bugs and limitations These bugs and limitations are in addition to those in the Graphics library that are listed in the Cogent Graphics manual G2UsrManvX pdf 1 Achieving accurate timing For most accurate timing Cogent 2000 must be run in MATLAB 6 0 or 6 1 under Windows 2000 It is also necessary to unplug the network to disconnect any networked drives and to disable network connections to the PC Network connections can be disabled by going to the Settings option of the Start menu and under Network and Dial up Connections click on the Local Area Connection icon and select disable This means that MATLAB must be run with a local copy of the MATLAB license manager 2 Loading data files The Cogent 2000 commands for loading data files do not make the most efficient use of the MATLAB memory i e config_display countdatarows and getdata Therefore for the current version of Cogent 2000 we recommend that instead of using these commands standard MATLAB commands can be used for loading data files This is especially important if the data fi
5. 2000 Cogent 2000 MATLAB Script m file written by user in Cogent 2000 and MATLAB General user level High level COGENT 2000 commands m files i e MATLAB scripts Low level graphics functions cg dll files executable from within Advanced MATLAB user Cogent 2000 Low level functions for Matlab Interface programmer sound input output Libraries level and response timing cogstd dll gprim dll Cog dll executable executable from within from within MATLAB MATLAB level Windows 2000 Cogent 2000 allows MATLAB to be run in two different modes When a Cogent 2000 script starts MATLAB runs in normal mode allowing the experiment to be configured The script then switches MATLAB into Cogent mode to run the experiment and back to normal mode to process results or to run a new script 2 Getting started in MATLAB and Cogent 2000 Concise online documentation is available for all levels and aspects of MATLAB at http www mathworks com support general doc shtml A simple guide for using MATLAB and Cogent 2000 is presented in the following sections 2 1 How do I execute commands in MATLAB After starting MATLAB the user will be presented with the MATLAB command line prompt gt gt MATLAB commands functions and scripts can be executed by entering the name at this prompt e g gt gt help Lists all help topics You can ask for help on any function including MATLAB functions and any function i
6. Cogent are BMP TIFF PNG JPEG and PCX these are all graphics files recognised by MATLAB e Other graphics may be rendered by making direct use of the low level graphics library underlying Cogent 2000 see G2UsrManv124 pdf Cogent 2000 also includes high level commands to display a black and white dartboard on a grey background preparedartboard and to flicker the dartboard at a specified frequency paletteflicker This is a commonly used stimulus for primary visual stimulation The preparedartboard and paletteflicker functions work in both palette 8 bit mode and in direct colour mode These commands require that config_display has been set up for the corresponding palette mode or direct colour mode as described in section 3 2 1 Another function paletteflickerrest will flicker the dartboard then return to a fixation point This function only works in palettemode The timing of the paletteflicker and paletteflickerrest commands is dependent on the computer screen s refresh frequency which is addressed in section 3 2 3 preparedartboard d r1 r2 dr dt Draws one dartboard requires palette mode in the buffer specified by b with an inner radius specified by r and an outer radius specified by r2 rl should be lt r2 if not a null dartboard is generated The divisions of the dartboard are specified by the radial square size dr and the angular square size dt preparedartboard 1 20 200 30 18 Draws a dartboard in buffer 1 using
7. TREE in the middle of buffer 1 drawpict 1 Presents buffer 1 26 wait 1000 Waits for 1000ms from the start_cogent command drawpict 2 Presents buffer 2 by default an empty buffer In the first example the word TREE in buffer 1 will be displayed until exactly 1000ms from time 0 in Cogent i e until 1000ms since the start_cogent command After this the fixation cross will be displayed In the second example the word TREE will be displayed for exactly 1000ms i e until a little more than 1000ms since the start_cogent command and then the fixation cross will be displayed The fixation cross will be displayed slightly later in the second example compared to the first example because the time required to prepare and display the stimulus i e the preparestring and drawpict commands is of the order of a few 10s of ms Other wait commands are waitsound 1 Waits for the sound in sound buffer to finish playing waitkeyup z i Waits a time for the key with ID i to be released See section 3 5 waitkeydown z i As above for key presses waitmouse Waits for any mouse button to be pressed See section 3 7 waitserialbyte port_num t b Waits a time time in ms for a serial byte with value b to arrive at serial port port_num See section 3 11 There are some other functions in Cogent in addition to time that return the time at which the command was executed e g t drawpict 1 Returns the time at
8. Windows XP and Pentium 4s Version 1 25 includes the latest cogent graphics library v1 24 which is also available from http www vislab ucl ac uk CogentGraphics html Changes from Version 1 23 to Version 1 24 CogSerial dll The functions for sending and receiving serial bytes which use this updated library are now robust paletteflicker m Function now accepts bits per pixel 0 paletteflickerrest m Function now accepts bits per pixel 0 preparedartboard m Function now accepts bits per pixel 0 settextstyle m Bug corrected face to font setforecolour m Bug corrected varargin requires Version 1 24 also includes the updated cogent graphics library v1 24 which is also available from http www vislab ucl ac uk CogentGraphics html Changes from Version 1 22 to Version 1 23 paletteflicker m This function now accepts buffers other than 1 and 2 when run in direct colour mode Changes from Version 1 9 to Version 1 22 paletteflicker m This function previously displayed an extra white frame at the start of flickering This has been corrected paletteflickerrest m A new function that flickers a dartboard then returns to a fixation point This only works in palette mode config _display m Now accepts a bits per pixel value of zero and this is the default value This value will set the display to be opened in 32 bit mode However if this is unavailable the display is opened in 24 bit mode and if this is also una
9. actions and the polling interval y getmouse map Y As above for change in the spatial y position of the mouse bl getmouse map Buttonl1 Returns the state of the left mouse button key down 128 key up 0 In non polling mode getmouse map Button1 can only return 0 or 128 In polling mode getmouse map Button1 can return empty single or multiple values b2 getmouse map Button2 As above for right mouse button Also for Button3 and Button4 if mouse has these buttons For an example of using these mouse commands see sample script Samples samplemouse m 25 3 8 How do I present stimuli at specified times e Timing is controlled in Cogent 2000 using the commands wait waituntil and time e There are also commands that wait for specific actions e g waitsound waitkeyup waitkeydown waitmouse and waitserialbytes e When the start_cogent command is called time in Cogent is set to 0 The command time will return the current time in ms since start_cogent was called f time Returns current time in ms since start_cogent was called The waituntil command waits until a specified time where is the time elapsed since the start_cogent command waituntil t Waits until ms has elapsed since start cogent was p _ COs called e Using waituntil together with time allows timing to be set relative to some other event in the script This is illustrated in example scripts sample5 m to sample9 m in the Samples sub di
10. and data about keyboard activity for logkeys or received serial bytes for logserialbytes 3 9 2 Results files A results file must be configured using the config_results command see section 3 2 2 If no file name is specified the results file will be given a default name Cogent YY Y Y MM DD HH MM SS res If an existing file name is given the file contents will be overwritten User specified information can be written to a results file using the addresults command This information can be a string or a numerical value Each line of a results file contains the information specified by a single call to the addresults command addresults v Adds a line containing the value v1 to the results file addresults s Adds a line containing the string s1 to the results file addresults v s Adds a line containing both the value v and the string s to the results file Multiple values and strings can be added to each line of the results file 29 3 10 How do I read output files and load them into MATLAB Log files and results files can be read using a text editor e g the MATLAB edit command or Windows NotePad However it is often useful to load the contents of log files and results files into MATLAB This can be done using the Cogent command loadlog e loadlog can be used to load log files results files and data files into MATLAB This command loads the contents of the log file into a CELL ARRAY e The cell array is made up
11. be systematically read and logged using the two commands readkeys and logkeys e The command clearkeys clears all previously read keyboard events e g Display an image and during this time read and log all key events clearkeys drawpict 1 readkeys logkeys Clears all previous keyboard events Display the image in buffer 1 Reads all the keyboard presses since the last call to readkeys or clearkeys Logs and time stamps all key presses that have been read by the last call to readkeys The log is displayed in the MATLAB command window and saved to a log file if it has been defined by the config_log command logkeys logs the time when each key was pressed and as well as the time when the information was logged An example of a script that demonstrates reading and logging key presses is sample6 m in the Samples sub directory and chapter 4 e Keyboard presses and releases can be used to control the program flow This is done using the commands waitkeyup and waitkeydown which can wait for either any key or a specific key to be pressed or released e The waitkeyup and waitkeydown commands also log all keyboard activity since the last readkeys or clearkeys in fact they internally execute readkeys and logkeys waitkeyup time waitkeydown 1500 1 waitkeyup inf 71 Waits a time time in ms e g 1000 for any key to be released If no key is released within this time execution of the script continues Waits 1500ms
12. for the letter A key ID 1 to be pressed If the A key is not pressed within the specified time execution of the script continues All keyboard activity is logged until after either A is pressed or 1500ms has elapsed whichever comes first Waits an infinite time for the space bar key ID 71 to be released All keyboard activity is logged the space bar is pressed e Information about key presses can be extracted from the current keyboard map using lastkeydown lastkeyup getkeydown getkeyup countkeydown and countkeyup 22 e All of these commands return information about keyboard activity since the last readkeys was executed k t n getkeydown k t n getkeyup n countkeydown n countkeyup k t lastkeydown k t lastkeyup Returns information about all keys pressed since the last readkeys Return values are k key ID time in ms and n number of keys pressed If more than 1 key was pressed k and t will be column vectors of length n As above for key releases Returns the number of keys pressed since the last readkeys NB this number is also returned by getkeydown As above for key releases Returns information about the last key pressed since the last readkeys Returns the values k key ID and time in ms As above for key releases An example script using getkeydown is given in sample7 m in the Samples sub directory and in chapter 4 e If waiting
13. input and output commands require the installation of an additional driver to access the I O ports A WinZip file called UserPort zip contains all the necessary files and is included in the Cogent 2000 toolbox This zip file is also available from http www embeddedtronics com design amp ideas html Installing UserPort zip The contents of the WinZip file UserPort zip can be extracted by double clicking on that file this requires that WinZip has been installed http www winzip com Extracting the contents of the WinZip file will result in a folder called UserPort containing all the necessary files and documentation To access the parallel port from Cogent 2000 only the following files are important UserPort sys and UserPort exe The installation of these files is described below More information is available in the documentation UserPort pdf The parallel driver can be installed in the two ways e Copy UserPort sys to WINDIR system32 drivers e Double click on Userport exe A window containing I O addresses will appear e Addresses can be added or removed from the window however the default addresses should be correct for access to the parallel port e Click on the Start button Alternatively e Run UserPort exe with the driver filename and path as an argument i e run UserPort exe C UserPortDir UserPort sys e NB This can also be done by creating a shortcut The above steps should give access to the parallel ports tha
14. palette mode with the default parameters i e same as preparedartboard with no parameters preparedartboard 1 2 20 200 30 18 Draws two dartboards in buffers 1 and 2 using direct colour mode paletteflicker 7 2 n g Flickers a dartboard prepared in the buffer or buffers specified by b The dartboard is displayed in one state e g black white for fI frames and then the other state e g white black for f2 frames The cycle of fl frames followed by f2 frames is repeated n times When using palette mode the background grey level can be specified by g paletteflicker 1 4 4 225 32767 Flicker the dartboard drawn in buffer 1 using palette mode The dartboard is displayed in each state for 4 frames if the frame refresh rate of the display is 60 Hz the flicker frequency is 4 4 60 7 5Hz The 8 frame cycle is repeated 225 times i e for 225 7 5 30 seconds 20 paletteflicker 1 2 4 4 225 paletteflickerrest 1 4 4 225 32767 Flicker the dartboard drawn in buffers 1 and 2 using direct colour mode Other parameters are as above Flicker the dartboard in buffer 1 for 225 8 frames then return to a fixation spot This command only works in palette mode See example script flash30 m in chapter 4 and in the Samples sub directory 21 3 5 How do I read keyboard input All keyboard commands require that the keyboard has been configured using config_keyboard see section 3 2 3 e Keyboard presses can
15. preparestring word 1 Draw word in display buffer 1 drawpict 2 Display fixation point and wait 1500ms wait 1500 clearkeys Clear all key events tO drawpict 1 Display word and get time str sprintf ss Sd word t0 Log word and time it was displayed logstring str waituntil t0 500 Wait until 500ms after word was presented Clear screen and wait until 1000ms after word was presented drawpict 3 waituntil t0 1000 Read all key events since CLEARKEYS was called readkeys o Write key events to log logkeys end stop_cogent 38 sample7 m sample7 m presents words to the subject and calculates reaction times from keyboard responses using getkeydown and word presentation times using time getkeydown returns information about all keys pressed since the last readkeys The key ID time in ms and number of keys pressed is returned If there are multiple key presses the response is recorded as if no keys were pressed The reaction times and single key presses are written to a results file called sample7 res using addresults Information is also written to a log file called Cogent YYYY MM DD HH MM SS log where YYYY MM DD HH MM SS is the date and time SSAMPLE7 M Visual presentation of words reading and logging keyboard input Reaction times calculated from keyboard input and written to a results file config_display 0 config_data sample7 dat config_log
16. sound send bytes to serial port sets the foreground colour sets the colours used for each palette index sets frequency of sound buffer sets current play position of sound buffer sets volume of sound buffer sets font name and size returns current play position of sound buffer initialises Matlab for running Cogent 2000 commands stops a sound buffer playing returns matlab from Cogent to normal mode returns current time in milliseconds since START COGENT called waits for a specified duration wait for frame update waits for a key press waits for a key to be released suspends execution until mouse button is clicked i e pressed and then released wait for recording to finish wait for byte to arrive on serial port waits until a sound buffer has stopped playing waits until specified time 49 6 Appendix II Further details about serial input This section describes how the serial input commands work at a lower level The commands config_serial and config_log are required to configure the serial port and logfile The start_cogent command will now execute the low level command cogserial record to start recording all serial bytes with time stamps to a serial buffer The readserialbytes command does the following 1 Executes the low level command CogSerial GetEvents which reads events from the serial buffer and then clears it 2 Copies the events to the serial field of the cogent data structure
17. 1025 22050 and 44100 nbuffers number of sound buffers config_sound is equivalent to config _sound 1 16 11025 100 KEYBOARD config_keyboard qlength resolution mode qlength maximum number of key events recorded between each keyboard read resolution timing resolution in ms mode device mode exclusive or nonexclusive config keyboard is equivalent to config _keyboard 100 5 nonexclusive Exclusive versus nonexclusive mode e In exclusive mode it is not possible to interrupt the script using the keyboard i e CTRL C ALT TAB will not work but the timing of key events is accurate e For testing scripts it is therefore better to use nonexclusive mode timing is less accurate but scripts can be interrupted via the keyboard MOUSE config_mouse interval interval Configure mouse to be in polling mode with a polling interval given by interval in milliseconds config_mouse Configures mouse with default settings to be in non polling mode c Polling versus Non polling mode e In polling mode all mouse actions are read at intervals as specified before the next Cogent mouse command is encountered 15 e In non polling mode only the last mouse action is read when a Cogent mouse command is encountered SERIAL PORT config_serial port baudrate parity stopbits bytesize port COM port number 1 2 3 4 etc baudrate 110 300 600 1
18. 200 2400 4800 9600 14400 19200 38400 56000 57600 11520 128000 256000 parity 0 none 1 odd 2 even 3 mark 2 space stopbits 0 1 1 1 5 2 2 bytesize 4 bits 8 bits config_serial Sets up a serial port with default settings config_serial 1 9600 0 0 8 16 3 3 How do I get data into Cogent 2000 Loading a data file can be done using Cogent 2000 commands or with standard MATLAB commands The Cogent 2000 commands that are described in the following section are simple to use but may not make the most efficient use of the MATLAB memory Therefore for the current version of Cogent 2000 we recommend that instead of using the commands described in section 3 3 1 the MATLAB commands described in section 3 3 2 can be used for loading data files This is especially important if the data file is large and the computer has less than 256MB RAM 3 3 1 Using Cogent 2000 commands for loading data Loading a data file requires the configuration command config_data filename dat The data file filename dat must be an ASCII text file containing word strings e g ONE CAR characters e g a 1 names of image or sound files e g tree bmp camper wav or numerical values e g 1 20 All word strings characters and filenames must be written within single quotes The data must be organised in rows and columns Data files can be created using any text editor e g the
19. 2000 sssssesessseessesesssressessessressessrssresseeseesssseeseesensseesse 6 k6 DirectX Iostall tion srne AEE E A te A 6 1 7 MATLAB Installati n seese nroa aiiai aieea 6 WS Usiethis mantal rnuia a E aE A A A aR 6 1 9 Structure of Cogent 2000 general overview sssssessesessssesseserssressessessressesse 8 Getting started in MATLAB and Cogent 2000 s snsessseesseseesseessessrssressesssseesseesee 9 2l How do I execute commands in MATLAB ssssssessesessessesesssesersessesersseseesessesee 9 2 2 How do I execute Cogent 2000 commands ccccccecssecsteceseceseeeeteeesseeeteeeees 9 2 3 How do I write a script in MATLAB s ssssesssessessessseessesrssseessesressressesrrssressessess 9 2 4 How do I write a script in Cogent 2000 0 eeecccsccesseeessecsecetecseeeeeeeeeseeees 10 2 5 How is a Cogent 2000 script structured s sseseeseseseessessessressessrssresseesresressee 10 2 6 How do I execute a script in MATLAB uu ecccccceeceeseeeneeceseceteeeeeeensseesaeens 10 2 7 How do I force a Cogent Script to stop c cc ccceeseceseceeeceeteeceeeceeceeeeenseeesaeens 11 2 8 Clearing the MATLAB Workspace ccccccscseesseesseceseceseeeeeceescecsaeceeeseneenaees 11 2 9 Using the Cogent 2000 graphics library 0 ce ceecceesceesceeseeceeceeeeeeeeenseeesaeenes 11 High Level Cogent 2000 Commands ecceccsecsseceseceeteceeeeeesceesaecnseeneneeeseeesaeees 12 3 1 Two essential Cogent Command
20. Cogent 2000 v125 User Manual 14 04 03 Terms and Conditions This software package is provided to you free of charge under the following conditions 1 Acknowledgement Acknowledgement from users helps us justify the time we are spending further developing and maintaining this free software Therefore we request that when you use Cogent 2000 for your experiments you include the following statement in your publication This experiment was realised using Cogent 2000 developed by the Cogent 2000 team at the FIL and the ICN and Cogent Graphics developed by John Romaya at the LON at the Wellcome Department of Imaging Neuroscience 2 Copying This package may be distributed freely as long as it is distributed in its original form It may not be sold without permission 3 Liability The package is distributed as it is without any warranty implied No liability is accepted for any damage or loss resulting from the use of these routines NANA Cogent 2000 v125 User Manual 14 04 03 Chloe Hutton Eric Featherstone Oliver Josephs plus input from FIL ICN and LON Introducti oN assise a E E a a ints nem A a a e 3 1 1 R guireMmentsaen a a a a a a ek satis 3 1 2 Known bugs and limitations ssnseeseesseesseseesseessessessressessrssesseesessresseeseeseesseesse 3 1 3 Update history for Cogent 2000 ssccsaseosscsventaanslss steassavsecdgpacoanecoqneccsdadiestsatdtiaiens 4 LE SAyv ilabilty ee e E E GKS 5 1 5 Installation of Cogent
21. MATLAB edit command or Windows Notepad Most of the example Cogent scripts in the Samples subdirectory use data files see also chapter 4 The number of rows in a data file can be determined automatically using countdatarows and the data extracted from the data file using getdata datum getdata r c Returns data item at r row c column numrows countdatarows Returns the number of rows in the data file e g Consider a data file called testdata dat containing the following lines of text ONE 1 TWO 2 THREE 3 The Cogent commands to load and read this data file are config_data testdata dat Specifies data file to be read start_cogent Start Cogent numrows countdatarows Counts data rows i e numrows 3 string 1 getdata 1 1 Gets data from position 1 1 i e string ONE val2 getdata 2 2 Gets data from position 2 2 i e val2 2 stop_cogent Stop Cogent Commonly a MATLAB FOR LOOP is used to sequentially count through the data rows getting each item of data to do something with it see for example samplel m in chapter 4 17 3 3 2 Using standard MATLAB commands for loading data files In order to use the MATLAB commands for loading the data file the data file definition is slightly different from the data file definition required when using the Cogent 2000 commands The difference is that in the data file strings do not need to be written within single q
22. SAMPLE10 Visual presentation of pictures and control of parallel port config_display 0 config_data samplel0O dat start_cogent for i l countdatarows Get name of picture file file getdata i 1 Get binary code code getdata i 2 clearpict 1 load picture into buffer 1 loadpict file 1 Send signal to parallel port outportb 888 bin2dec code Display bufferl and wait 2000ms drawpict 1 wait 2000 Clear screen and wait 500ms drawpict 2 wait 1000 end stop_cogent 42 samplemouse m samplemouse m demonstrates how Cogent 2000 reads mouse information In this script the current position of the mouse is updated and used to draw the word SQUEEK at a new position The mouse is in polling mode with a 10ms interval Therefore every 10ms the variable map defined using getmousemap is updated using readmouse The updated contents of map are extracted using getmouse The size of the polling interval will determine how smoothly the word SQUEEK moves around the display SAMPLEMOUSE M Demonstrates how mouse position can be used to update display Configure mouse in polling mode with 10ms interval config_mouse 10 config_display 0 start_cogent o Draw text at position defined by mouse 0 0 at first clearpict 1 preparestring SQUEEK 1 x y drawpict 1 Update mouse map using readmous
23. cogent serial see Any data already in the Cogent data structure will be overwritten The following fields are written cogent serial value cogent serial time cogent serial number_ of responses The logserialbytes command copies the contents of cogent serial to the logfile configured by config log The clearserialbytes command reads and clears the serial buffer using the low level command CogSerial GetEvents It then clears the serial field of the Cogent data structure cogent serial The waitserialbyte command continuously executes logserialbytes followed by readserialbytes until the wait condition specified by this command is satisfied Therefore while waiting for the specified condition to be satisfied all serial bytes arriving at the serial port will be read cleared and logged 50 7 Appendix III The cogent data structure In Cogent 2000 a STRUCTURE ARRAY called cogent is used to communicate between high level Cogent commands in the MATLAB workspace and low level Cogent commands controlling stimulus presentation This data structure is ordinarily local to the low level commands and therefore not accessible to the MATLAB workspace By declaring that the cogent data structure is GLOBAL using the MATLAB command global the information is also available to the MATLAB workspace Therefore if the line global cogent is included at the beginning of a Cogent 2000 script all the information stored in this data structure is acc
24. config_results sample7 res config_keyboard start_cogent preparestring 2 Draw fixation point in display buffer 2 for i 1l countdatarows code getdata i 1 word getdata i 2 logstring code logstring word clearpict 1 preparestring word 1 Draw word in display buffer drawpict 2 Display fixation point and wait 1500ms wait 1500 drawpict 1 Display word tO time Record time at which word is presented logstring tO clearkeys Clear all key events AP ol waituntil t0 500 Wait until 500ms after word was presented Clear screen and wait until 1000ms after word was presented drawpict 3 waituntil t0 1000 readkeys Read all key events logkeys Write key events to log Check key press and calculate the reaction time key t n getkeydown if n no key press response 0 rt 0 elseif 1 single key press response key 1 rt t 1 t0 else response 0 multiple key press rt 0 end Add the stimulus reaction time and key press to the results file addresults word response rt end stop_cogent sample8 m sample8 m presents words reads and logs serial input between presentations of the fixation point using clearserialbytes readserialbytes and logserialbytes Serial bytes words and time are logged to a file called sample8 log 39 SAMPLE8 M Visual presentation of wor
25. ds reading and bytes config_display 0 config_data sample8 dat config_log sample8 log config_serial start_cogent o 1 Draw fixation point in display buffer 2 preparestring 2 for i 1 countdatarows tO time o Draw word in display buffer 1 word getdata i 1 clearpict 1 preparestring word 1 Display fixation point and wait 1500ms drawpict 2 waituntil ct oe o Log word t0 1500 Display word 1 drawpict 1 and time str sprintf s d word t1 logstring str o clearserial Clear all key events lbytes 1 Wait until 2000ms after start of trial waituntil o t0 2000 Clear screen and wait until 3000ms after start of trial drawpict 3 waituntil g Read all t0 3000 serial bytes since clearserialbytes was called readserialbytes 1 o Write serial events to log logserialbytes 1 end stop_cogent sample9 m logging serial sample9 m uses waitserialbyte to repeatedly wait for zero bytes in order to synchronise the stimulus with incoming serial bytes for example from an MRI scanner and log subject responses It is important to remember that waitserialbyte executes a readserialbytes followed by logserialbytes Therefore the waitserialbyte in the loop will read and log all incoming bytes from the scanner for example and the s
26. ds then returns to rest for 3 seconds The computer display must be set up in direct colour mode to use the paletteflicker command with two buffers and have the screen refresh frequency set to 60 Hz for 3 seconds of flashing FLASH3 M Flicker dartboard for approx 3 seconds and rest for 3 seconds The computer display must be in direct color mode to use two buffers and the refresh frequency 60Hz for 3 sec flashing config_display 0 1 0 0 0 1 11 Arial 25 4 24 start_cogent prepare the dartboard preparedartboard 1 2 20 200 10 18 draw dartboard paletteflicker 1 2 0 0 0 32767 Wait for keyboard input pause for i 1 5 paletteflicker 1 2 4 4 22 32767 wait 3000 end stop_cogent 47 5 Appendix I List of Cogent 2000 functions ADDRESULTS CLEARKEYS CLEARMOUSE CLEARPICT CLEARSERIALBYTES CONFIG DATA CONFIG DISPLAY CONFIG KEYBOARD CONFIG LOG CONFIG_MOUSE CONFIG RESULTS CONFIG SERIAL CONFIG SOUND COUNTDATAROWS COUNTKEYDOWN COUNTKEYUP COUNTSERIALBYTES DRAWPICT GETDATA GETKEYDOWN GETKEYMAP GETKEYUP GETMOUSE GETMOUSEMAP GETMOUSESTATE GETRECORDING GETSERIALBYTES GETSOUNDFREQ GETSOUNDVOL HELP_COGENT LASTKEYDOWN LASTKEYUP LASTSERIALBYTE LOADLOG LOADPICT LOADSOUND LOGKEYS LOGSERIALBYTES add row of items to results file clears all keyboard events clears mouse clears a display buffer clears bytes sent to READSERIALBYTES loads data file configure
27. e readmouse ale Update coordinates for text x x sum getmouse map X y y sum getmouse map Y Exit if left mouse button is pressed if isempty getmouse map Button1 amp any getmouse map Buttonl 128 break end end stop_cogent 43 sound m soundi m sequentially loads the sound files listed in a data file and plays them Each sound file is loaded only after the previous sound has finished playing This is done using waitsound A known bug means that the first execution of waitsound takes longer than subsequent executions For this reason a sound file is loaded and played before the trials begin SOUND1 M Plays sound stimuli loaded from a sound file config_display 0 config_sound config_data soundl dat start_cogent o Load sound file and play it before trials begin to work around problem with waitsound file getdata 1 1 loadsound file 1 playsound 1 waitsound 1 for n 1l countdatarows file getdata n 1 loadsound file 1 playsound 1 waitsound 1 end stop_cogent Load sound file into buffer 1 Play sound in buffer 1 Wait for sound to finish AP oP oN Get name of sound file Load sound file into buffer 1 play sound in buffer 1 Wait for sound to finish AP oP oP o sound2 m sound2 m creates sounds of increasing frequency using preparepuretone The sounds are of 1000ms duration The waituntil command is used to ensur
28. e avoided by using references to absolute time e g via the cogent command waituntil rather than delays o SAMPLE1 Visual presentation of words at a constant rate config_display Configure display with default parameters config_data samplel dat Read input data from samplel dat start_cogent Configures MATLAB to run cogent commands Also depending on prior configuration commands may initialise keyboard and or serial reaction time recording open full screen mode start the real time timer etc for i 1 countdatarows This is the standard MATLAB for loop countdatarows is a cogent function which returns the number of rows in the cogent data file Thus the following statements up and until the end statement are xecuted once for each item in the data file AP o oO ol word getdata i 1 getdata r c returns the word at row r and column c in the data file In this case the data file contains only one column of words and so only i needs to vary The 1 refers to the one and only column in the samplel dat F al ol clearpict 1 clearpict 1 fills buffer 1 with the current background colour clearing any previous contents This is not necessary for the first time round the loop but is needed subsequently to clear the previous word before preparing the next one Note that this command does NOT affect the screen only the memory buffer AP o AIP o Ol preparestring w
29. e constant trial length As with the previous example a sound is prepared and played to work around the bug in waitsound SOUND2 M plays a serious of tones created using preparepuretone config_display 0 config_sound start_cogent o Create sound and play it before trials begin to work around problem with waitsound preparepuretone 200 200 1000 1 playsound 1 waitsound 1 for i Tes t0 time preparepuretone 200 200 1i 1000 1 playsound 1 waitsound 1 Wait for sound to finish playing time to waituntil t0 2000 Leave 2000ms between each sound end stop_cogent sound3 m sound3 m presents words and sounds together reads keyboard presses and presents feedback based on the key presses A variable keymap getkeymap is defined to determine whether the correct keys have been pressed The variable keymap is a structure containing the key ID for each key The syntax to get the ID corresponding to each key is 44 for example for the letter P kKeymap X Responses and error codes are recorded in a results file SOUND3 M Presents visual stimuli sound stimuli reads key presses and presents feedback config_display 0 Configure hardware input and output files config_keyboard config_sound config_data sound3 dat config_log sound3 log config_results sound3 res start_cogent keymap getkeymap Get map of keyboard to check for key presses
30. ent 2000 package and has reference to Cogent Graphics where necessary A detailed manual for Cogent Graphics G2UsrManvX pdf is also distributed with the Cogent 2000 package 1 5 Installation of Cogent 2000 To download the latest version of the Cogent 2000 distribution go to http www vislab ucl ac uk Cogent2000 From here you can download the Cogent 2000 package as a self extracting WinZip file The contents of the WinZip file can be extracted by double clicking on that file and selecting a folder in which to unzip the package The self extracting WinZip file will result in a folder named with the current version of Cogent 2000 containing the following folders and files Documents This folder contains documents describing Cogent 2000 and Cogent Graphics functions This includes the Cogent 2000 manual cogmanvX pdf and the Cogent Graphics manual G2UsrManvX pdf where X is the Cogent version number Samples Example MATLAB scripts and data files demonstrating Cogent 2000 usage Toolbox Cogent 2000 commands and functions including high level MATLAB commands m low level Cogent 2000 graphics functions cg dIl MATLAB interface libraries gprim dll cogstd dll and low level functions for sound input output and response timing Cog dll 1 6 DirectX Installation The PC should have DirectX installed With Windows 2000 this is usually done by default In the Cogent Graphics manual there is further information about insta
31. essible The cogent data structure contains information within FIELDS about the current Cogent configuration A field is created for each feature configured using the configuration commands e g config_display Each field is accessed using a e g the display field of the cogent data structure can be accessed using cogent display In turn each field may have one or more fields which are listed below config data cogent data This is a 2 dimensional cell array config display cogent display res cogent display size cogent display mode cogent display bg cogent display fg cogent display font cogent display fontsize cogent display number_ of buffers cogent display nbpp cogent display scale config sound cogent sound nchannels cogent sound nbits cogent sound frequency cogent sound number_ of buffers cogent sound buffer config_keyboard cogent keyboard id cogent keyboard time cogent keyboard value cogent keyboard number_of responses config mouse config mouse config_log cogent log filename cogent log time config_results cogent results filename config serial cogent serial name cogent serial baudrate cogent serial parity cogent serial bytesize cogent serial value cogent serial time cogent serial number of responses config_parallel cogent Ipt data cogent Ipt status 51
32. for a specific key press it is necessary to know the ID that identifies each key in Cogent 2000 The ID is a numerical value e g the ID for the A key is 1 for B is 2 etc Typing help readkeys lists the ID of each key It is also possible to use the command getkeymap to return the IDs of all keys keymap getkeymap k t lastkeyup k keymap S Returns a structure called keymap containing key IDs The variable keymap is a structure containing the key ID for each key The syntax to get the ID corresponding to each key is for example for the letter P kevmap X Get the last key pressed Was the last key pressed an S An example showing how to determine whether specific keys were pressed is given in example script sound3 m in the Samples sub directory and in chapter 4 23 3 6 How do I present sound stimuli All sound commands require that the sound has been configured using config_sound see section 3 2 3 e Sound stimuli are prepared in memory and presented to the subject via earphones In the same way that Cogent display buffers can hold image data for display the sound buffers hold sounds to be played e Sounds can either be loaded from a Microsoft wav sound file or can be created in Cogent 2000 e Sound files wav format can be generated using third party software e g Cool Edit Pro http www hitsquad com smm programs Cool Edit Pro e g Present subject with sound contained in a
33. g gt gt help start_cogent Cogent commands are listed in chapter 5 Appendix I List of Cogent 2000 functions 3 1 Two essential Cogent commands Two commands that are required in all Cogent scripts are start_cogent and stop_cogent start_cogent Initialises MATLAB for running Cogent 2000 commands This command should appear AFTER any configuration commands see below and BEFORE ALL other Cogent commands This command will also initialise MATLAB for running all Cogent 2000 low level graphics and low level input output functions stop_cogent Returns MATLAB from Cogent to normal mode This should come at the end of the Cogent script 3 2 Cogent 2000 configuration commands Before running commands in Cogent it is necessary to configure various aspects of Cogent 2000 if the corresponding features will be used The configuration commands should appear for the first time at the beginning of the script before all other Cogent commands Configuration commands are named config_feature corresponding to the feature being configured When used with no arguments the default configurations for each feature are used The argument types and default values are given in full by the help command e g help config_display The configuration commands are described below 3 2 1 Configuring the display config_display mode resolution background foreground fontname fontsize nbuffers nbits scale mode window mode 0 window 1 full screen
34. g word logstring code logstring tl r r Wait until 1500ms waituntil t0 1500 o drawpict 3 waituntil to drawpict 2 end t0 2000 stop_cogent 0 ale using absolute time Configure log file raw fixation raw fixation point point in display buffer 2 and get time D D o o Get code and word from data file r 7 Put word in buffer 1 o Display fixation point for 1000ms Display word and get the time Log word log code Log time that word is displayed after fixation was first presented Clear screen and wait until 2000ms after fixation was first presented Display fixation point and get time 37 sample6 m sample6 m reads a list of words from a data file and presents them visually to the subject at times controlled by a mixture of the wait and waituntil commands This script reads and logs keyboard input between presentations of the fixation point using clearkeys readkeys and logkeys Keyboard input words and times are logged to a file called sample6 log SAMPLE6 Visual presentation of words reading and logging keyboard input config_display 0 config_keyboard config_data sample6 dat config_log sample6 log start_cogent preparestring t 2 Draw fixation point in display buffer 2 for i l countdatarows word getdata i 1 clearpict 1
35. ges over direct mode in terms of speed and memory requirements direct colour mode the foreground and background colours are specified by n x 3 RGB arrays In palette mode the colours are specified by single indices to a colour table and 256 0 255 palette entries can be set to any colour required Initially all palette entries are set to black Each palette entry can be set to a new colour using the commands egcoltab and cgnewpal A full description of direct colour mode and palette mode can be found in the Cogent graphics library user manual G2UsrManvX pdf Window mode versus full screen mode When using window mode it is necessary to set the display number of bits per pixel correctly on your PC so that it corresponds to the number of bits per pixel specified by config display If the default bits per pixel 0 is used the display must be set to 16 or more bits per pixel If the bits per pixel 8 i e Palette mode then the display must be set to 256 colours To do this go to the Windows Start menu select Settings Control Panel double click on Display select the Settings tab and under Colors choose the setting that reflects the desired number of bits per pixel When testing scripts it is better to use window mode even if the stimulus does not require a display window This is so that the MATLAB window is visible i e not obscured by the full screen display and a
36. ing the config_data and getdata commands see section 3 3 in the same way as data files are loaded 30 3 11 How do I control serial input and output All serial input and output commands require that the serial port has been configured using config serial see section 3 2 3 e Cogent can receive and send serial bytes to and from other equipment e Serial bytes can be systematically read and logged using readserialbytes and logserialbytes e Serial bytes can be sent using sendserialbytes e Serial bytes can have values in the range 0 255 readserialbytes 1 logserialbytes 1 sendserialbytes 1 14 Reads all bytes arriving at the serial port 1 and empties the serial buffer for this port Logs and time stamps all serial bytes that have been read by the last call to readserialbytes The log is displayed in the MATLAB command window and saved to a log file if it has been defined by the config_log command logserialbytes logs the time that all serial bytes are received as well as the time when the log command was executed Sends a serial byte of value 14 to serial port 1 e It is very common to use the arrival of serial bytes to control the program flow For example the serial bytes may come from an MRI scanner and be used to synchronise the presentation of stimuli with image acquisition e The waitserialbyte command can wait for any byte or a byte of a specific value to arrive at the serial port This command also log
37. le is large and the computer has less than 256MB RAM This is described in detail in section 3 3 2 3 The first execution of the waitsound command takes longer to run than subsequent executions To work around this problem a sound should be played and the waitsound command used at the beginning of a script before starting timed trials 4 The sound routines such as playsound and waitsound do not work properly with certain sound cards 5 The Cogent graphics library command for keyboard logging cgKeyMap has not been tested with high level Cogent commands In particular this function may interact with the high level Cogent commands for keyboard logging readkeys logkeys getkeydown waitkey etc 6 The Cogent graphic library command for mouse logging egMouse has not been tested with high level Cogent commands In particular this function may interact with the high level Cogent commands for mouse logging readmouse getmouse waitmouse etc 7 The parallel port commands inportb and outportb will cause errors if used without any arguments 1 3 Update history for Cogent 2000 Changes from Version 1 24 to Version 1 25 start_cogent m This function now loads the low level graphics libraries into the Matlab workspace This means that other I O functions can be used without using the Cogent 2000 graphics and the config display command inportb dll These functions now work with more recent Operating Systems outportb dll and processors e g
38. lear any variables globals and functions that were used in the script Using this command before running either another script or the same script again ensures that there is no interference between old and new copies of variables globals and functions in the workspace This command can also be included at the beginning of a Cogent 2000 script 2 9 Using the Cogent Graphics library The Cogent Graphics library has been developed as a stand alone suite of graphics functions that will run independently from the high level Cogent 2000 commands described in this manual However the high level Cogent 2000 commands are dependent on the graphics library and the graphics commands can be used in conjunction with the high level Cogent 2000 commands except where advised not to When used together the Cogent script must follow the format described in the following section i e the script must contain start_cogent stop_cogent and the configuration commands config_ Concise details and tutorials for using the Cogent 2000 graphics library are given in the Cogent Graphics manual G2UsrManvX pdf The following pages of this manual describe most of the high level Cogent 2000 commands References to the low level functions for sound input output and response timing can be found in Documents Cog Ref doc 11 3 High Level Cogent 2000 Commands For a full description of any high level Cogent command type help command _name at the MATLAB prompt e
39. lling and setting up DirectX 1 7 MATLAB Installation Cogent 2000 has been fully tested with MATLAB 6 0 and 6 1 Please refer to MATLAB documentation for installation instructions 1 8 Using this manual e Chapter 2 describes how to get started with MATLAB and Cogent 2000 It is mostly aimed at those with little or no experience with MATLAB but also has some information that is specific to Cogent 2000 for example how to exit from a Cogent script e Chapter 3 describes in detail the high level Cogent 2000 commands This can be used as a high level programming reference e Chapter 4 covers the example scripts that are provided with the Cogent 2000 distribution More experienced high level programmers may want to start with this chapter 1 9 Structure of Cogent 2000 general overview In Cogent 2000 a MATLAB script is used to load data prepare and present stimuli to the subject record subject responses and accurately log execution and timing Responses are transferred into the MATLAB workspace from where they can be logged used to influence the course of the experiment and processed according to the script The diagram below illustrates the hierarchical structure of Cogent 2000 For general users it is only necessary to know about the top level Advanced users especially those wanting to generate sophisticate graphical stimuli and Cogent 2000 programmers also need to know about the middle level Hierachical structure of Cogent
40. lour mode so the computer display must be set to 16 bits or more as described in section 3 2 1 SAMPLE2 Visual presentation of pictures at a constant rate config_display 0 Display in a window config_data sample2 dat Read input data from samplel dat start_cogent for i 1l countdatarows file getdata i 1 clearpict 1 loadpict file 1 drawpict 1 wait 2000 drawpict 2 wait 1000 end stop_cogent Get name of picture file Clear buffer 1 Load picture into buffer 1 Display buffer 1 and wait 2000ms AIP NP o oN oe Clear screen and wait 1000ms sample3 m sample3 m is the same as samplel m but demonstrates how to index colours when the display is set to palette mode The display must be set to 256 colours as described in 3 2 1 SAMPLE3 Visual presentation of words at a constant rate in palette mode Configure the display to use palette mod config_display 1 1 0 1 Ariel 60 4 8 config_data samplel dat Specifiy data file to be samplel dat start_cogent Assign black and white to the palette indices 0 and 1 cgcoltab 0 0 0 0 1 1 1 cgnewpal for i l countdatarows word getdata i 1 Get word from data file clearpict 1 Clear display buffer 1 preparestring word 1 Draw word in display buffer 1 r drawpict 1 wait 1000 drawpict 2 wait 1000 end drawpict 2 stop_cogent Copy display buffer 1 to screen
41. ministrator privilege to do this e Once installed a DirectX icon will appear in the Start Menu Settings Control Panel folder Double click on this icon select the DirectDraw tab and select the required Forced Refresh Rate Examples of configuring the display for direct colour mode palette mode full screen and window mode are given in scripts samplel m sample2 m sample3 m and sample4 m and described in chapter 4 3 2 2 Configuring input and output data INPUT DATA config _data datafile dat Configure Cogent to read the data file specified by datafile dat NB This configuration command always requires an input argument OUTPUT LOG FILE config log Sets up a log file with default name Cogent YYYY MM DD HH MM SS log config _log test log Sets up a log file with name test og NB If an existing file name is given the file will be appended OUTPUT RESULTS FILE config results Sets up a results file with default name Cogent YYYY MM DD HH MM SS res 14 config_results test res Sets up a results file with the name test res NB If an existing file name is given the file contents will be overwritten 3 2 3 Configuring the hardware SOUND config _sound nchannels nbits frequency nbuffers nchannels number of channels 1 mono 2 stereo nbits number of bits per sample 8 or 16 frequency number of samples per second e g 8000 1
42. n waitmouse Does nothing until any mouse button has been pressed and released To suspend execution at any point config_mouse should be set to non polling mode or polling mode with a very short time interval i e use config_mouse or config_mouse 10 e To read information about mouse activity use getmousemap to initialise a variable that will store the current mouse map i e mouse position and button presses e To update the current mouse map use readmouse e To extract the required information from the current map use getmouse map getmousemap Defines a MATLAB variable map that will contain information about the mouse map This only needs to be defined once The contents of the variable map are automatically updated each time the mouse information is read by Cogent using readmouse readmouse Updates the mouse map i e current information contained in the variable assigned to getmousemap for the latest mouse activity movement or button clicking If the mouse is configured for non polling mode the map is only updated with the last action If in polling mode the map is updated with the last actions that were read at the interval specified in the config_mouse command x getmouse map X Returns the change in the spatial x position of the mouse In non polling mode getmouse map X will only return the last value read In polling mode getmouse map X may return multiple values depending on the number of mouse
43. n in Cogent 2000 mode This takes a couple of seconds to run Run experiment Involves a series of Cogent commands in sequential order for stimulus preparation presentation logging subject response recording and processing Use MATLAB commands for experimental control flow e g for and while loops if statements etc Stop Cogent A single command stop_cogent passes control from Cogent back to MATLAB 2 6 How dol execute a script in MATLAB To execute a Cogent 2000 or MATLAB script enter its name at the MATLAB prompt e g gt gt samplel Executes the sample Cogent 2000 script sample1 m 10 When configuring the display in Cogent 2000 it is important that the computer monitor is correctly set up This is addressed in section 3 2 1 2 7 How do I force a Cogent script to stop To pass control from the Cogent window back to MATLAB before a script has finished i e to escape from Cogent at any time including if the script contains an error enter Control C Alt Tab It may be necessary to press Alt Tab more than once to get back to the MATLAB prompt In MATLAB 6 1 it may be necessary to press Control C more than once Now Cogent must be stopped to allow MATLAB to run in normal mode To do this at the MATLAB prompt enter stop_cogent 2 8 Clearing the MATLAB workspace The MATLAB command clear all clears all variables and functions from memory i e the MATLAB workspace Using this command after stop cogent will c
44. n point disappears drawpict 1 Returns to the fixation point If you wanted the fixation point to remain over the tree this could be achieved by preparestring 1 Puts full stop fixation point in the middle of buffer 1 loadpict tree bmp 2 Puts the tree image in the middle of buffer 2 preparestring 2 Puts a full stop fixation point in the middle of buffer 2 i e in the middle of the tree Since the fixation point is now present in both buffers it will appear to remain on screen during the drawpict transitions If you want to manipulate the image contained in the graphics file you can use loadpict to return a MATLAB matrix containing the image In this case the image is loaded into a matrix rather than a memory buffer The MATLAB matrix can then be manipulated and preparepict used to display the result e g A loadpict tree bmp Puts the tree image ina MATLAB matrix specified by A TA A size A 1 1 1 5 Inverts the rows in the image i e turns image upside down preparepict IA 1 Puts the inverted image in middle of buffer 1 drawpict 1 Presents buffer 1 upside down tree e The commands preparestring for text and loadpict for images on disk or preparepict for images in the MATLAB workspace are the two easy ways to place 19 visual stimuli in the memory buffers In all cases drawpict is used to display the picture on the screen e Graphics files that can be read by
45. n the Cogent 2000 Toolbox e g gt gt help for Explains how to use the MATLAB for loop Or 2 2 How do I execute Cogent 2000 commands To run Cogent 2000 commands MATLAB must be instructed to search the directories containing the Cogent 2000 commands This can be done by selecting the Set Path option from the File menu of the MATLAB user interface or by using the command gt gt addpath C Cogent2000vX_X Toolbox where C Cogent2000vX_X is the name of the path where Cogent has been installed It should now be possible to execute Cogent 2000 commands in MATLAB e g gt gt help_cogent Lists all Cogent 2000 commands Any other sub directories containing commands to be executed by MATLAB should also be added to the MATLAB path in the same way e g gt gt addpath C Cogent2000vX_X Samples 2 3 How do I write a script in MATLAB A MATLAB script often referred to as an M FILE is a text file that contains MATLAB commands and functions in sequential order It can be written using any text editor e g the MATLAB text editor gt gt edit Opens MATLAB text editor debugger The file must be saved with a filename appended by m for MATLAB to recognise it as an executable script e g testcript m Other text editors may lack the functionality of the MATLAB edit program which has colour coding as a visual aid and debugging facilities For help with editing and debugging M files see http www mathwo
46. ny MATLAB or Cogent error messages can be monitored Cogent timing is only accurate and properly synchronised to the screen refresh rate when the display is configured to full screen mode If using window mode with palette mode only palette entries 0 235 can be assigned colours 13 Setting the screen s refresh frequency e The setting for the screen refresh rate may influence timing for the Cogent script because this is the time taken to display a new frame The refresh rate may also need to be adjusted to correspond with other display hardware such as a projector e To adjust the screen s refresh frequency go to the Windows Start menu select Settings Control Panel double click on Display select the Settings tab under Advanced select the Monitor tab then choose the required Refresh Frequency e To check that Cogent 2000 has detected this change run config_display 0 followed by start_cogent One line of the text printed to the MATLAB command window gives the display information e g Display 640x480x8 60 02Hz This means the screen s settings are resolution 640x480 bits per pixel 8 and refresh frequency 60Hz e Ifthe selected refresh frequency has not been detected by Cogent 2000 it will be necessary to download a Directx file called DirectX cpl from http www microsoft com directx This file should be copied into your WINDIR system32 folder It may be necessary to have ad
47. of one cell for each line of the log file Each cell representing a line is made up of a number of cells containing a string representing each white space separated string or value in that line of the log file The syntax for accessing the components of cell arrays is given for an example log file called test Jog whose contents are listed below Cog2000 log file Fri May 03 13 01 50 2002 GPrim v1 22 Compiled Apr 30 2002 GLib DirectDraw v7 Apr 30 2002 Display 640x480x24 74 96Hz Attaching C Cogent2000v1 22 toolbox CogInput dll CogInput v1 04 Compiled Apr 2 2002 18 18 COGENT START 1625 1607 Cat 1625 a loadlog test og Loads the contents of the log file fest og into a cell array defined by a b a 7 Sets b line 7 with 5 cells containing the following strings L625 ELOOT f Ser Gate ILo c b 1 Sets the variable c equal to the first string in the line i e c 1625 The same element can also be accessed using d a 7 1 Other ways of loading results files e If results file contains only numerical values and the same number of values on each line it can be loaded into the MATLAB workspace using the MATLAB load command Once loaded it will be represented in MATLAB as an n x m matrix where the number of rows n is equal to the number of lines in the results file and the number of columns m is equal to the number of values on each line e Results files can also be loaded into Cogent 2000 us
48. ord 1 The current data item stored in the MATLAB variable word is rendered in the middle of buffer 1 Again the subject does not see this AP o ol drawpict 1 The contents of buffer 1 are transferred to the screen and the subject finally sees the word appear The transfer is synchronised with the next screen refresh so that the subject sees the whol 34 AP o ol oe AP ANP o oP OO AP o ol ol ol screen appear at once wait 1000 This command delays execution for the specified number of milliseconds wait uses cogent s high precision timer for this purpose It is better to use Cogent s timer instead of the built in matlab facilities because these are synchronised with cogent s reaction timing mechanisms drawpict 2 To remove the word from the display another buffer containing the default background colour is copied to the screen again at the next screen refresh wait 1000 The screen is left blank for one second before control returns to the beginning of the loop for the next presentation end drawpict 2 This is the end of the MATLAB for loop stop_cogent MATLAB is returned to its normal mode 35 sample2 m sample2 m reads a list of picture files from a data file and presents them visually to the subject at a constant rate using the wait command This script displays the pictures on a black background in a window The display is set to direct co
49. ort since last call to serial bytes read by bytes read by LOGSTRING LOOPSOUND PALETTEFLICKER PALETTEFLICKERREST PAUSEKEY PAUSEMOUSE PLAYSOUND PREPAREDARTBOARD PREPAREPICT PREPAREPURETONE PREPARERECORDING PREPARESOUND PREPARESTRING PREPAREWHITENOISE READKEYS READMOUSE READSERIALBYTES RECORDSOUND SENDSERIALBYTES SETFORECOLOUR SETPALETTECOLOURS SETSOUNDFREQ SETSOUNDPOSITION SETSOUNDVOL SETTEXTSTYLE SOUNDPOSITION START COGENT STOPSOUND STOP_COGENT TIME WAIT WAITFRAME WAITKEYDOWN WAITKEYUP WAITMOUSE WAITRECORD WAITSERIALBYTE WAITSOUND WAITUNTIL writes a time tag and string to the console and log file starts a sound buffer playing in a continuous loop flickers a dartboard flickers a dartboard and returns to fixation pauses a key has been pressed and waits for another key press execution of script if a mouse button has been press plays sound buffer places a dartboard in a display buffer draws a Matlab image matrix in a display buffer fill sound buffer with sin wave of specified duration and frequency prepare recording buffer transfers a sound matrix from the matlab workspace to a Cogent sound buffer places a string in a display buffer fill sound buffer with white noise of specified duration reads all keyboard events since last call to READKEYS or CLEARKEYS reads all mouse events reads bytes sent to serial port since last call to READSERIALBYTES or CLEARSERIALBYTES start recording
50. re such as the MRI scanner the hardware must be configured so that pulses are sent at specific times to the serial port of the PC running Cogent 2000 The waitserialbyte command can then be used to wait for a specific byte as configured by the hardware to arrive at the serial port For example if the scanner causes a zero byte to be sent at a specific time to the PC running Cogent the following commands can be used to wait for a zero byte to arrive at serial port 1 clearserialbytes 1 Empties the serial buffer for serial port 1 waitserialbyte 1 inf 0 Waits forever for a zero to arrive at serial port 1 When a byte arrives it is logged and the corresponding serial buffer is emptied Once the scanner synchronisation pulse i e the zero byte has been received execution of the script will continue The subject may then be presented with some stimuli and be expected to respond using hardware that sends serial bytes back to Cogent The responses can be recorded using the readserialbytes and logserialbytes commands readserialbytes 1 Reads all bytes arriving at the serial port 1 and empties the serial buffer for this port logserialbytes 1 Logs and time stamps all key presses that have been read by the last call to readserialbytes Example scripts demonstrating the use of the serial port are sample8 m and sample9 m in the Samples sub directory and chapter 4 32 3 12 How do I control parallel input and output Parallel
51. rectory and in chapter 4 t0 time Sets 20 current time relative to start_cogent waituntil z0 1000 Waits until 1000ms has elapsed since time was executed and t0 1000ms since start_cogent e The wait command waits from the current time for a specified amount of time 1 where f is the total duration of the wait and is not relative to the start of the Cogent script This is illustrated in the example scripts sample1 m to sample4 m wait t Waits for ms to elapse It takes a small but finite amount of time to execute most commands in Cogent i e in the order of a few 10s of ms By using the waituntil command it is possible to avoid cumulative timing errors that may be caused by the execution of a series of commands In contrast the wait command allows the time of a delay to be specified exactly The following examples illustrate the difference between the waituntil and wait commands e g Present an image until exactly 1000ms after the beginning of the experiment preparestring 2 Puts fixation cross in the middle of buffer 2 preparestring TREE 1 Puts the word TREE in the middle of buffer 1 drawpict 1 Presents buffer 1 waituntil 1000 Waits for 1000ms from the start_cogent command drawpict 2 Presents buffer 2 by default an empty buffer e g Present an image for exactly 1000ms preparestring 2 Puts fixation cross in the middle of buffer 2 preparestring TREE 1 Puts the word
52. rites information about bytes received from the serial port see section 3 11 e The wait commands waitkeyup waitkeydown and waitserialbyte also log key presses and received serial bytes respectively Writing a log file logstring string Writes the string string to the log file and the MATLAB command window e g logstring Onset logstring 4 Writes the value to the log file and the MATLAB command window This can be useful for logging times associated with specific commands e g Log the time that an image is presented t drawpict 1 Returns the time at which buffer 1 was displayed logstring 4 Write this time to the log file NB It may also be useful to combine a value with a string This can be done using the MATLAB command sprintf to define the string e g string sprintf Image at t 8d t Assigns Image at t to the variable string where the time will be formatted as an numerical value 28 Format of a log file Each line of a log file contains several columns The following lines describe the log file format The first column is the total time in ms since Cogent was started i e since the start_cogent command was executed The second column in square brackets is the time in ms since information was previously logged i e since a log command was previously executed The third column contains either user specified information if using logstring or information i e time
53. rks com access helpdesk help techdoc matlab_env matlab_env shtml 9 2 4 How do I write a script in Cogent 2000 A Cogent 2000 script is a MATLAB script that uses both MATLAB commands and Cogent 2000 commands in sequential order Editing a working script to make it do what you want is usually easier than writing a script from scratch The sample scripts in the Samples sub directory are simple examples of Cogent 2000 scripts that will provide a good starting point for many stimuli Lines in a script preceded by a sign are comments to describe what the script is supposed to be doing These lines are not executed by MATLAB When a command is followed by a the display of any output from that command to the MATLAB command window will be suppressed The example script samplel m is listed with comprehensive annotations in chapter 4 Tutorial and sample scripts To edit this script gt gt edit samplel m NB After editing this script save it with a new name to avoid over writing the original 2 5 How is a Cogent 2000 script structured There are four components to a Cogent script configuration start run commands stop Configure Cogent Involves several commands to configure required Cogent 2000 features e g config_display to configure display config_sound to configure sound config_keyboard config_mouse etc Start Cogent A single command start_cogent that switches MATLAB from running in normal mode to ru
54. s cecceecceesceseeesseceseceseeeeeceeseeceaecneeeteeensaes 12 3 2 Cogent 2000 configuration commands asc cites eosin aaeeas 12 3 2 1 Configuring the display sssenseseesseeseeseesseessesensseessessrssressessresresseeseessee 12 3 2 2 Configuring input and output data sssseesseseesseessessessossessessresseesresressee 14 3 2 3 Configuring the hardware os snc teres eatery capstan es ena ey eiaubbiaees 15 3 3 How do I get data into Cogent 2000 0 eee ceccecsseceteceseeceeeeeeeeeeeecsseeneeeees 17 3 3 1 Using Cogent 2000 commands for loading data eeceesseeeteeeteeeees 17 3 3 2 Using standard MATLAB commands for loading data files 18 3 4 How do I present visual stimuli words pictures etc 0 eeeceeceeeseeseeeeeeees 19 3 5 How do I read keyboard put cwtas sane asdn dau adaseibetada cess 22 3 6 How do I present sound stimuli 05 c s cdscsiens sets avetieseiiaccrceavigssauiedtes 24 Sf How do Tread MOUS Mpt senne iiie i E a Ri 25 3 8 How do I present stimuli at specified times 2 cs5 cc 0sg eateeices Beleatncnt 26 3 9 How do I output data from Cogent 2000 sssssessesesessessessesssessessessrssressessessees 28 3 9 1 Log fless n ao ans a aE EEE E E aT A O TRT AREA Dacha 28 3 9 2 Results FIGS srcnimiiniuieynna i aerated area aaa 29 3 10 How do I read output files and load them into MATLAB osons 30 3 11 How do I control serial input and output 2 0 0 0 eee eeseceteceseceeeeeeseec
55. s all serial bytes arriving at the serial port and empties the corresponding serial buffer in fact waitserialbyte internally executes logserialbytes and readserialbytes e The serial buffer can be cleared before testing for incoming bytes using the command clearserialbytes clearserialbytes p waitserialbyte p time waitserialbyte p time b Empties the serial buffer for serial port number p Waits a time time in ms for any serial byte to arrive at serial port number p When a byte arrives it is logged and the corresponding serial buffer is emptied If no bytes arrive before time ms have elapsed execution of the script continues Waits a time time in ms for a serial byte with value b to arrive at serial port number p During this time all serial bytes arriving at the port are logged and the corresponding serial buffer is emptied If no bytes arrive before time ms have elapsed execution of the script continues 31 e g Wait no more than 2 seconds for a specific value e g 4 to arrive at serial port 1 clearserialbytes 1 Empties serial buffer for serial port 1 waitserialbyte 1 2000 4 Waits no more than 2000 ms for a byte with value 4 During this time all serial bytes arriving at the port are logged and the serial buffer is emptied If a byte with value 4 doesn t arrive within this time execution of the script continues Synchronising Cogent 2000 with an MRI scanner To synchronise Cogent 2000 with hardwa
56. s display configures keyboard configures log file configures mouse configures results file configures serial port configures sound returns number of rows in cogent data file counts the number of key down events read in last call to READKEYS counts the number of key up events read in last call to READKEYS returns the number of READSERIALBYTES copies the content of a display buffer to the screen get data item returns the key IDs and times of key presses read by last call to READKEYS returns key IDs gets the key IDs and times of key releases read in last call to READKEYS or CLEARKEYS returns state of buttons and axis as read by READMOUSE return the mouse map which contains the index of axes and buttons gets mouse state i e value of mouse buttons and axes get recording buffer and return as matrix return values and times of serial READSERIALBYTES sets frequency of sound buffer gets volume of sound buffer lists one line help on all Cogent functions returns the key and time of the most recent key press returns the key and time of the most recent key release returns the value and time of the last byte to be read by READSERIALBYTES loads a text file and return an array of cell containing text field loads a bitmap and places the image in a display buffer loads a wav file into sound buffer transfers all keyboard events read by READKEYS to log transfers serial bytes read by READSERIALBYTES to log file 48 serial p
57. seeeeteeeees 31 3 12 How do I control parallel input and output 0 eee cece ceeeeeeeeeeteeeeteceteeeees 33 atonal and Sample Scripts ansni rnain tereo aana Ea E TREERE ATERN 34 Appendix I List of Cogent 2000 functions sssssesssssesseesseseessseserssressessessressesess 48 Appendix II Further details about serial input ec eeceeccecececeteceeeeeeeeeeeeeeeeees 50 Appendix Ul The cogent data structure is sssc9ssess sieesssaad nia badsveanacdouedd saigrasadl eotaes 51 1 Introduction Cogent 2000 is a MATLAB Toolbox for presenting stimuli and recording responses with precise timing It comprises of high level MATLAB commands that may call robust low level functions A stand alone library of graphics functions is also available allowing the user to present sophisticated graphical stimuli from MATLAB Cogent 2000 provides a flexible and user friendly environment for the design of a wide variety of experiments The manipulation of graphics sound keyboard mouse joystick serial port parallel port subject responses and physiological monitoring hardware are facilitated all with accurate timing and synchronisation For fMRI Cogent 2000 can be configured to receive synchronisation pulses from a scanner allowing experimental timing to be tightly coupled with image acquisition 1 1 Requirements Cogent 2000 runs in the MATLAB http www mathworks com numerical programming environment and should be used with MATLAB 6
58. t typically have decimal addresses of 888 632 and 956 Parallel input and output can be controlled using inportb and outportb NB These functions will cause errors if used without any arguments k inportb port_address Returns the decimal value of the bytes arriving at the port specified by port_address e g k inportb 888 outportb port_address num Send the number num to the specified port num can be a value between 0 and 255 e g outportb 888 10 The example script sample10 m in the Samples sub directory and chapter 4 demonstrates the use of the parallel port 33 4 Tutorial and sample scripts The sample scripts contained in the Samples directory can be used as a tutorial to demonstrate how Cogent 2000 These sample scripts also provde a good a starting point for many stimuli samplel m sample1 m reads a list of words from a data file and presents them visually to the subject at a constant rate using the wait command This script uses a full screen display in direct colour mode with white letters on a black background Comments are preceded by a these lines are not executed by MATLAB The inter trial interval in samplel m will be slightly longer than 2000ms This is because in addition to the specified delays it will take a small but finite time in the order of a few 10s of ms to execute the commands and wait for the next screen refreshes when the stimuli is displayed and cleared This effect can b
59. tring a i Val b i end Note that for string data curly brackets must be used and for numeric values normal round brackets stop_cogent Stop Cogent 18 3 4 How do I present visual stimuli words pictures etc All visual presentation commands require that the display has been configured using config display see 3 2 1 Configuring the display e Visual stimuli are first prepared in memory and then presented onto the subject s monitor Cogent maintains several memory buffers for display each of which holds one screen of data Preparation involves loading image files and or rendering text into one of these memory buffers The subject sees nothing at this stage e The stimuli are then presented by copying the memory buffer to the screen By default the stimuli will be displayed at the centre of the screen but an offset position can also be specified e Copying the memory buffer to the screen occurs within one screen refresh so that the subject sees the whole screen update at once The contents of only one memory buffer can be displayed at any one time on the screen e g Present subject with a fixation point followed by a brief image of a tree preparestring 1 Puts full stop fixation point in the middle of buffer 1 loadpict tree bmp 2 10 5 Puts the tree image in buffer 2 offset from centre by x 10 and y 5 drawpict 1 Presents buffer 1 the fixation point drawpict 2 Presents the tree fixatio
60. ubject When the loop ends it is necessary to execute readserialbytes and logserialbytes to read and log any bytes arriving since the last waitserialbytes SAMPLE9 M Visual presentation synchronised with incoming serial bytes config_display 0 config_serial 40 config_log start_cogent preparestring 1 loadpict ralf bmp 2 clearserialbytes 1 Clear serial bytes buffer Draw fixation point in display buffer 2 i Repeat the following stimulus 10 times Show fixation wait for scanner pulse show stimulus log response for n 1 10 drawpict 1 Wait for a zero at serial port 1 log it then empty serial buffer In the mean time all other incoming bytes are also logged ie any AP o ol subject responses waitserialbyte 1 inf 0 tO time Note the time and show stimulus t drawpict 2 logstring onset log the onset Show stimulus for 1 5 sec then back to fixation waituntil t0 1500 t drawpict 1 logstring offset Log the offset end Read and log any bytes that have arrived since the last waitserialbyte readserialbytes 1 logserialbytes 1 End of experiment stop_cogent 41 sample10 m sample10 m presents visual stimuli and controls the parallel port The names of the picture files and the binary codes used to control the parallel port are read from a data file The binary codes are converted to a decimal using the MATLAB command bin2dec
61. uotes The data file to be loaded filename dat must be an ASCII text file containing word strings e g ONE CAR characters e g a 1 names of images or sound files e g tree bmp camper wav or numerical values e g 1 20 The data must be organised in rows and columns with the same data types within each column Data files can be created using any text editor e g the MATLAB edit command or Windows Notepad In MATLAB the command textread can be used for reading data files organised with the above format a b c textread filename format Data from the file called filename is read into the variables a b c etc The format string gives the expected type of each data item in each line The number of return arguments must match the number of conversion specifiers in the format string e g Consider a data file called testdata dat containing the following lines of text ONE 1 TWO 2 THREE 3 The Cogent commands to load and read this data file are start_cogent Start Cogent a b textread testdata dat s d Read the data file The format specifiers are s for a string and d for a number numrows size a 1 Get number of data rows from the length of the return variable Get first data elements stringl a l Gets data from position 1 1 i e string ONE Vall b 1 Gets data from position 1 2 i e vall 2 Or to read data elements in a loop for i 1 numrows s
62. vailable the display is opened in 16 bit mode UserPort zip This WinZip file is now included with the Cogent 2000 toolbox to enable communication with the parallel port Changes from Version 1 2 to Version 1 19 config _display m Now correctly handles six screen sizes 640x480 800x600 1024x768 1152x864 1280x1024 1600x1200 Changes from Version 1 1 to Version 1 2 logserialbytes m Logs both time of command execution and of arrival of serial bytes logkeys m Logs both time of command execution and of key presses config_display m Now supports palette 8 bit mode start_cogent m Now supports palette 8 bit mode drawpict m Now supports palette 8 bit mode preparestring m Now supports palette 8 bit mode loadpict m Now gives an error warning if the user attempts to use 8 bit mode i e this command does not support 8 bit mode New commands in Version 1 2 preparedartboard m Draws a dartboard paletteflicker m Flickers the dartboard 1 4 Availability The complete Cogent 2000 distribution which includes high and low level commands plus the Cogent 2000 graphics library is available from http Awww vislab ucl ac uk Cogent This Cogent 2000 distribution includes the most recent graphics library that has been tested with the high level Cogent commands The Cogent 2000 graphics library is also publicly available as a stand alone package from http www vislab ucl ac uk CogentGraphics This manual deals with the Cog
63. wav file loadsound camper wav 1 Puts sound in buffer 1 playsound 1 Plays sound in buffer 1 waitsound 1 Waits for the sound in buffer 1 to finish playing NB The first execution of the waitsound command takes longer to run than subsequent executions To work around this problem a sound should be played and the waitsound command used at the beginning of a script before starting timed trials Sounds can also be generated in Cogent 2000 preparesound soundmat l Fills buffer with sound specified by values in the matrix soundmat This matrix must be defined in the MATLAB workspace and should have 1 column for mono sound or 2 columns for stereo sound preparewhitenoise 1000 1 Fills buffer 1 with 1000 milliseconds of white noise preparepuretone 500 1000 1 Fills buffer 1 with a 500 Hz sine wave sound lasting 1000 milliseconds In all cases playsound must used to play the sound in the buffer Other Cogent 2000 sound commands are setsoundfreq setsoundvol setsoundposition getsoundfreq getsoundvol soundposition loopsound stopsound use matlab help command for usage Also see sample scripts sound1 m sound2 m and sound3 m in the Samples subdirectory and in chapter 4 24 3 7 How do I read mouse input Mouse commands require configuration using config_mouse see section 3 2 3 e The mouse can be used to control the flow of the script and to return information about the mouse pointer position on the scree
64. which buffer 1 was displayed Other commands are getmouse getkeyup getkeydown lastkeyup lastkeydown waitkeyup waitkeydown waitserialbyte 27 3 9 How do I output data from Cogent 2000 There are two ways of outputting information from Cogent 2000 using a log file or a results file The difference between these two types of output file is that each line of a log file contains time stamped information in a specific format whereas each line of a results file contains only information specified by the user Results files are compatible with the Cogent 2000 data file format and therefore can also be used as input data files if required 3 9 1 Log files e A log file is specified using the config_log command see section 3 2 2 If no file name is specified the log file will be given a default name Cogent YYYY MM DD HH MM SS log If an existing file name is given the file will be appended e The contents of the log file are also written to the MATLAB command window for online monitoring e If the config_log command is not used log commands will still send output to the MATLAB command window but a log file will not be saved to disk e User specified information can be written to a log file using the logstring command This information can be a string or a numerical value e Other commands that write information to a log file are logkeys which writes information about keyboard activity see section 3 5 and logserialbytes which w
65. y keymap Q amp code 1 Q pressed when P should have been pressed message wrong error 4 lseif key keymap P amp code 2 P pressed when Q should have been pressed message wrong error 5 else Correct key press message correct Ges E 0 error 0 end o Present feedback clearpict 1 preparestring message 1 drawpict 1 wait 1000 Clear screen drawpict 3 Store code reaction time and error code in results file addresults code rt error Wait for 500ms wait 500 end stop_cogent 46 flash30 m flash30 m presents a flashing dartboard for 30 seconds then returns to fixation for 30 seconds The computer display must be set up in palette mode to use the paletteflickerrest command and have the screen refresh frequency set to 60 Hz for 30 seconds of flashing FLASH30 M Flicker dartboard for 30 seconds and return to fixation spot for 30 seconds The computer display must be in palette mode and the refresh frequency 60Hz for 30 flashing config_display 1 1 0 0 0 1 11 Arial 25 4 8 start_cogent ole prepare the dartboard preparedartboard 1 20 200 10 18 Run paletteflickerrest to get fixation spot paletteflickerrest 1 0 0 0 32767 Wait for keyboard input paletteflickerrest 1 4 4 225 32767 wait 30000 end stop_cogent flash3 m flash3 m presents a flashing dartboard for 3 secon

Download Pdf Manuals

image

Related Search

Related Contents

  User Manual Nord Sound Manager  Origin Storage 500GB 2.5" NLSATA    Chapter 1: Desktop CPEo 450 User Guide  印刷業における下請適正取引等の推進のための ガイドライン 平成 22 年  Legamaster 7-195212-01 mounting kit  FOLLETO ROTH ACUMULACION AGUA.qxp  Havis-Shields CD-CL-HID-1 User's Manual  - MEDION USA  

Copyright © All rights reserved.
Failed to retrieve file