@Override public void close() { reader.close(); writer.close(); }
public static void profile(int nPvs) throws Exception { List<PVReader<Object>> pvs = new ArrayList<>(); long timeStart = System.currentTimeMillis(); for (int i = 0; i < nPvs; i++) { //PVReader<Object> pv = PVManager.read(constant(new Object())).maxRate(TimeDuration.TimeDuration.ofHertz(50)); PVReader<Object> pv = PVManager.read(channel("channel " + i)).maxRate(TimeDuration.ofHertz(50)); pvs.add(pv); } long startTime = System.currentTimeMillis() - timeStart; double avgLoad = measureLoad(5); System.out.println(nPvs + " " + startTime + " " + avgLoad); for (PVReader<Object> pv : pvs) { pv.close(); } waitForZeroLoad(5); } }
public static void main(String[] args) throws Exception { //System.setProperty("com.cosylab.epics.caj.CAJContext.max_array_bytes", "20000000"); PVManager.setDefaultDataSource(new SimulationDataSource()); final PVReader<Object> reader = PVManager.read(channel("gaussian()")) .readListener(new PVReaderListener<Object>() { @Override public void pvChanged(PVReaderEvent<Object> event) { System.out.println("Monitor called"); } }) .maxRate(Duration.ofMillis(10)); Thread.sleep(10000); reader.close(); System.out.println("After five seconds"); Thread.sleep(10000); System.out.println("After another five seconds"); PVManager.getDefaultDataSource().close(); System.out.println("Done"); } }
private static void testVFloatArraySupport() throws Exception { PVReader<VFloatArray> pv = PVManager.read(vFloatArray(doublePV)) .readListener(new PVReaderListener<VFloatArray>() { @Override public void pvChanged(PVReaderEvent<VFloatArray> event) { PVReader<VFloatArray> pv = event.getPvReader(); System.out.println(pv.getValue().getData() + " " + Date.from(pv.getValue().getTimestamp()) + " " + pv.getValue().getAlarmSeverity()); } }) .maxRate(ofHertz(10)); Thread.sleep(10000); pv.close(); }
private static void testVStringArraySupport() throws Exception { final PVReader<VStringArray> pv = PVManager.read(vStringArray(doublePV)) .readListener(new PVReaderListener<VStringArray>() { @Override public void pvChanged(PVReaderEvent<VStringArray> event) { PVReader<VStringArray> pv = event.getPvReader(); System.out.println(pv.getValue().getData() + " " + Date.from(pv.getValue().getTimestamp()) + " " + pv.getValue().getAlarmSeverity()); } }) .maxRate(ofHertz(10)); Thread.sleep(10000); pv.close(); }
private static void testVIntArraySupport() throws Exception { final PVReader<VIntArray> pv = PVManager.read(vIntArray(doublePV)) .readListener(new PVReaderListener<VIntArray>() { @Override public void pvChanged(PVReaderEvent<VIntArray> event) { PVReader<VIntArray> pv = event.getPvReader(); logException(pv.lastException()); System.out.println(pv.getValue().getData() + " " + Date.from(pv.getValue().getTimestamp()) + " " + pv.getValue().getAlarmSeverity()); } }) .maxRate(ofHertz(10)); Thread.sleep(10000); pv.close(); }
private static void testVByteArraySupport() throws Exception { PVReader<VByteArray> pv = PVManager.read(vByteArray(doublePV)) .readListener(new PVReaderListener<VByteArray>() { @Override public void pvChanged(PVReaderEvent<VByteArray> event) { PVReader<VByteArray> pv = event.getPvReader(); System.out.println(pv.getValue().getData() + " " + Date.from(pv.getValue().getTimestamp()) + " " + pv.getValue().getAlarmSeverity()); } }) .maxRate(ofHertz(10)); Thread.sleep(10000); pv.close(); }
private static void testVShortArraySupport() throws Exception { final PVReader<VShortArray> pv = PVManager.read(vShortArray(doublePV)) .readListener(new PVReaderListener<VShortArray>() { @Override public void pvChanged(PVReaderEvent<VShortArray> event) { PVReader<VShortArray> pv = event.getPvReader(); System.out.println(pv.getValue().getData() + " " + Date.from(pv.getValue().getTimestamp()) + " " + pv.getValue().getAlarmSeverity()); } }) .maxRate(ofHertz(10)); Thread.sleep(10000); pv.close(); }
private static void testVDoubleSupport() throws Exception { final PVReader<VDouble> pv = PVManager.read(vDouble(doublePV)) .readListener(new PVReaderListener<VDouble>() { @Override public void pvChanged(PVReaderEvent<VDouble> event) { PVReader<VDouble> pv = event.getPvReader(); System.out.println(pv.getValue().getValue() + " " + Date.from(pv.getValue().getTimestamp()) + " " + pv.getValue().getAlarmSeverity()); } }) .maxRate(ofHertz(10)); Thread.sleep(10000); pv.close(); }
private static void testVIntSupport() throws Exception { final PVReader<VInt> pv = PVManager.read(vInt(intPV)) .readListener(new PVReaderListener<VInt>() { @Override public void pvChanged(PVReaderEvent<VInt> event) { PVReader<VInt> pv = event.getPvReader(); System.out.println(pv.getValue().getValue() + " " + Date.from(pv.getValue().getTimestamp()) + " " + pv.getValue().getAlarmSeverity()); } }) .maxRate(ofHertz(10)); Thread.sleep(10000); pv.close(); }
private static void testVStringSupport() throws Exception { final PVReader<VString> pv = PVManager.read(vString(stringPV)) .readListener(new PVReaderListener<VString>() { @Override public void pvChanged(PVReaderEvent<VString> event) { PVReader<VString> pv = event.getPvReader(); logException(pv.lastException()); if (pv.getValue() != null) { System.out.println(pv.getValue().getValue() + " " + Date.from(pv.getValue().getTimestamp()) + " " + pv.getValue().getAlarmSeverity()); } } }) .maxRate(ofHertz(10)); Thread.sleep(10000); pv.close(); }
private static void testVEnumSupport() throws Exception { final PVReader<VEnum> pv = PVManager.read(vEnum(enumPV)) .readListener(new PVReaderListener<VEnum>() { @Override public void pvChanged(PVReaderEvent<VEnum> event) { PVReader<VEnum> pv = event.getPvReader(); logException(pv.lastException()); if (pv.getValue() != null) { System.out.println(pv.getValue().getValue() + " " + Date.from(pv.getValue().getTimestamp()) + " " + pv.getValue().getAlarmSeverity()); } } }) .maxRate(ofHertz(10)); Thread.sleep(10000); pv.close(); } }
private static void testVDoubleArraySupport() throws Exception { PVReader<VDoubleArray> pv = PVManager.read(vDoubleArray(doubleArrayPV)) .readListener(new PVReaderListener<VDoubleArray>() { @Override public void pvChanged(PVReaderEvent<VDoubleArray> event) { PVReader<VDoubleArray> pv = event.getPvReader(); logException(pv.lastException()); if (pv.getValue() != null) { System.out.println(pv.getValue().getData() + " " + Date.from(pv.getValue().getTimestamp()) + " " + pv.getValue().getAlarmSeverity()); } } }) .maxRate(ofHertz(10)); Thread.sleep(10000); pv.close(); }
public static void main(String[] args) throws InterruptedException { int nPvs = 5000; SetupUtil.defaultCASetup(); for (int i = 0; i < nPvs; i++) { PVReader<VType> reader = PVManager.read(ExpressionLanguage.vType("sim://noise")) .readListener(new PVReaderListener<VType>() { @Override public void pvChanged(PVReaderEvent<VType> event) { counter.incrementAndGet(); } }).maxRate(ofHertz(50)); readers.add(reader); } Thread.sleep(60000); for (PVReader<VType> pVReader : readers) { pVReader.close(); } } }
public void b1_readLatestValue() { // Let's statically import so the code looks cleaner // import static org.epics.pvmanager.ExpressionLanguage.*; // import static java.time.TimeDuration.*; // Get updates from channel "channelName" up to every 100 ms PVReader<Object> pvReader = PVManager.read(channel("channelName")) .readListener(new PVReaderListener<Object>() { @Override public void pvChanged(PVReaderEvent<Object> event) { // Do something with each value Object newValue = event.getPvReader().getValue(); System.out.println(newValue); } }) .maxRate(ofMillis(100)); // Note that "channel" returns an object. You can always substitute it for // a more precise operator to have guarantees you can process the value // (e.g. vType("channelName"), vNumber("channelName"), ...) // Remember to close pvReader.close(); // The interval between updates can be specified in different units // (e.g. ms, sec, min, hour, hz). Check the documentation at org.epics.pvmanager.util.TimeDuration. // IMPORTANT: you _must_ keep a reference to your reader so that you can // close it later. If you don't, pvmanager will consider that reader "lost" // and it will close it automatically. }
public void b2_readAllValues() { // Read channel "channelName" up to every 100 ms, and get all // the new values from the last notification. PVReader<List<Object>> pvReader = PVManager .read(newValuesOf(channel("channelName"))) .readListener(new PVReaderListener<List<Object>>() { @Override public void pvChanged(PVReaderEvent<List<Object>> event) { // Do something with each value for (Object newValue : event.getPvReader().getValue()) { System.out.println(newValue); } } }) .maxRate(ofMillis(100)); // Remember to close pvReader.close(); // newValuesOf limits the values in the queue, to protect memory // consumption in problematic circumstances. The default is 1000 elements, // which you can override. See all options in the ExpressionLanguage class. }
private void createPVButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createPVButtonActionPerformed if (pvs != null && !pvs.isEmpty()) { for (PVReader<VStatistics> pv : pvs) { pv.close(); } } int nPvs = ((Integer) nPVSpinner.getModel().getValue()).intValue(); double timeIntervalSec = (1.0 / ((Integer) updateRateSpinner.getModel().getValue()).intValue()); String pvName = "gaussian(0.0, 1.0, " + timeIntervalSec + ")"; int scanRate = ((Integer) scanRateSpinner.getModel().getValue()).intValue(); final DefaultTableModel model = (DefaultTableModel) pvTable.getModel(); model.setRowCount(nPvs); pvs.clear(); for (int n = 0; n < nPvs; n++) { final PVReader<VStatistics> pv = PVManager.read(statisticsOf(vDouble(pvName))).maxRate(ofHertz(scanRate)); final int nRow = n; pv.addPVReaderListener(new PVReaderListener<VStatistics>() { @Override public void pvChanged(PVReaderEvent<VStatistics> event) { model.setValueAt(pv.getValue().getAverage(), nRow, 0); model.setValueAt(pv.getValue().getStdDev(), nRow, 1); model.setValueAt(pv.getValue().getMin(), nRow, 2); model.setValueAt(pv.getValue().getMax(), nRow, 3); } }); pvs.add(pv); } }//GEN-LAST:event_createPVButtonActionPerformed
protected void reconnect() { if (pv != null) { pv.close(); imagePanel.setImage(null); graph = null; } if (dataFormulaField.getSelectedItem() == null || dataFormulaField.getSelectedItem().toString().trim().isEmpty()) { return; } graph = createExpression(dataFormulaField.getSelectedItem().toString()); graph.update(graph.newUpdate().imageHeight(imagePanel.getHeight()) .imageWidth(imagePanel.getWidth())); pv = PVManager.read(graph) .notifyOn(swingEDT()) .readListener(new PVReaderListener<Graph2DResult>() { @Override public void pvChanged(PVReaderEvent<Graph2DResult> event) { setLastError(pv.lastException()); if (pv.getValue() != null) { BufferedImage image = ValueUtil.toImage(pv.getValue().getImage()); imagePanel.setImage(image); } } }) .maxRate(ofHertz(50)); }
public void m1_readMultipleChannels() { // Read a map with the channels named "one", "two" and "three" PVReader<Map<String, Object>> pvReader = PVManager .read(mapOf(latestValueOf(channels("one", "two", "three")))) .readListener(new PVReaderListener<Map<String, Object>>() { @Override public void pvChanged(PVReaderEvent<Map<String, Object>> event) { // Print the values if any Map<String, Object> map = event.getPvReader().getValue(); if (map != null) { System.out.println("one: " + map.get("one") + " - two: " + map.get("two") + " - three: " + map.get("three")); } } }) .maxRate(ofMillis(100)); // Remember to close pvReader.close(); // Note that when using a composite datasource, the channels can be //from different sources (e.g. "sim://noise" and "ca://mypv"). }
private void pvNameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pvNameActionPerformed if (pv != null) pv.close(); plot = waterfallPlotOf(vNumberArray(pvName.getText())).with( colorScheme(ColorScheme.multipleRangeGradient(Color.RED, Color.YELLOW, Color.BLACK, Color.WHITE, Color.YELLOW, Color.RED)), backgroundColor(getBackground().getRGB()), adaptiveRange(adaptiveRangeField.isSelected()), scrollDown(scrollDownField.isSelected()), height(plotView.getHeight()), pixelDuration(ofMillis(((Number) pixelDurationField.getValue()).intValue()))); pv = PVManager.read(plot).notifyOn(swingEDT()) .readListener(new PVReaderListener<VImage>() { @Override public void pvChanged(PVReaderEvent<VImage> event) { setLastError(pv.lastException()); if (pv.getValue() != null) { BufferedImage image = ValueUtil.toImage(pv.getValue()); plotView.setImage(image); } } }) .maxRate(TimeDuration.ofHertz(50)); }//GEN-LAST:event_pvNameActionPerformed