MATLAB Answers

Sirius
0

Error with LPT port: Failure to open requested data acquisition devide

Asked by Sirius
on 21 Mar 2011
Latest activity Commented on by john
on 9 Feb 2015
Dear all,
Let me start by saying I am not a fullblown programmer, but a neuroscientist in training with a nerdy side and an affinity for making my experiments in matlab. Please keep this in mind while answering, I might need slightly more explanation than most.
General info: I'm using Windows XP. Unfortunately, I cannot change that, since the computer is the universities' property. Withing XP, I'm using MatLab 7.10.0 (R2010a) with the data acquisition toolbox and the Psychtoolbox.
For my current experiment I'm using a tapperdevice, a device that is able to create tactile patterns by tapping on the skin. I've connected the device to a PCI card with a parallel port (LPT), onto an Asus P5K motherboard. I've checked within the devicemanager which LPTport the device connects to, and set it to both LPT 1 and 3 in turn, but in both cases I get this error:
??? Error using ==> digitalio.digitalio at 115 Failure to open the requested data acquisition device
Error in ==> tapperdriver at 29 dio = digitalio('parallel','LPT1');
When I use
out=daqhwinfo; out.InstalledAdaptors
It does return to me
ans = 'parallel' 'winsound'
So there seem to be no problem with the registration of the port.
Next I checked what was at 115 in digitalio, and it says something about deprecated adaptors. Which seems to indicate a negation of my adaptor or something, but my knowlegde of this kind of thing isn't good enough to understand how to solve my problem.
I've tried using the tappers on another pc, where the parallel port is built into the motherboard, and there it works flawlessly. That seems to indicate a problem with the drivers/functioning of the PCI LPT card, I've reinstalled it's drivers, but that does not solve the problem.
I've also found tips that running MatLab in administrator mode should work, but because I am on an university computer, and nobody remembers the administrator password (thank you scatterbrained professors of the world), that isn't an option. Does anybody have any suggestions on how to solve this issue without administrator rights? Or anything else I should try or check?
Any help would be greatly appreaciated!
Sirius

  1 Comment

sirius,I am also having the same problem,if you find the solution means please inform me,thank you

Sign in to comment.

5 Answers

Answer by Rob Purser on 21 Mar 2011

Hi Sirius,
Alas, your issues are classic problems with the parallel interface. We used a number of backdoors in the operating system and legacy modes in the hardware to gain access to the parallel port hardware. Most of these have been closed since Winodows XP, and few vendors make register compliant LPT ports anymore. Thus, our decision to deprecate. If the parallel port appears in DAQHWINFO, then it's something in the configuration of the hardware, rather than needing admin rights.
Sometimes, the hardware vendors provide an configuration application. You need to find that, and set the the hardware into legacy mode. It's needs to appear at register 378h to be recognized as LPT1.
Today, we recommend the use of a low cost digital I/O device, such as the Measurement Computing USB-1024LS. Hope this helps you to configure you machine to get it to work.
-Rob Purser

  2 Comments

OK, that's slight;y technical for me, I'll see if a person from the university technical staff can help me with it tomorrow. Thank you very much for responding this quickly.
We looked at this, there is no configuration application, and trying to enable and disable plug and play legacy in XP itself doesn't have any effect (we rebooted after). We both don't know what you mean with "needs to appear at register 378h to be recognized as LPT1." Could you clarify?

Sign in to comment.


Answer by Janrik Oberholzer on 22 Mar 2011

Hi, we have and similar problem.
??? Error using ==> digitalio.digitalio at 115 Failure to open requested data acquisition device.
Error in ==> Task1 at 3 dio=digitalio('parallel','LPT1');
Intel i5 Hardware with a Sunix PAR 5008a PCI card set to LPT1.
Our accounts are Administrator on the systems and we have the latest Windows and Device patches/drivers loaded.
Where does one set "at register 378h to be recognized as LPT1" In the BIOS? (Bios options for PCI devices is greyed out)
Any help will be appreciated.
Regards

  1 Comment

Hi, we've also got a support ticket, which we got this response to:
Dear Siarhei,
Thank you for the reply. As I mentioned I have limited experience with using a Parallel port and I found we only support parallel ports that use the standard hardware addresses. If your add-on PCI card does not use standard I/O addresses, this parallel port is not supported by the DIGITALIO function in the Data Acquisition Toolbox. Maybe you can configure the PCI card to use other hardware addresses? For instance I found a reference online to a PCI card that can do this:
http://ftp.assmann.com/pub/DS-/DS-33010___4016032254348/DS-33010_manual_Manual_english_20100421.pdf
Please note that using parallel ports with DIGITALIO is becoming deprecated. It only works on Windows XP 32-bit and only with these standard hardware addresses.
If you are comfortable programming in C++ for the Windows API, you or a colleague may be able to change the source code of the Parallel Port adaptor to get this working. In MATLAB you can access the directory with the original adaptor source code at:
cd ([(matlabroot) '\toolbox\daq\daq\src\mwparallel'])
Best regards,
Jorik Caljouw
In response to this I've sent an e-mail tot the company that made my PCI parallel card, hoping they can help me remap the I/O hardware addresses. I'll keep you informed of any progress. Would you please do the same?

Sign in to comment.


Answer by Janrik Oberholzer on 23 Mar 2011

Hi, I will do the same thanks for the update.

  0 Comments

Sign in to comment.


Answer by Anne Findlay on 30 Jun 2011

Hi there, we are using Windows XP, 32-bit, and are having similar problems. We had to upgrade to a new computer for a similar use as Sirius, and have a MosChip PCI parallel port card. Unfortunately our expensive and irreplaceable imaging system using a parallel port interface. We have verified that the address is 378 (resources page on device settings lists 0378-037F as first setting) and have run another stimulus program (Eprime 1.2) which successfully sends triggers over H378. (Eprime is very specific and actually uses "H378" in the code to indicate the parallel port.) So we know that that is working. Yet we have found nothing to get this line of code working:
dio=digitalio('parallel','LPT1')
We have verified that it is LPT1 and have tried using LPT3 etc. We had it all working on Matlab R2006a on our prior computer and have also tried with Matlab R2011a. Using R2011a we could get the nidaq card working fine so I am confident that the digitalio function is working. (Although on R2006a I seem to have to use analoginput to use the nidaq.)
Before we dig an old PC out of the garbage heap, do you think there is any hope for us to get this working with our PCI card? Any other suggestions?
Thanks, Anne Findlay

  0 Comments

Sign in to comment.


Answer by Sirius
on 7 Jul 2011

Hey Anne,
Sorry I'm responding so tardily to this. In the end we didn't manage to fix it, but soldered and programmed our own parallel to USB converter in such a way that the timing was precise enough for our experiment. If you have someone with the knowledge to do such a thing, the costs for the materials in all were about 60 euro's, so that;s quite okay.
Good luck! Sirius

  0 Comments

Sign in to comment.