LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

Low level support driver on 64-bit systems

we have an application which uses port commands like outp and inp to utilize some hardware. We have found, that on 64-bit Windows7 the low level support driver is not applicable, so we must go back to a 32-bit system. Is there any intention at NI to solve this issue, or the low level support driver will never be supported on 64-bit systems?

0 Kudos
Message 1 of 4
(4,257 Views)

It will probably never be ported to 64-bit. It uses ancient technology that might run smack into security restriction problems, because this driver can also be used to control other addresses in I/O space.

 

I've been told that you can accomplish the same objective by using the VISA API. This example code has been alleged to work, but I haven't tested it myself, and so there are no guarantees:

 

int16 outpw (int16 port, int16 val)

{

    viOpenDefaultRM (&drm);

    viOpen (drm, "PXI0::MEMACC", VI_NULL, VI_NULL, &session);

    viOut16 (session, 8, port, val);    // 8 is I/O space

    viClose (session);

    viClose (drm);

    return val;

}

 

int32 inpd (int16 port)

{

    viOpenDefaultRM (&drm);

    viOpen (drm, "PXI0::MEMACC", VI_NULL, VI_NULL, &session);

    viIn32 (session, 8, port, &val);viClose (session);

    viClose (drm);

    return val;

}

 

Luis

0 Kudos
Message 2 of 4
(4,250 Views)
Example will not work with Visa 5.3 any more. Address space 8 is invalid. If changed to VI_PXI_ALLOC_SPACE, the offset will be invalid. How to find out the right offset for the LPT registers ? Regards
0 Kudos
Message 3 of 4
(3,928 Views)

To my knowledge, this address space is no longer accessible through NI drivers due to the security issues previously mentioned. For general parallel port communication, you should be able to use standard VISA writes and reads, though you may need to ground a few of the data control lines (pins 11 and 12).

0 Kudos
Message 4 of 4
(3,818 Views)