package charly.demo; import charly.client.*; import charly.server.devices.ChGpibTimeOutException; /** SRQ-test-application. * You can find the <a href="doc-files/ChSimpleSrq.java.html">source here</a>. * * <ul>The Steps: * <li>create Charly-task- and Charly-gpib-objects.</li> * <li>add the SRQ sending device to the task as a resource</li> * <li>add a gpibListener</li> * <li>connect task- and gpib-object and start task.</li> * <li>call checkSrq() for the SRQ sending device</li> * <li>ask device to send SRQ</li> * <li>result: the GpibListener.srq()-method has to handle the SRQ-Event</li> * </ul> */ public class ChSimpleSrq implements ChGpibListener { ChTask task; ChGpibClient gpib; ChConnect server; public static void main(String args[]) throws Exception { System.out.println("usage: ChSimpleSrq [TCP/IP-address]"); ChConnect server=new ChConnect(args.length==0?"localhost":args[0]); new ChSimpleSrq(server).start(); } // Konstruktor public ChSimpleSrq(ChConnect server) throws Exception // throws all exceptions { this.server=server; task=new ChTask("Simple Srq"); gpib=new ChGpibClient(server); // reserve device nr 7 (Oszilloskop) task.addResource(server, gpib.getResourceName(7)); // resource: Gpib-device nr: 7 (Oszilloskop) on server: conn gpib.addGpibListener(this); // adds this as a listener for srq } public void start() throws Exception // throws all the exceptions except for timeout { task.start(true); // starts task and waits for reservation of device gpib.setTask(task); // gpib works on my task try { gpib.checkSrq(7); // expects to get an SRQ gpib.send(7,":AUT;*OPC"); // sending ":AUT;*OPC" to the device nr 7 (Oszilloskop) // causing this device to produce an SRQ after performing :AUT } catch(ChGpibTimeOutException e) { System.out.println("Device timed out!"); gpib.uncheckSrq(7); // do not expect SRQ any more task.stop(); // task is not needed any more } System.out.println("bye"); System.exit(0); // This is not really necessary, but because it // takes some time until that the system detects that there is // no activity any more on the RMI-system, this method call // shortens the waiting time immensely } public void srq(ChGpibEvent ev) { System.out.println("Received SRQ from device Nr:"+ ev.getDvcAddr()); try { task.stop(); // end of task } catch(Exception e) {} } }