package org.epics.archiverappliance.engine.test; import gov.aps.jca.CAException; import gov.aps.jca.Channel; import gov.aps.jca.Context; import gov.aps.jca.JCALibrary; import gov.aps.jca.TimeoutException; import gov.aps.jca.configuration.Configuration; import gov.aps.jca.configuration.ConfigurationException; import gov.aps.jca.configuration.DefaultConfigurationBuilder; import gov.aps.jca.dbr.DBRType; import gov.aps.jca.dbr.DBR_GR_Double; import gov.aps.jca.event.MonitorEvent; import gov.aps.jca.event.MonitorListener; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import org.epics.archiverappliance.config.ConfigServiceForTests; import org.epics.archiverappliance.config.exception.ConfigException; import org.epics.archiverappliance.engine.epics.JCAConfigGen; import org.xml.sax.SAXException; /** * Establish a graphic limits monitor on a known PV and print each change. * @author mshankar * */ public class GraphicLimitsMonitor { private Context context = null; private JCALibrary jca =null; private void initialize() throws CAException, SAXException, IOException, ConfigurationException, ConfigException { ConfigServiceForTests configService = new ConfigServiceForTests(new File("./bin")); jca = JCALibrary.getInstance(); ByteArrayInputStream bis = JCAConfigGen.generateJCAConfig(configService); DefaultConfigurationBuilder configBuilder = new DefaultConfigurationBuilder(); Configuration configuration; configuration = configBuilder.build(bis); context = jca.createContext(configuration); } public void establishGraphicLimitsMonitorAndPrint(String pvName) throws CAException, IllegalStateException, TimeoutException, SAXException, IOException, ConfigurationException, ConfigException { initialize(); Channel channel = context.createChannel(pvName); context.pendIO(3.0); channel.addMonitor(DBRType.GR_DOUBLE, 1, 2 /* DBE_Archive */, new MonitorListener() { @Override public void monitorChanged(MonitorEvent event) { DBR_GR_Double dbr = (DBR_GR_Double) event.getDBR(); dbr.printInfo(System.out); } }); context.pendIO(3.0); } public static void main(String[] args) throws Exception { new GraphicLimitsMonitor().establishGraphicLimitsMonitorAndPrint(args[0]); } }