Millisecond Forums

Inquisit Parallel Port Monitor Crashing

https://forums.millisecond.com/Topic7439.aspx

By Alexander-Wright - 2/18/2012

Hi,


I have a machine with both Inquisit 2 and 3 installed on it, and am trying to get Inquisit 3 to send signals to MATLAB on another machine. When trying to send or receive signals via the parallel port monitor, the program crashes and Windows tells me the program needs to close.


Inquisit 2 can send and receive signals using its own parallel port monitor just fine, and I can send and receive signals using an external program called parmon. The port is LPT1 and the address I am using is 378 (data). I am using these settings for all the above mentioned programs.


Does anyone know what the issue could be?


Thanks in advance,


  Alex.

By Dave - 2/18/2012

This does sound like a bug, however, have you made sure you've got the latest Inquisit 3 build available from millisecond.com installed?

By Alexander-Wright - 2/18/2012

Thanks for the reply, Dave.


The version of Inquisit was the latest one when I downloaded it 3 weeks ago - I'm assuming there have been no major updates since then?


What can I do about it if it is a bug?


Thanks,


  Alex.

By Dave - 2/18/2012

The version of Inquisit was the latest one when I downloaded it 3 weeks ago - I'm assuming there have been no major updates since then?


You should have the latest build then.


What can I do about it if it is a bug?


Not much, other than to wait for us to track the issue down and fix it (I'll file a bug report for this ASAP). What you can try, though, is to check whether the issue also persists when sending port signals via script in Inquisit 3. I.e., test port communication via Inquisit 2's port monitor (which apparently works fine on your system), set up your <port> elements, etc. accordingly, run script in Inquisit 3 and see if signals get sent out okay. Another thing you can try is dropping an alternative port interfacing dll (inpout32.dll; Inquisit currently comes with / uses ntport.dll by default) in the Inquisit 3 installation directory and see if that plays nice with the port monitor. See https://www.millisecond.com/forums/Topic4368.aspx#4368. Edit: Damn, that forum link is down. Dlls are available via http://www.logix4u.net/parallel-port (official site).

By Alexander-Wright - 2/19/2012

Hi Dave,


Thank you for the reply.


I've tried the logix4u.net website but the link to the .zip download keeps taking me back to the index page for some reason.


I've tried running an experiment in Inquisit 3 to check whether the signals send and it doesn't crash. However, the port signals are left unchanged throughout the experiment (set to "00000000"). I'm unsure as to whether this is because of my code or a bug. I don't get any errors when running the experiment but to be sure, I've pasted the code I use below. As you can see, I've programmed each signal as a separate port element:


<port ETSignalFixation>


/ port = lpt1


/ subport = data


/ items = ("00111111")


</port>


 


<port ETSignalFaces>


/ port = lpt1


/ subport = data


/ items = ("01111111")


</port>


 


<port ETSignalProbe>


/ port = lpt1


/ subport = data


/ items = ("11111111")


</port>


 


 



I've then programmed these signals to appear at separate points in each trial:



 


 


<trial AN_congruent_03>


       


        / pretrialpause = 250


        / validresponse = (10, 8, 14, 12, 13, 11, 9, 7)


        / correctresponse = (14, 12)


        / stimulustimes =


                [1 = ETSignalFixation, fixation_pic; 300 = ETSignalFixation, fixation_pic_red;


500 = blank; 517 = ETSignalFaces, angry_pic_left03, neutral2_pic_right03; 1017 = blank;


1034 = replace(probe_left), ETSignalProbe]


        / posttrialpause = 250


</trial>











Thanks again,






  Alex.


 


By Dave - 2/19/2012

You can use this direct download link to get the alternative dll: http://logix4u.net/InpOutBinaries.zip. Your Inquisit code looks okay to me, have you tried running it in Inquisit 2.0, too? Same result or are signals getting sent as expected?

By Alexander-Wright - 2/20/2012

Hi Dave,


 


I’ve tried running the experiment in Inquisit 2 and get the same result. That is, signals are not being sent as expected. Why might this be?


 


Thank you for the link – I’ve downloaded and placed the alternative dll in the Inquisit 3 installation directory and it works! The parallel port monitor displays fine and can send/receive signals. Does this suggest that there is a bug in Inquisit 3?


 


Unfortunately, when running the experiment with the new dll in place, I now get the following error:





Parallel port operation failed.


Line Number: 313


File: .\DirLptPort.cpp


Status Code: 2001


Error Message: 'An unexpected error occured'





Should this be the case?



 


Thank you for your continued support,


 


Alex.

By Alexander-Wright - 2/23/2012

Hi there,


This issue is important for me to resolve; Inquisit is pretty useless to me if it is unable to send parallel port signals.


Dave (or anyone else) - Is that new dll just for running the parallel port monitor or does it handle Inquisit's <port> element operations as well? I want to understand why it is causing an error when I attempt to run the experiment with it. I also want to understand why there was no error with the original dll used by Inquisit despite port signals not being sent.


Thanks,


  Alex.

By seandr - 2/23/2012

Hi Alex,


I'm looking into this bug now.


As for your other question, if you simply remove the inpout32.dll from Inquisit folder, Inquisit will automatically revert back to using the default library for port access. 


I'll let you know when I have more info or a fix. 


-Sean

By seandr - 2/23/2012

Could you email a copy of your script and any media files it uses to inquisit at millisecond? That would greatly facilitate my troubleshooting.


Thanks,
Sean 

By seandr - 2/23/2012

Ok, I've identified one problem in the sample of script you pasted in above.


The last port signal, ETSignalProbe, is never presented using your syntax. Remove "replace()" from around probe_left as as follows:



        / stimulustimes =
                [1 = ETSignalFixation, fixation_pic; 300 = ETSignalFixation, fixation_pic_red;
                500 = blank; 517 = ETSignalFaces, angry_pic_left03, neutral2_pic_right03; 1017 = blank;
                1034 = replace(probe_left), ETSignalProbe]


Let me know if that fixes your issue. If not, please email the whole script and media files to inquisit at millisecond, and I'll take a deeper look.


Regards,
Sean 


By Alexander-Wright - 2/24/2012

Hi Sean,


Thank you for your help. I've attempted the change that you suggested but it hasn't made any difference. That is, parallel port signals are still not being sent when I run the experiment in Inquisit. I've just e-mailed you the experiment files, including the pictures. Please let me know whether you have received this. I look forward to your reply!


Thanks,


Alex.

By Alexander-Wright - 2/28/2012


To anyone concerned:


This issue was resolved in a minor bug fix. The issue was resolved by downloading the very latest build of Inquisit 3.



Thanks to Sean for updating the software so quickly and to Dave for providing the background info!


  Alex.