12-22-1999 02:04 PM
12-22-1999 06:27 PM
12-28-1999 09:07 AM
12-28-1999 06:44 PM
03-22-2006 06:52 PM
03-23-2006 12:19 PM
03-23-2006 02:32 PM
03-24-2006 07:01 AM
03-14-2007 04:35 AM
Robert, or any who have solved this...
if I understand the description in the link you mentioned, with that tool I can create an Windows device driver. With this the device is known in the system. That's imortant and essential.
But interesting the interesting question is, how can I use this driver from labview? How can I read and write to my card? And how can I read or change the configuration registers? Thats also the question of the other - I think.
Is there really no template available für LabView? Or a full excample, which I can use and change for my requirements? In a former project, we used windriver which generate the .inf file and an .dll-template to allow access to the card (open(), close(), byteRead(), byteWrite(),....).
Or can I use such a .dll as an IVI driver? I am a litte confuse about the driver world of LabView. As I see in http://www.ni.com/ivi/ the IVI is above VISA!? For my understandig till now, IVI is lowLevel (like the mentioned dll) and VISA is highlevel!? So this two boxes should be changed.
Also there is the question to me, what components, vi,.. I need to talk to my card?
I hope to get help or links to a documentation regarding this. Thanks
Georg
03-14-2007 08:37 AM
In order to communicate to a PCI/PXI device, you use either the VISA low-level or high-level register access functions. There are shipping examples of each. The descrption of each says that they are used to communicate to VXI/VME devices but the only difference between VXI/VME and PCI/PXI is the address space. If I remember correctly, 13 is for PCI. The register functions are similar to what you descibe with functions to read and write a specific register. The low level functions are more efficient. You are required to use the Map Address function first, do the read/writes, and then do the Unmap Address. The high level functions do the map/unmap each time. All of this is shown in the examples.
You cannot simply 'use' an IVI driver'. One has to be written for your board and it would have to be written with LabWindows/CVI. IVI is a higher level driver than VISA. You start by first creating a specific driver for a board/instrument. The communication to the board/instrument is done with VISA. The functions you implement for the board/instrument are mapped to instrument class functions. For example, if the board/instrument is a type of DMM, then there are certain functions that have to implemented. You would implement a measurement function (i.e. Volts, Amps, Current, etc) with the specific code for your device. An end user would use the IVI DMM class driver which in turn would call the specific instrument driver, which would in turn issue the actual commands to the device.
If you choose to implement a driver with VISA, then you would have to distribute VISA with the driver or require the end user to download and install it. There are some licensing issues that you may need to address. If the board and driver is intended for only LabVIEW users, then there is issue. If you want the board to be used by developers in C, C++, .Net, etc, you may be better off developing a more traditional windows type driver. A LabVIEW driver can then be created from that using the Call Library Function Node.