Here's a snippet of a simple *IDN? against a Fluke 45...
send...
ibfind(GPIB0)
ibrsc(GPIB0, 1)
ibsic(GPIB0)
ibtmo(GPIB0, T10s (13))
ibeot(GPIB0, 1)
ibeos(GPIB0, 0x000A)
ibcmd(GPIB0, "?@!", 3 (0x3))
ibwrt(GPIB0, "*IDN?.", 6 (0x6))
ibcmd(GPIB0, "_?", 2 (0x2))
receive...
ibcmd(GPIB0, "?_ A", 4 (0x4))
ibeot(GPIB0, 1)
ibeos(GPIB0, 0x000A)
ibtmo(GPIB0, T10s (13))
ibrd(GPIB0, "FLUKE, 45, 80...", 1024 (0x400))
ibcmd(GPIB0, "_?", 2 (0x2))
ibtmo(GPIB0, TNONE (0))
ibloc(GPIB0)
ibonl(GPIB0, 0)
This works fine on a Fluke45, HP34401, Datron9100 and TDS-210... I cannot seem to get it, or *any* outgoing communication to a Datron4808 to work properly. I did have some ibgts code putting the controller in standyby after reads, but removed it. That however, has nothing to do with the first part, sending. Am I missing anything simple there? I thought of *IDN? IDN *IDN ID?.. I've sent the proper CR/LF LF CR, etc in all combinations including asserting EOI. Just stumped now.