package org.hwo.pulscounter.device; import java.util.Random; import static org.hwo.logging.Logging.*; import static org.hwo.logging.LogLevel.*; public class SimulatedCounter implements IDeviceConnector { private int serial; private int[] values; private float[] analogs; private int inputs, outputs, pullups, inverts; private Random random; public SimulatedCounter() { random = new Random(); serial = random.nextInt(); values = new int[32]; analogs = new float[8]; for (int i=0;i<8;i++){ analogs[i] = (float)(random.nextFloat() * 10.0); } } @Override public String toString() { return String.format("Simulated Counter [%d]", serial); } @Override public String getDeviceSerial() { return String.format("%d", serial); } @Override public boolean showConnctionSetup() { return SimulatedCounterSettingsDialog.show(this); } @Override public String getConnectionSettings() { return String.format("%d", serial); } @Override public void setConnectionSettings(String connectionSettings) { if (!connectionSettings.equals("")){ log(INFO,"Simulated Counter changes serial %d -> %s",serial,connectionSettings); serial = Integer.parseInt(connectionSettings); } } @Override public String getConnectionSettingsText() { return String.format("Device Serial: %d\nSimulated Values", serial); } @Override public int[] getCounters() { int i = random.nextInt(); values[ i & 0x1F ] += random.nextInt() & 0x07; for (i=0;i<8;i++){ analogs[i] += (float)(random.nextFloat() * 0.6)-0.3; if (analogs[i] > 10.0f){ analogs[i] = 10.0f; } if (analogs[i] < 0.0f){ analogs[i] = 0.0f; } } inputs = random.nextInt(); return values; } @Override public void setCounters(int[] values) { this.values = values; } @Override public int getCounter(int channel) { return values[channel]; } @Override public void setCounter(int channel, int counter) { values[channel] = counter; } @Override public int[] getSimpleScript() { // TODO Auto-generated method stub return null; } @Override public void setSimpleScript(int[] simpleScript) { // TODO Auto-generated method stub } @Override public int getInputs() { return inputs; } @Override public int getOutputs() { return outputs; } @Override public void setOutputs(int outputs) { this.outputs = outputs; } @Override public int getPullups() { return pullups; } @Override public void setPullups(int pullups) { this.pullups = pullups; } @Override public int getInverts() { return inverts; } @Override public void setInverts(int inverts) { this.inverts = inverts; } @Override public float[] getAnalogs() { return analogs; } @Override public float getAnalog(int channel) { return analogs[channel]; } }