Google for USBTMC. If your device is equiped with it (which is almost any piece of modern equipment) you should get a character device under Linux where you can send the GPIB-like commands to. I'd like to find a driver for Windows which does this...
That is what GPIB32.DLL and GPIB.SYS do.
GPIB32.DLL is an API into GPIB.SYS.
GPIB.SYS creates a Device that can be accessed using IOCTL commands. just like you have a COM1 COM2 , LPT1 LPT2 you will have a GPIB0 on your computer.
open a command prompt , and type ECHO GPIB0 <enter>
you can now talk directly on the gpib bus. the command set is ASCII
IBOPEN 22 <ENTER>
IBWRITE 22,"DISP:TEXT 'hello world'" <ENTER>
IBCLOSE 22<ENTER>
and so on.
the GPIB standard is owned by 2 companies : Agilent ( who, when they were still Hewlett Packard invented HPIB , which got ratified as IEEE488 / IEC625. as IEE and IEC do not want company names in there it was called GPIB . HPIB : Hewlett-Packard Instrumentation Bus. : GPIB General Purpose Instrumentation Bus. )
IEEE488 has gotten 2 extentions over the years : .1 and .2 . 488.1 brings a common command set while 488.2 brings an additional layer and speed boost.
SCPI ( Standard Commandset for Programmable Instrumentation) is part of 488.2 i believe. this is the ascii texts flying back and forth.
The common command set are commands like *IDN? *RST *CLR *REM etc. they are bus/instrument management commands.
The 488.2 was co-authored by National instruments , Keithley and some others.
There are only a few chips out there that implement the GPIB master and they are subject to licencing. ( buying the chip includes the licence to use )
NEC : upd7210
intel : 8291 + 8292 + 8293 (91 is the base interface , 92 adds host capability , 93 is the io drivers)
TI : TMS9914
Signetics HEF4788
Motorola 68488
NI : TNT488 or other ASICS
these chips interface with two GPIB bus drivers SN75460 and SN75461 (i believe)
Agilent uses the implementation in a CPLD or the M9914 which is a custom built 9914 ( All the above chips are discontinued. Agilent bough tthe masks to the 9914 and has it fabbed by Rochester ). Their PCI and USb solutions are cypress68013+ cpld or cpld based.
NI has their own asics for USB / PCI / RIO / VXI MXI and others
ICS uses the CPLD solution.
All the boards out there in the field are essentially a TI9914A with an interface wrapper. the 9914 A is a very simple chip ith 16 config registrs. no more complex to deal with than a beefy uart.
Agilent, NI , ICS, Keithley and others have standardized on a common interface towards the programmer : GPIB.SYS and GPIB32.DLL.
GPIB.SYS implements the IOCTL driver (GPIB0 , or GPIB1 , GPIB2 etc oif you have multiple cards ) and GPIB32.DLL gives you an API into it.
the commandset of GPIB32.DLL is very short. there's like 20 commands or so.
Irrespective of the board vendor / hardware , if you rprogram can load GPIB32.DLL it will work. the rest is shielded.
Now, the problem is that machines can sit on GPIB , on LAN on , PCIE on USB or wherever. That is what VISA solves.
you still send the ASCII strings to the machines and the command strings ( SCPI or *IDN ) but using VISA you can change your target to whatever. you can change it to GPIb , LXI , USB or anything else. without having to rewrite code.
VISA is a vailable for free from National instruments, Agilent and a few others.
for what GPIB is concerned : if the VISA engine detects a GPIB32.DLL it will hook into that one and off it goes. you don't need to bother with anything else.
So long story short : wanna make a really compatible gpib controller : write that GPIB32.DLL for it... it will be picked up by any existing software out there whetehr that software calls GPIB32 directly or goes through VISA.