LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

vitrual GPIB port?

Hi all,

Is there any straight-forward way to have a "virtual" or "client/server"
GPIB controller on a machine where all read/writes are redirected across a
LAN to a machine with a REAL GPIB interface.

Ideally this would allow programs to be run on a remote machine with the
standard (eg. GPIB::14) VISA address strings to access a device, removing
the need to re-write the software. If the same could be done with Serial
(eg. ASRL::01) that would also be good.

In other words Software to make a PC with a GPIB Card behave like one of the
NI network<->GPIB interfaces.

We Have : Pentium equiv. PC's, Labview 6i PDS, NI PCI and ISA GPIB cards.

Many thanks,

Peter Reeves-Hall
pc.reeveshall@ic.ac.uk
0 Kudos
Message 1 of 3
(3,080 Views)
I'm not sure if i understood 100% what you are trying to do. But i think you want to remotely communicate to your GPIB board.

If you are using LabVIEW you can use VIServer to send commands to remote machine over the network to a machine that has GPIB board it. Have remote VI talk to the GPIB board and send the response back to you over the network.
If you can Internet Toolkit for LabVIEW you can communicate to GPIB board using the web browser which is neat because all you need is web browser and internet connection. This gives your flexibility of talking to your instrument being anywhere in the world.

Now you can not specify on remote machine GPIB::2::INSTR because that VISA resource does not exist in that domain and i don't think that it can be mapped (just liked net
work drives) to remote resource.

A Rafiq
National Instruments
http://www.ni.com/ask
0 Kudos
Message 2 of 3
(3,080 Views)
I don't think that VISA allows this. It would be a great feature, though.

One way to attack the problem would be to create "wrapper" LabView VISA routines
for OPEN, READ, WRITE, and CLOSE. These wrapper routines would call a server
process on the remote machines (if applicable), either via TCP/IP client server
or via VIServer. To discriminate between local and remote resources, you could
define the resource name as something like:

R(FOO.BAR.NET:6000)GPIB0::1::INSTR (for remote machine FOO.BAR.NET at port 6000)

GPIB0::1::INSTR (for local machine).
The wrapper routine would look for the presence of the "R" in front.

One difficulty is writing a server with the capability to "listen" to multiple
potential clients (the wrapper routines). I have (or had) something which

worked remotely, so it is possible. The other main issue I dealt with (and
haven't successfully solved) is dealing with setting VISA properties remotely.
It is oftentimes necessary to set the timeout, the termination character, etc.
As far as I could tell, I would need to build a command parser into the server,
to deal with (SET TIMEOUT 2000) or (GET TIMEOUT VALUE). This seems painful, so
I haven't done this yet.

HTH,
Andy
0 Kudos
Message 3 of 3
(3,080 Views)