Most EPrime2.x scripts will not run on Windows 10 due to a missing (superseded) Direct X display driver component.
The work around for this is as follows:
1. Open your experiment in EStudio.
2. Double click the “Experiment Object” icon in the experiment tree.
3. Select “Display” from the tab at the top.
4. Double click “Display””
5. Set the drop-down box for “Throw error if invalid refresh rate” to ‘NO’.
6. “OK” the settings.
7. Double click “Session Proc”
8. Drag and drop a new “Inline” at the very beginning of of the line.
9. Copy and paste the code below into the Inline.
10. If asked to normalise from Smart quotes say YES
11. The experiment should now work!
Code to use:
‘ Constants to avoid “script too large to be compiled” on experiments with numerous objects Const cSessionProc = ebUCase_S & ebLCase_e & ebLCase_s & ebLCase_s & ebLCase_i & ebLCase_o & ebLCase_n & ebUCase_P & ebLCase_r & ebLCase_o & ebLCase_c Const cErrUnableToFindSessionProc = ebUCase_U & ebLCase_n & ebLCase_a & ebLCase_b & ebLCase_l & ebLCase_e & ebSpace & ebLCase_t & ebLCase_o & ebSpace & ebLCase_f & ebLCase_i & ebLCase_n & ebLCase_d & ebSpace & ebLCase_t & ebLCase_o & ebLCase_p & ebSpace & ebUCase_S & ebLCase_e & ebLCase_s & ebLCase_s & ebLCase_i & ebLCase_o & ebLCase_n & ebUCase_P & ebLCase_r & ebLCase_o & ebLCase_c & ebSpace & ebLCase_o & ebLCase_r & ebSpace & ebLCase_s & ebLCase_t & ebLCase_a & ebLCase_r & ebLCase_t & ebLCase_i & ebLCase_n & ebLCase_g & ebSpace & ebUCase_P & ebLCase_r & ebLCase_o & ebLCase_c & ebLCase_e & ebLCase_d & ebLCase_u & ebLCase_r & ebLCase_e & ebSpace & ebLCase_o & ebLCase_b & ebLCase_j & ebLCase_e & ebLCase_c & ebLCase_t Const cRecalculateRefreshRate = ebUCase_R & ebLCase_e & ebLCase_c & ebLCase_a & ebLCase_l & ebLCase_c & ebLCase_u & ebLCase_l & ebLCase_a & ebLCase_t & ebLCase_e & ebUCase_R & ebLCase_e & ebLCase_f & ebLCase_r & ebLCase_e & ebLCase_s & ebLCase_h & ebUCase_R & ebLCase_a & ebLCase_t & ebLCase_e Const cRecalculateRefreshRateNotFirst = ebUCase_P & ebLCase_l & ebLCase_e & ebLCase_a & ebLCase_s & ebLCase_e & ebSpace & ebLCase_v & ebLCase_e & ebLCase_r & ebLCase_i & ebLCase_f & ebLCase_y & ebSpace & ebLCase_t & ebLCase_h & ebLCase_a & ebLCase_t & ebSpace & ebLCase_t & ebLCase_h & ebLCase_e & ebSpace & ebUCase_R & ebLCase_e & ebLCase_c & ebLCase_a & ebLCase_l & ebLCase_c & ebLCase_u & ebLCase_l & ebLCase_a & ebLCase_t & ebLCase_e & ebUCase_R & ebLCase_e & ebLCase_f & ebLCase_r & ebLCase_e & ebLCase_s & ebLCase_h & ebUCase_R & ebLCase_a & ebLCase_t & ebLCase_e & ebUCase_F & ebLCase_i & ebLCase_r & ebLCase_s & ebLCase_t & ebSpace & ebUCase_I & ebLCase_n & ebUCase_L & ebLCase_i & ebLCase_n & ebLCase_e & ebSpace & ebLCase_a & ebLCase_p & ebLCase_p & ebLCase_e & ebLCase_a & ebLCase_r & ebLCase_s & ebSpace & ebLCase_f & ebLCase_i & ebLCase_r & ebLCase_s & ebLCase_t & ebSpace & ebLCase_i & ebLCase_n & ebSpace & ebLCase_t & ebLCase_h & ebLCase_e & ebSpace & ebLCase_e & ebLCase_x & ebLCase_p & ebLCase_e & ebLCase_r & ebLCase_i & ebLCase_m & ebLCase_e & ebLCase_n & ebLCase_t & ebSpace & ebUCase_S & ebLCase_t & ebLCase_r & ebLCase_u & ebLCase_c & ebLCase_t & ebLCase_u & ebLCase_r & ebLCase_e Const cFlippingRequired = ebUCase_D & ebLCase_i & ebLCase_s & ebLCase_p & ebLCase_l & ebLCase_a & ebLCase_y & ebSpace & ebLCase_r & ebLCase_e & “-” & ebLCase_d & ebLCase_e & ebLCase_t & ebLCase_e & ebLCase_c & ebLCase_t & ebSpace & ebLCase_r & ebLCase_e & ebLCase_f & ebLCase_r & ebLCase_e & ebLCase_s & ebLCase_h & ebSpace & ebLCase_r & ebLCase_a & ebLCase_t & ebLCase_e & ebSpace & ebLCase_n & ebLCase_o & ebLCase_t & ebSpace & ebLCase_s & ebLCase_u & ebLCase_p & ebLCase_p & ebLCase_o & ebLCase_r & ebLCase_t & ebLCase_e & ebLCase_d & ebSpace & ebLCase_s & ebLCase_i & ebLCase_n & ebLCase_c & ebLCase_e & ebSpace & ebUCase_D & ebLCase_i & ebLCase_s & ebLCase_p & ebLCase_l & ebLCase_a & ebLCase_y & ebUCase_D & ebLCase_e & ebLCase_v & ebLCase_i & ebLCase_c & ebLCase_e & ebDot & ebUCase_F & ebLCase_l & ebLCase_i & ebLCase_p & ebLCase_p & ebLCase_i & ebLCase_n & ebLCase_g & ebUCase_E & ebLCase_n & ebLCase_a & ebLCase_b & ebLCase_l & ebLCase_e & ebLCase_d & ebSpace & ebLCase_i & ebLCase_s & ebSpace & ebLCase_n & ebLCase_o & ebLCase_t & ebSpace & ebLCase_l & ebLCase_o & ebLCase_g & ebLCase_i & ebLCase_c & ebLCase_a & ebLCase_l & ebSpace & ebLCase_t & ebLCase_r & ebLCase_u & ebLCase_e & ebDot & ebSpace & ebSpace & ebUCase_D & ebLCase_i & ebLCase_s & ebLCase_p & ebLCase_l & ebLCase_a & ebLCase_y & ebUCase_D & ebLCase_e & ebLCase_v & ebLCase_i & ebLCase_c & ebLCase_e & ebDot & ebUCase_N & ebLCase_a & ebLCase_m & ebLCase_e & ebSpace & “=” & ebSpace Const cUnableToRecalculateRefreshRate = ebUCase_U & ebLCase_n & ebLCase_a & ebLCase_b & ebLCase_l & ebLCase_e & ebSpace & ebLCase_t & ebLCase_o & ebSpace & ebLCase_r & ebLCase_e & ebLCase_c & ebLCase_a & ebLCase_l & ebLCase_c & ebLCase_u & ebLCase_l & ebLCase_a & ebLCase_t & ebLCase_e & ebSpace & ebLCase_r & ebLCase_e & ebLCase_f & ebLCase_r & ebLCase_e & ebLCase_s & ebLCase_h & ebSpace & ebLCase_r & ebLCase_a & ebLCase_t & ebLCase_e Const cRefreshRateFormat = ebDigit_0 & ebDot & ebDigit_0 & ebDigit_0 & ebDigit_0 Const cDotRefreshRate = ebDot & ebUCase_R & ebLCase_e & ebLCase_f & ebLCase_r & ebLCase_e & ebLCase_s & ebLCase_h & ebUCase_R & ebLCase_a & ebLCase_t & ebLCase_e Const cDotRefreshRateValidTime = ebDot & ebUCase_R & ebLCase_e & ebLCase_f & ebLCase_r & ebLCase_e & ebLCase_s & ebLCase_h & ebUCase_R & ebLCase_a & ebLCase_t & ebLCase_e & ebDot & ebUCase_V & ebLCase_a & ebLCase_l & ebLCase_i & ebLCase_d & ebUCase_T & ebLCase_i & ebLCase_m & ebLCase_e Dim theProcedure As Procedure Set theProcedure = CProcedure(Rte.GetObject(cSessionProc)) ‘ In the event this error fires the main procedure is not SessionProc then the experiment author ‘ can update the value Of cSessionProc To the name Of the first Procedure In your Structure If theProcedure Is Nothing Then Rte.AbortExperiment -999, cErrUnableToFindSessionProc ‘ Determine if the RecalculateRefreshRate is the first item to run in the experiment Structure Dim bRecalculateRefreshRateFirst As Boolean If theProcedure.ChildObjectCount > 0 Then If theProcedure.GetChildObjectName(1) = cRecalculateRefreshRate Then bRecalculateRefreshRateFirst = True End If If Not bRecalculateRefreshRateFirst Then Rte.AbortExperiment -999, cRecalculateRefreshRateNotFirst ‘ Enumerate through open display devices and determine if the refresh rate needs recalculated Dim nDevice As Long For nDevice = 1 To Rte.DeviceManager.GetDeviceCount Dim theDisplayDevice As DisplayDevice Set theDisplayDevice = CDisplayDevice(Rte.DeviceManager.GetDevice(nDevice)) If Not theDisplayDevice Is Nothing Then If theDisplayDevice.GetState() = ebStateOpen Then ‘ The recalculation workaround is only supported when flipping If Not theDisplayDevice.FlippingEnabled Then Rte.AbortExperiment -999, cFlippingRequired & theDisplayDevice.Name ‘ Do we need to recalculate the refresh rate? If theDisplayDevice.CalculatedRefreshRate < 50 Then ‘ Force the screen to paint something (must be done twice) theDisplayDevice.Canvas.SetPixel 0, 0, theDisplayDevice.Canvas.GetPixel(0, 0) theDisplayDevice.Canvas.SetPixel 0, 0, theDisplayDevice.Canvas.GetPixel(0, 0) ‘ Recalculate the refresh rate theDisplayDevice.CalculateRefreshRate 1000 End If ‘ Validate that we have a valid refresh rate before proceeding If theDisplayDevice.CalculatedRefreshRate < 50 Then Rte.AbortExperiment -999, cUnableToRecalculateRefreshRate ‘ Log the recalculated refresh rate and when so that data prior to the time can be thrown out c.SetAttrib theDisplayDevice.Name & cDotRefreshRate, Format(theDisplayDevice.CalculatedRefreshRate, cRefreshRateFormat) c.SetAttrib theDisplayDevice.Name & cDotRefreshRateValidTime, Clock.Read End If End If Next