User Tools

Site Tools


biac:experimentalcontrol:biac6hardware

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
biac:experimentalcontrol:biac6hardware [2024/04/15 19:23]
cmp12 [BIAC6 Screen Configuration]
biac:experimentalcontrol:biac6hardware [2024/04/15 20:26]
cmp12 [BIAC6 Screen Configuration]
Line 127: Line 127:
 A **CLONED** configuration with goggles off, will result in a single monitor to programs like PsychToolbox and PsychoPy. A **CLONED** configuration with goggles off, will result in a single monitor to programs like PsychToolbox and PsychoPy.
  
 +PTB:
 <code matlab> <code matlab>
  
 >> run SetupPsychtoolbox.m >> run SetupPsychtoolbox.m
->> Screen('Screens')+>> screens = Screen('Screens')
 ans = ans =
      0      0
            
 +  % there is only a single screen
 +
 +  % you can use the first index, or min / max functions because there is only 1 option     
 +>> screens(1)
 +ans =
 +     0
 +>> min(screens)
 +ans =
 +     0
 +>> max(screens)
 +ans =
 +     0
 +
 +
 +
 +</code>
 +
 +PsychoPy:
 +<code python>
 +
 +import pyglet
 +
 +display = pyglet.canvas.get_display()
 +screens = display.get_screens()
 +screens
 +>>[Win32Screen(x=0, y=0, width=1920, height=1080)]
 +
 + # screens[0] is the one and only screen
 +
 </code> </code>
  
-Any **EXTENDED** configuration will result in multiple monitors being available  
  
 +Any **EXTENDED** configuration, or configuration with goggles will result in multiple monitors being available.
 +  
 +PTB:
 <code matlab> <code matlab>
  
 >> run SetupPsychtoolbox.m >> run SetupPsychtoolbox.m
->> Screen('Screens')+>> screens = Screen('Screens')
 ans = ans =
              2              2
                      
    %in this case    %in this case
-   % 0 - the full display across the extended desktop +   % 0 - the full extended display across the desktop 
-   % 1 - screen #1  +   % 1 - screen #1 only 
-   % 2 - screen #2 +   % 2 - screen #2 only
        
 +   % because matlab is indexed a 1, you need to select the correct index to get to screen #1
 +>> screens(2)
 +ans =
 +     1
 +     
 +     
 </code> </code>
  
- +PsychoPy:
-For instance PsychoPy the first screen would be #0 +
 <code python> <code python>
  
Line 160: Line 197:
 display = pyglet.canvas.get_display() display = pyglet.canvas.get_display()
 screens = display.get_screens() screens = display.get_screens()
-screenNum = 0 +screens 
-#get resolution of screen 0 +>>[Win32Screen(x=0, y=0, width=1920, height=1080), Win32Screen(x=1920, y=0, width=1920, height=1080)]
-win_res [screens[screenNum].width, screens[screenNum].height]+
  
-#set the output to always go to screen 0 + screens[0] is the first screen 
-win = visual.Window(size=win_res, screen=screenNum, allowGUI=True, + # screens[1] is the second screen because python is zero indexed
-                    fullscr=True, monitor=exp_mon, units='height', +
-                    color=(0.2, 0.2, 0.2)) +
- +
-msg1 = visual.TextStim(win, text=u"Hello world!", pos=(0,0)) #centered +
-msg1.draw() #draw it +
-win.flip() #put it on the screen +
-core.wait(5) #wait 5 seconds +
-win.close() #close it +
-core.quit() #stop+
  
 </code> </code>
  
-matlab PTB the first screen would be #1 ( matlab is indexed starting at 1 instead of 0 )+You need to code your tasks to send to the specific screen you want your subjects to see.  If they are viewing the projector, then they can only single a screen at a time.  The default is to send the first display to the projector.  
-<code matlab>+  * screen 0 in matlab **only** if its a **cloned** display, or screen 1 if it is extended/goggles 
 +  * screen 0 in PTB
  
-%configure the first screen is psychtoolbox 
-screenNumber = 1;     
-[Window,var.winrect] = Screen('OpenWindow',screenNumber,0); 
  
 +One of the best ways to account for a variable to setup in matlab would be to code the task to work with either.
  
-</code>+<code matlab> 
 +screens=Screen('Screens');
  
 +%if there is only 1 entry
 +if (length(screens) == 1)
 +    %use it
 +    S.screenNumber = min(screens);
 +%but if there are more, use #1 explicitely
 +elseif (length(screens) > 1)
 +    S.screenNumber = screens(2);
 +    %same as S.screenNumber = 1;
 +end 
  
 +[S.Window, S.screenRect]=Screen('OpenWindow',S.screenNumber, S.screenColor,[],[],2,[],[]);
 +</code>
  
  
biac/experimentalcontrol/biac6hardware.txt · Last modified: 2024/04/16 14:21 by cmp12