fORP User Guide
INTRODUCTION
The fORP -- Fiber Optic Response Pad -- is a light based subject response device. All response pads and fiber optic bundles are completely non-metallic and non-electronic. The intended use is in MRI, MEG or other environments where metal or electronics could hinder data acquisition, degrade image quality, or pose safety risks.
Each system has the following components:
Electronic Interface
- Front panel has 5 connectors and a switch
- Rear panel has a single optical connector
- Side has four indicator LEDs
Removable Fiber Optic Bundle
- 8 fiber bundle for 4 button handhelds
- 12 fiber bundle for 8 button and continuous handhelds
Response Pad (with 10 foot long bundle)
Includes one or more of the following:
- Single rectangular box with an inline button pattern
- Two rectangular boxes (8 buttons) with 36-inch span
- Single ergonomic box with diamond button pattern
- Two ergonomic boxes bimanual (4 buttons) with 36-inch span
- Joystick with 2 buttons
- Trackball with 2 buttons
- 5 button stick handheld button box
Power supply
Includes one of the following:
- Standard 9 volt unregulated supply for 120 volts
- European 9 volt unregulated supply for 240 volts
Cables
Includes one or more of the following:
- Custom Serial cable
- USB cable
- Custom Parallel cable
SET UP
To test the optical part of the system without a computer:
- Attach removable fiber optic bundle to the rear panel of the interface. Note the circular connector is keyed for proper alignment.
- Connect the handheld to the other end of the removable bundle. Note: Do not use the fORP without the long fiber bundle in place-- although the connectors will mate without the long bundle, the light signals will be too strong and the results will be unreliable.
- Turn the switch on the front panel to position 0 (use the position 3 for the Trackball, position 5 for the Joystick, and position 6 for the 8-button handheld).
- Plug in the power supply and attach to interface.
The side LEDs should light when the corresponding button is pressed (only the right handheld of the 8-button bimanuals). This means the optical part of the system is working properly.
To make the connection to a computer:
- Attach the removable bundle and handheld to the interface.
- Set the program switch for your specific application and handheld.
- Plug in the power supply.
- Attach the interface to the computer. interface front panel (from left to right).
| |
| Interface front panel | Interface rear panel |
| Connectors from left to right: | |
- BNC: TTL (trigger) Input
- Mini DIN8: Serial Output
- USB Type B: USB Output
- 10/10 Mod: TTL Outputs
- 8 Position Switch: Program Selector
- Power: 5V Regulated Supply (ALT: 9V for 220/240)
| |
HANDHELDS
This table shows the modes of the interface unit that correspond to the variety of handheld devices.
| Program switch | Serial output | USB output |
| 2- and 4-Button Handheld Devices | | | |
| 0 | Standard | Standard |
| 1 | E-Prime | Mac |
| 2 | Bitwise | Non Auto-Release |
| 4 | Superlab | Numeric |
| | | |
| 5- and 8-Button Handheld Devices | | | |
| 6 | Standard | Standard | |
| | | |
| Trackball | | | |
| 5 | Serial Mouse | HID Gamepad | |
| | | |
| Joystick | | | |
| 7 | Programmers Joystick |
| 3 | Serial Mouse | HID Gamepad |
Joystick notes:
This handheld enumerates as a USB HID gamepad with x, y control and two buttons. The red and green side LEDs on the interface do light when the buttons are pushed. It also works as a three button serial mouse with the trigger appearing as a third button.See Appendix A for more information on Joystick setup and use.
Set Up: The joystick handheld has an initialization period of 5 seconds when the interface is plugged in. During this time the joystick should be on a level surface with one of the center pads in place. It should not be moved. The firmware reads the light levels in the position and uses it as the center. If its movement appears to be erratic or off center, reset the joystick by unplugging the power for a few seconds and reinitialize it more carefully. The joystick (HH-Joy-4) handheld has both a finger stick and hand grip. To use the hand grip slide into place over the finger stick. There two different centering pads: the gray pad is for use with the finger stick. The black pad provides more resistance and is for use with the hand grip. Use the o-ring to keep the pads in place.
Trackball notes:
The Trackball handheld enumerates as a USB HID gamepad with x, y control and two buttons. The red and green side LEDs on the interface do light when the buttons are pushed. The trackball works best with a light touch. The ball can be removed for cleaning. Try to keep the trackball as clean as possible, because any build up of dirt and dust on the ball and internal parts will impede its movement.
COMPUTER CONNECTION
Use the following sequence in setting up:
- Choose which output to use.
- Turn program switch to the correct position.
- Attach power supply to interface.
- Attach interface to computer and fORP.
Interface Outputs
The fORP has been designed to work with most software packages. The table below gives the matrix on connections to the computer.
| forp Interface Port | Mini DIN8 | USB Type B | 10/10 Modular |
| Computer Port | Serial | USB Type A | Parallel or I/O Port |
| Needs to be configured? | Yes | Usually No | Yes |
| Cable | Mini DIN8 to DB9 | Type A to Type B | 10 Pin Jack to DB25 |
| Computer Type | PC | PC, Macintosh | PC |
- Use the Mini DIN8 to connect to the serial port on a PC computer.
- Use the USB to connect to a Macintosh or PC computer.
- Use the 10/10 Modular to connect the TTL outputs to a parallel port on a PC computer.
Detailed technical information about each output type can be found below.
fORP Interface Switch Positions
For each output there are 8 possible switch positions.
| Interface Switch Positions |
| Switch Position | Serial | USB | TTL |
| 0 | Standard | Standard | Standard |
| 1 | E-Prime | Mac | Inverted |
| 2 | Bitwise | Non Auto-Release | |
| 3 | Trackball | Trackball | |
| 4 | Superlab | Numeric | |
| 5 | Joystick | Joystick | |
| 6 | 8 Button | 8 Button | 8 Button |
| 7 | Special | | |
The switch has a small arrow which points to a number as is shown below. Use a small flat headed screw driver to turn the switch to other positions. The interface must be reset each time the switch is changed which is done by unplugging the interface for a few seconds.
SERIAL PORT fORP USE
To connect the fORP to the serial port on your computer use the cable which has a small round connector on one end (a Mini DIN-8) and a D-shaped connector on the other end (a DB-9P). Contact us for a replacement or make your own (the wiring pinout of the cable is described in Appendix C).
Configuring the Serial Port
There are 3 different baud rates - 19.2k , 57.6k, or 1200 - depending on the switch position.
| Serial Port Settings by Program Number |
| Switch Setting | Baud | Bits/word | Parity | Stop bits |
| 0 | 19200 | 8 | N | 1 |
| 1 | 19200 | 8 | N | 1 |
| 2 | 57600 | 8 | N | 1 |
| 3 | 1200 | 8 | N | 1 |
| 4 | 19200 | 8 | N | 1 |
| 5 | 1200 | 8 | N | 1 |
| 6 | 19200 | 8 | N | 1 |
| 7 | 57600 | 8 | N | 1 |
Serial Port Program 0: Standard
Port settings: 19200,8,N,1
In this mode, the fORP sends an ASCII code each time a button is pushed, and once for each TTL trigger that is received.
| Serial Data by Button Press |
| Button | ASCII | Hex |
| Blue | 1 | 31 |
| Yellow | 2 | 32 |
| Green | 3 | 33 |
| Red | 4 | 34 |
| Trigger | 5 | 35 |
Serial Port Program 1: E-Prime
Port settings: 19200,8,N,1
E-Prime is a program sold by Psychology Software Tools, and the name is a registered trademark. The fORP works well as a serial response device with E-Prime. Many users also use the fORP through the USB Port. If you are having trouble getting started, please see the E-Prime user notes in Appendix B.
In this mode, the fORP sends a constant stream of bytes, 800 times per second. If no buttons are pressed, null bytes (all bits low) are sent. The fORP uses the bits in the following way.
| Serial Data for Eprime |
| Bit | Use |
| 0 | Blue |
| 1 | Yellow |
| 2 | Green |
| 3 | Red |
| 4 | Trigger |
| 5 | |
| 6 | |
| 7 | |
Serial Port Program 2: Bitwise
Port settings: 57600, 8, N, 1
The same bit assignment is used as in the E-Prime case above, but bytes are only sent when there is a change in button or trigger status.
| Serial Data for Examples for Bitwise |
| Bite | Meaning |
| 0000 0010 | Yellow |
| 0000 0110 | Green, yellow |
| 0000 0000 | Nothing |
| 0001 0000 | Trigger |
| 0000 0000 | Nothing |
| 0000 1000 | Red |
| 0000 1101 | Red,green, blue |
| 0000 1111 | Red, green,yellow,blue |
| 0001 1111 | Trigger and all buttons |
| 0000 1111 | All buttons |
| 0000 0010 | Yellow |
| 0000 0000 | Nothing |
Serial Port Program 3: Trackball as a Serial Mouse
Port settings: 1200,8,N,1
The trackball mimics a standard serial mouse and is able to act as the pointing device under Windows. Windows checks for a mouse connected on the serial port on power up and when asked to looked for new hardware. The first time the trackball is used it will need to be added as new hardware and you may need to tell the program to add the serial mouse driver. Once the trackball has been connected and installed you will be able to move the cursor using the trackball. The speed and sensitivity of the trackball can then be adjusted in the control panel menu (Mouse-Pointer Options-Motion).
Serial Port Program 4: Superlab
Baud rate: 19200
Superlab is a registered trademark of Cedrus Corporation. A number of Superlab customers use the forp as they would the RB-6XX series of response pads. The fORP sends an ASCII code each time a button is pushed, and once for each TTL trigger that is received. In a similar fashion to the E-Prime case, individual bits within the transmitted bytes are assigned for each button although the bits were assigned differently: To use this output with Superlab be sure to select the RB-610 (it will not work properly with the RB-410 module). (This information is valid for Superlab versions up to at least 2.0.4).
| Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| Use | Red | Blue | Green | Yellow | Trigger | | | |
Serial Port Program 5: Joystick as Three-Button Serial Mouse
Baud rate: 1200
The joystick mimics a 3 button serial mouse and is able to act as the pointing device under Windows. Windows checks for a mouse connected on the serial port on power up and when asked to look for new hardware. The first time the joystick is used it will need to be added as new hardware and the user may need to tell the program to add the serial mouse driver: Control Panel --> Add Hardware Once the joystick has been connected and installed you will be able to move the cursor using the joystick. The speed and sensitivity of the joystick can then be adjusted in the control panel menu:Control Panel --> Mouse --> Pointer Options --> Motion
The trigger pulse from the scanner will look like the third button is being pushed.
See Appendix A for more information on Set Up and Use.
Serial Port Program 6: 8 Button Handhelds
Baud rate: 19200
The program is similar to position 0, where the fORP sends an ASCII code each time a button is pushed, and once for each TTL trigger that is received, except that there are 4 additional buttons .
The side LEDs will only light for right handed button pushes (1 to 4). This is a good way to distinguish between the right and left handheld.
| Serial Data by Button Press |
| Left | ASCII | Right | ASCII |
| Blue | 6 | Blue | 1 |
| Yellow | 7 | Yellow | 2 |
| Green | 8 | Green | 3 |
| Red | 9 | Red | 4 |
| | | Trigger | 5 |
Serial Port Program 7: Programmers Joystick
Baud rate: 57600
With the rotary switch set to position 7, the serial output from the fORP interface is: higher baud (57600) higher resolution (11 bits in x and y) not compatible with standard built-in drivers (such as MOUSE.SYS). These qualities give it higher possible performance than is available using the position 5 output, but put some burden on the user to read and interpret the data.
In this mode 4 bytes are sent continuously. The packet structure is as follows:
| Byte | d7 | d6 | d5 | d4 | d3 | d2 | d1 | d0 |
| 1 | 1 | lb | mb | rb | y10 | y9 | y8 | y7 |
| 2 | 0 | x6 | x5 | x4 | x3 | x2 | x1 | x0 |
| 3 | 0 | y6 | y5 | y4 | y3 | y2 | y1 | y0 |
| 4 | 0 | 0 | 0 | 0 | x10 | x9 | x8 | x7 |
| lb | left button |
| mb | middle button (asserted when a TTL trigger is received) |
| rb | right button |
| x10...x0 | 11 bit word for X position |
| y10...y0 | 11 bit word for Y position |
C Code Sample
Here is one way to unscramble the x,y portion of the received bytes:
int main_higher_res_4byte(int *sPort) {
int bytes_expected;
int result;
unsigned char c[10];
short int x,y;
printf(\n - This expects fast serial data similar to mouse packets -\n);
setBaud(*sPort, B57600);
printf(Baud set to 57600 for this mode\n);
bytes_expected = 4;
while(1) {
result = sPortRead(*sPort, c, bytes_expected);
if(result!=-1) {
x = (c[1] & 0x7f) | ((c[3] & 0xf) << 7);
if(x>0x3ff) x = x - 0x7ff;
y = (c[2] & 0x7f) | ((c[0] & 0xf) << 7);
if(y>0x3ff) y = y - 0x7ff;
printf( %02x %02x %02x %02x [%d] [%d]\n, c[0],c[1],c[2],c[3], x, y);
}
}
return 1;
}
USB PORT fORP USE
To connect the fORP to the USB port on your computer use the cable which has a USB type B connector on one end and a USB type A connector on the other end. Contact us for a replacement or buy one at any computer store.
*Configuring the USB Port *
If you have a USB port on your computer, using the fORP button pads should be as simple as connecting the USB cable between the fORP and your computer. Once connected, the fORP will appear to the computer as another keyboard, so button presses will be echoed in the active window on the display. For instance with the switch in position 0, if you are using a word processing program, you should see characters appear (r for red, b for blue, etc.) when the buttons are pressed. (In programs 3 and 5, the device will enumerate as a game pad. )
USB Program 0: Standard PC
In this mode the fORP is enumerated automatically as a USB HID (Human Interface Device) keyboard by the computers operating system. HID keyboards behave in well-defined ways and are widely recognized by all modern operating systems. Button presses will generate keyboard keycodes:
| USB Data by Button Press |
| Button | Keycode |
| Blue | b |
| Yellow | y |
| Green | g |
| Red | r |
| Trigger | t |
USB Program 1: Standard Mac
The fORP enumerates as a USB HID keyboard, with the following keycodes. The "apple + \" is needed in some Macintosh programs for the trigger.
| USB Data by Button Press |
| Button | Keycode |
| Blue | b |
| Yellow | y |
| Green | g |
| Red | r |
| Trigger | apple + \ |
USB Program 2: Non-Auto-Release
The keycodes are the same as program 0, but the release code is not sent until the key is released. This output can be used to give the duration of the button press. This output is useful if both press and release is of value in the experiment.
USB Program 3: Trackball
In this position the trackball enumerates as a USB HID gamepad with x, y control and two buttons. The red and green side LEDs on the interface light when the buttons are pushed. There is no initialization period with the trackball. Use: Control Panel --> Game Controllers , to check the trackball function under Windows.
USB Program 4: Standard PC Numerical
| USB Data by Button Press |
| Button | Keycode |
| Blue | 1 |
| Yellow | 2 |
| Green | 3 |
| Red | 4 |
| Trigger | 5 |
USB Program 5: Joystick
In this position the joystick enumerates as a USB HID gamepad with x, y control and two buttons. The red and green side LEDs on the interface light when the buttons are pushed. To test under windows, use: Control Panel --> Game Controllers.
See Appendix A for more information about the Joystick Set Up and Use.
USB Program 6: 8 Button Handhelds
The side LEDs will only light for right handed button pushes (1 to 4). This is a good way to distinguish between the right and left handheld.
| USB Data by Button Press |
| Left | Keycode | Right | Keycode |
| Blue | 6 | Blue | 1 |
| Yellow | 7 | Yellow | 2 |
| Green | 8 | Green | 3 |
| Red | 9 | Red | 4 |
| | | Trigger | 5 |
PARALLEL PORT (or TTL) fORP USE
To connect the forp to the Parallel port on your computer use a specially made cable which connects to the forp's 10/10 Modular connector. This connector has 10 pins. Pins 1 - 4 correspond to the response pads buttons (pins 7-10 to the extra 4 buttons on 8 button bimanual). Pin 5 is for the trigger. This output gives very accurate responses and it can be used with systems like Neuroscan. It can also be used with a standard I/O computer board. The following table describes the pins of the 10/10 Mod connector (the pins are numbered from left to right):
TTL Program 0: Standard
They are normally low, and are driven high (+5) for the duration of the button press. The pin is high whenever the button is depressed. It returns to 0 when the button is released. More than one button can be pushed at a time and they are independent of the trigger.
TTL Program 1: Inverted
They are normally high, and are driven low (0) during a button press. The pin is low whenever the button is depressed. More than one button can be pushed at a time and they are independent of the trigger.
TTL Program 6: 8 Button Handhelds
This is the 8 button handheld position. They are normally low, unless driven high (+5) during a button press. The pin is high whenever the button is depressed. More than one button can be pushed at a time and they are independent of the trigger.
TROUBLESHOOTING
Things to try when your system doesn't seem to be working:
- Make sure the 8-position switch on the front panel is in the position needed for the output desired. For example, if you used position 2 for the serial output, you will need to set it to a valid USB setting. Reset the interface each time the position is changed by disconnecting the power.
- The removable bundle should be installed. The system will not work properly if it is not used.
- To check the optical part of the system, detach the interface from the computer. The side LEDs should light when the corresponding button is pushed. If this is not the case, reset the interface by detaching from the power supply for a few seconds. After resetting the system should function correctly.
- To check the computer connection, first use the Position 0 program for the output you are using. See the appropriate section above for testing instructions.
- If your system is still having a problem please let us know and we will work with you to fix it as quickly as possible. Your system is under warranty for 1 year from date of purchase. During that time we will fix any malfunction free of charge. We will fix any damage you cause at a reduced charge. After one year we will charge parts and labor for the repair.
APPENDIX A / Joystick Set Up and Use
Grip:
The joystick (HH-Joy-4) handheld has both a finger stick and hand grip. To use the hand grip slide into place over the finger stick. There are two different centering pads: the gray pad is for use with the finger stick. The black pad provides more resistance and is for use with the hand grip. Use the o-ring to keep the pads in place. To change the pads, remove the hand grip (if it is installed) and roll the o-ring up over the stick. It works best if you do this on two sides. Replace the pad and then the o-ring. The joystick can be used without any pad in place for force-free movement. Replace the pad for storage and to initialize the joystick. When changing pads try to minimize torque on the joystick components.
Switch Positions:
The main switch position for the joystick is position 5. This gives both serial and USB output. There is an additional serial output on position 7 which is called Programmers Joystick. See the description of this output in the section on Serial Port outputs. The switch should be set to position 5 (or 7) before plugging in the power and initializing the joystick.
Initialization:
The joystick handheld has an initialization period of 5 seconds when the interface is plugged in. During this time the joystick should be on a level surface with one of the center pads in place. It should not be moved. The firmware reads the light levels in the position and uses it as the center. If its movement appears to be erratic or off center, reset the joystick by unplugging the power for a few seconds and reinitialize it more carefully. This happens every time the interface is plugged in, so if the interface loses power, the joystick will automatically re-initialize when the power returns.
Serial Mouse and USB Gamepad:
The Joystick has been tested with Linux and Windows XP. SERIAL: The joystick mimics a 3 button serial mouse. Windows checks for a mouse connected on the serial port on power up and when asked to looked for new hardware. The first time the joystick is used it will need to be added as new hardware and may need to tell the program to add the serial mouse driver: Control Panel --> Add Hardware. Once the joystick has been connected and installed you will be able to move the cursor using the joystick. The speed and sensitivity of the joystick can then be adjusted in the control panel menu: Control Panel --> Mouse --> Pointer Options --> Motion. The trigger pulse from the scanner will look like the third button is being pushed. USB: The joystick enumerates as a USB HID gamepad with x, y control and two buttons. The red and green side LEDs on the interface light when the buttons are pushed. (To test in Windows, select: Control Panel --> Game Controllers.)
Be gentle:
This joystick has been designed to be robust and give years of dependable use, but there are occasions where some care should be taken to avoid damage:
- During changes of the centering pads, removal of the O-ring can strain the internal plastic parts if not done carefully. B. During dramatic tasks, especially involving children subjects, there may be a tendency for the joystick to be slammed from one extreme to another. As an all-plastic device, the joystick cannot tolerate an endless amount of this type of use. It may make sense to window the data from the joystick, or the behavior of the feedback, in such a way that subjects learn there is no advantage to extreme motions. If you think this will be a problem in your lab, please contact us and we will try to help find a solution.
APPENDIX B / E-Prime User Notes
Our customers report to us that they are able to use E-Prime (from Psychology Software Tools). This is an attempt to pass along the tips that they have shared with us.
General
The E-Prime program 1 on the forp transmits serial data continuously, even if no buttons are pressed, in order to mimic the output from PSTs own serial response box. This makes it different from the standard (position 0) ASCII-output fORP which only sends bytes when there is a change in any of the buttons, or when a TTL trigger is received. The E-Prime version is also different from the standard one in that the buttons are mapped to individual bits in the transmitted byte, so it is possible to detect combinations of simultaneous button presses. This is more informative than the ASCII output, but can be harder to test initially because the resulting data are binary and cannot, for instance, be looked at easily with a terminal emulator program connected to the serial port.
Set-up Steps
- Be sure you are using the full 1.0 version of E-Prime. Users have had difficulty with both the demo version and with the utility program that is available from the PST web site.
- With the fORP powered on and working correctly, connect a serial cable from the Mini DIN8 connector of the fORP to the serial port you will use on the computer.
- Add the port device in the experiment. (Double clicking the root of the experiment will show you the properties of the experiment where you can add devices.) If you are using the first serial port (COM1), the following settings should be used: Address=&H3F8 Size=8 Invert=0 Mask=-1
- If the address above does not work, check your computers hardware device setting for COM1 (or whichever COM port you are connected to). On the Resources tab you can find the correct address.
- Check the values read from the 4 buttons and the trigger. They should be: Blue (1), Yellow (2), Green (3), Red (4). Trigger pulse has the value of 5.
- A user noted that the FI/FO buffers should be turned off.
Please contact us if you are still have trouble getting your forp to work with E-Prime. We would also be grateful for any pointers you have that might help other fORP users.
APPENDIX C / Cable Details
Serial Cable Details
Here are the wiring details for the serial cable we provide:
| Serial Cable Pin Out |
| DB-9 Pin | Mini DIN8 Pin | Function |
| 2 | 3 | Data from fORP to host |
| 3 | 8 | Data from host to fORP (not used) |
| 5 | 4 | Signal ground |
| 7 | 1 | RTS |
| 1,4,6,8,9 | 2,5,6,7 | No Connection |
Note: the connector cases are tied together through shield wire.
*Testing the Serial Connection *
A good way to test that the serial connection is working correctly is to use a terminal emulator program (such as Hyperterminal) to check the fORP output with the program switch at position 0. Make sure the port is set to the one the cable is connected to, and that the port settings are: 19200,8,N,1 (57600, 8, N, 1 for Position 2). You should see a single character for each button press.
USB Cable Details
The USB cable is a standard cable available at any computer store. It is USB type B (forp connector) to USB type A (computer connector).
To test that the USB connection is working correctly use a note pad or word processing program to check the fORP output with the program switch at position 0. Button presses on the handheld should be shown on the screen as b, y, g, or r.
10/10 Mod Cable Details
We supply the cable upon request. It can be built according to the users specifications for use with a parallel port. We normally supply it with the connections to a 25 pin D-connector shown in the table below.
Testing the 10/10 Mod connection requires a cable from the connector on the forp. Avoid directly touching the pins inside the connector because they are easily shorted to one another. With the program switch at position zero (pointing towards the 9 oclock position). button presses on the handheld should drive the corresponding pin go high (+5).
Looking into the connector the pins correspond to the following output from left to right:
| Pin | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| Button | Red1 | Green1 | Yellow1 | Blue1 | Trigger | GND | Red2 | Green2 | Yellow2 | Blue2 |
When a button is depressed the corresponding pin should be driven high in position 0 (position 6 for the 8 button handhelds). The pin will remain high until the button is released.