I have an application which has been running on windows 98 and Lab windows version 220.127.116.116. I am trying to get it to run on a computer that is running windows XP and Lab windows version 18.104.22.1686. part of the application is talking to some digital I/O boards and sending pulses from these boards. The pulses on the XP machine are much longer then on the 98 machine. I believe this is because XP is not allowing my application direct access to the hardware like 98 does. Is there any patch for windows XP that would give Lab windows direct access to the hardware?
Exactly which Digital I/O board are you writing to? It's possible that there is not an onboard timing clock, which would mean that the device is controlled by software timing rather than hardware timing, which is more exact. If that's the case, then any event (keystroke, mouse movement, application running in the background on your PC, etc...) could cause a slight delay in an application's execution time.
I am using a Diamond systems Garnet-MM 48-Line DIO board. I do not think is a problem with another software application delaying my application. I have executed the command multiple time on my windows 98 machine and the time is always exactly the same, same for the windows XP machine. I have also tried to turn off as many processes as possible on the windows XP machine and this made no difference.
To answer your question, I could not find the patch you spoke of previously. I looked up the Garnet-MM board and also tried looking up the driver for the device on ni.com/idnet. This site houses all of our NI supported drivers. I could not find a driver for the hardware and noticed that a driver ships with the Garnet-MM board. Are you using a different version driver or has anything else changed when you switched from Windows 98 to XP? Also, have you tried mentioning this to the manufacturer of the driver and have you gotten any response from them? Are you using VISA commands to communicate with this board? If so, we can get an NI SPY capture and troubleshoot this further.
Thanks for your patience, and I eagerly await your reply!
Shawn S. | NIC
I have talked with the software engineer who is working on it. We have not contacted the manufacture of the board because it does not seem to be a problem with the board. We are not using there manufactures device drivers in either the windows 98 or the windows XP case. I have been told we are not using VISA commands. We are using the INP and OUTP port I/O commands to directly access the hardware form labwindows. Other then the operating system the computer we are running it on has changed as well. however I can downgrade the new computer to windows 98 and the application gives the expected results so I think the hardware is fine.
Sorry, but the era of applications being able to hit the hardware directly is over.
As you have found, Windows XP (as with all other operating systems derived from Windows NT) protects hardware from direct access by applications - you can only get at it via a device driver. In the case of CVI, if you are using INP and OUTP functions you will be accessing the hardware via the NI low level I/O driver. A few years ago I did some tests and found this driver added substantial time overhead for each access.
There are other drivers available that provide a similar facility. A quick Google found http://www.direct-io.com/, which may be more efficient than the NI driver (there again, it might not). Almost certainly, if you decide to make changes you would be better off using drivers supplied specifically for the hardware rather than generic drivers.