06-30-2009 09:22 AM
Dear Experts!
I am attempting to communicate with a BE256 (rather old device with a GPIB interface).
It has e. g. commands like ID? (instead of *ID?) which I have encountered a couple of times in older systems.
Unfortunately, I cannot make the device talk back.
I was successful with a GPIB adapter from a different brand, but couldn't repeat the success with the NI hardware. I have toyed around with a couple of settings, both in the GUI (NI-488.2 Communicator in the M&A Explorer), as well as via C where I had accessed a couple of other devices successfully before (typically, the NI adapter is pretty reliable and also forgiving, even when communicating with older HW like AMREL PPS-1326), but the BE256 is not answering at all.
Any ideas, hints, or need for clarification?
Best wishes,
diadev
Solved! Go to Solution.
06-30-2009 11:19 AM
Hi,
Try changing ome of the settings on the GPIB board properties page.
In 'Advanced' settings try changing the bus timing to 2usec.
In the 'Termination Methods' try changing the EOS/EOI settings.
Curt
07-01-2009 04:19 AM
Hi Curt!
Thx for the input!
Unfortunately, I tried all the settings of the GUI already (Measurement & Automation Explorer). Now, I didnt try the timeout yet.. so changing it from 10s to a lower value, I get my error quicker. 🙂
It seems like the writing operation does not end properly (for the device).
In the documentation, it says that the device is expecting CR+LF+EOI for reads and sending it for writes. Even though I didnt find the option of sending this at all in the GUI (how to append CR + LF??) I concatenated a string using the C interface, containing both the CR+LF. Still, it didnt work.
Plus, how shall I do this? Do a string-concat? And to what shall I set the end character?
Any ideas on how to do this with either the GUI or programmatically?
Many thanks,
diadev
07-02-2009 05:45 AM
For whatever reason, it works fine now.
I keep remote asserted, append the cr+lf manually via snprintf.. and even a binary read works fine.
so.. for anyone having the same trouble, this is what worked for me:
// interface adapter configuration
ibconfig(card, IbcEOSwrt, 0x1);
ibconfig(card, IbcEOSrd, 0x1);
// enable remote mode
ibconfig(card, IbcSRE, 0x1);
// binary read (simply don't listen to EOS)
ibconfig(m_ulCard, IbcEOSrd, 0x0);
ibrd(device, (char *)data, size);
// stop reading on EOS char again
ibconfig(m_ulCard, IbcEOSrd, 0x1);