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
biac:experimentalcontrol:biac6hardware [2024/04/15 19:23]
cmp12 [BIAC6 Screen Configuration]
biac:experimentalcontrol:biac6hardware [2024/04/16 14:21] (current)
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>+Matlab: 
 +<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.1713209034.txt.gz · Last modified: 2024/04/15 19:23 by cmp12