From c0286e6a2e9a164f55a4c461ab6a439647595587 Mon Sep 17 00:00:00 2001 From: Harald Wolff Date: Thu, 24 Aug 2017 18:01:41 +0200 Subject: [PATCH] WIP --- .classpath | 2 +- Manifest | 3 + lib/hsqldb.jar => hsqldb.jar | Bin missing-translation.txt | 143 ++++++++++-------- src/org/hwo/pulscounter/Application.java | 5 +- src/org/hwo/pulscounter/DeviceTester.java | 29 ++-- .../pulscounter/PulsCounterApplication.java | 4 +- .../device/SimpleLinkDeviceConnector.java | 93 +++++++----- .../pulscounter/ui/DeviceConfiguration.java | 12 +- src/org/hwo/pulscounter/ui/NewMainWindow.java | 1 - synololog.jardesc | 32 ++++ 11 files changed, 205 insertions(+), 119 deletions(-) create mode 100644 Manifest rename lib/hsqldb.jar => hsqldb.jar (100%) create mode 100644 synololog.jardesc diff --git a/.classpath b/.classpath index fea2372..0cb0aac 100644 --- a/.classpath +++ b/.classpath @@ -6,6 +6,6 @@ - + diff --git a/Manifest b/Manifest new file mode 100644 index 0000000..594fe07 --- /dev/null +++ b/Manifest @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: org.hwo.pulscounter.Application + diff --git a/lib/hsqldb.jar b/hsqldb.jar similarity index 100% rename from lib/hsqldb.jar rename to hsqldb.jar diff --git a/missing-translation.txt b/missing-translation.txt index 853eaa0..846176c 100644 --- a/missing-translation.txt +++ b/missing-translation.txt @@ -2,73 +2,98 @@ missing translations +Skript bearbeiten +neu... +Intervall 2 basiert auf Tageszeit +Intervall 1: +Schnittstelle wählen... +5x neu +Niemals +auf Zähler übertragen.... +Meldungen +Synololog einstellen +ARITHEMTIK = B - 1 +tooltip.synololog.einstellen +ARITHEMTIK = A / B +Von Gerät %s geholt am %s +A < B +Intervall 0: +Intervall 0 basiert auf Tageszeit +Anschlusseinstellungen +ARITHEMTIK = B + 1 +Aufzeichnungen verwalten +Ausgang von Zähler holen.... SnapShot Speicher zurücksetzen -tooltip.synololog.einstellen -Operation -Z -Von Gerät %s geholt am %s -Inkrement -ARITHEMTIK = B + 1 -Bezeichnung: -Bedingung -Anschlusseinstellungen -Ausgang -tooltip.daten.exportieren -Bezeichnung -Intervall 1: +Alle Zähler zurücksetzen +ARITHEMTIK = A - B +A > B +Skripte +Snapshot Index zurücksetzen +A == B +ARITHEMTIK = A + B Signalfenster -Es konnte kein Skript vom gerät empfangen werden. -name -Skript bearbeiten -B -A != 0 -A -Signalfilter -neu... -Der Selbsttest für Zähler #%d war erfolgreich. -Wählen Sie die Schnittstelle über die das Skript empfangen werden soll. -Intervall 1 basiert auf Tageszeit -Beschreibung: -Intervall 0 basiert auf Tageszeit +Alle Zählerstände zurücksetzen +ARITHEMTIK = A - 1 +ARITHEMTIK = A * B +tooltip.daten.exportieren +LOGIK = A or B +bearbeiten... +ARITHEMTIK = A + 1 +A == 0 +Löst Snapshot aus +Entfernen +entfernen +Daten exportieren +Inkrement +1x neu +SnapShot Speicher auf letzten bekannten SnapShot setzen +Bedingung +Wählen Sie die Schnittstelle über die das Skript übertragen werden soll. +<html>Diese Funktion sollte nur auf Aufforderung durch den Support ausgeführt werden.<br/>Soll der Snapshot Index auf dem Gerät wirklich zurückgesetzt werden?</html> +warning.selftest Intervall 3 basiert auf Tageszeit -Intervall 2 basiert auf Tageszeit +Z warning.title.selftest +LOGIK = A and B ARITHEMTIK = B ARITHEMTIK = A -Alle Zähler zurücksetzen -OK -Skripte -Wählen Sie die Schnittstelle über die das Skript übertragen werden soll. -tooltip.intervall -Snapshot Index zurücksetzen -<html>Diese Funktion sollte nur auf Aufforderung durch den Support ausgeführt werden.<br/>Soll der Snapshot Index auf dem Gerät wirklich zurückgesetzt werden?</html> -Wollen Sie wirklich alle Zählerstände auf 0 zurücksetzen? -Tageszeitabhängigkeit: -Synololog einstellen -Intervall 0: +A != B +name Invertiert -Intervall 3: -ARITHEMTIK = 0 -bearbeiten... -Löst Snapshot aus -auf Zähler übertragen.... -Nur nach Rücksprache mit Support: -Verbindung -Meldungen -Passiver Schalter -tooltip.tagesbasierte.intervalle Kanal -Der Selbsttest für Zähler #%d ist fehlgeschlagen. -Daten exportieren -warning.selftest -A == 0 -SnapShot Speicher auf letzten bekannten SnapShot setzen -entfernen -Schnittstelle wählen... -Formeln -Intervall 2: -Aufzeichnungen verwalten -Alle Zählerstände zurücksetzen +B +A +ARITHEMTIK = 1 +ARITHEMTIK = 0 Immer +Ausgangswert Z +A != 0 +Beschreibung: +Intervall 1 basiert auf Tageszeit +Signalfilter +Bezeichnung +Intervall 3: +tooltip.intervall +Tageszeitabhängigkeit: +Verbindung +tooltip.tagesbasierte.intervalle +Nur nach Rücksprache mit Support: +Passiver Schalter +Skriptelement bearbeiten +OK +Wählen Sie die Schnittstelle über die das Skript empfangen werden soll. +LOGIK = A xor B +Der Selbsttest für Zähler #%d war erfolgreich. +Eingangswert B +Eingangswert A +Intervall 2: +LOGIK = not B +LOGIK = not A +Formeln +Es konnte kein Skript vom gerät empfangen werden. +Operation +Bezeichnung: +Wollen Sie wirklich alle Zählerstände auf 0 zurücksetzen? +Der Selbsttest für Zähler #%d ist fehlgeschlagen. diff --git a/src/org/hwo/pulscounter/Application.java b/src/org/hwo/pulscounter/Application.java index cd48b15..00641fe 100644 --- a/src/org/hwo/pulscounter/Application.java +++ b/src/org/hwo/pulscounter/Application.java @@ -8,9 +8,10 @@ import org.hwo.logging.Logging; public class Application { public static void main(String[] args) { + Logging.Init(args, "synololog.log"); + PulsCounterApplication application = new PulsCounterApplication(args); - - Logging.getInstance().setLimitLogLevel(50); + log(LogLevel.INFO,"Application initialized, starting up user interface"); diff --git a/src/org/hwo/pulscounter/DeviceTester.java b/src/org/hwo/pulscounter/DeviceTester.java index 40acbd9..ff7b5de 100644 --- a/src/org/hwo/pulscounter/DeviceTester.java +++ b/src/org/hwo/pulscounter/DeviceTester.java @@ -20,16 +20,21 @@ public class DeviceTester extends Thread{ public void run() { prepare(); - if (fullTest()){ - PulsCounterApplication.getApplication().message(String.format( - Messages.getString("Der Selbsttest für Zähler #%d war erfolgreich."), - device.getDeviceSerial() - )); - } else { - PulsCounterApplication.getApplication().message(String.format( - Messages.getString("Der Selbsttest für Zähler #%d ist fehlgeschlagen."), - device.getDeviceSerial() - )); + try { + if (fullTest()){ + PulsCounterApplication.getApplication().message(String.format( + Messages.getString("Der Selbsttest für Zähler #%d war erfolgreich."), + device.getDeviceSerial() + )); + } else { + PulsCounterApplication.getApplication().message(String.format( + Messages.getString("Der Selbsttest für Zähler #%d ist fehlgeschlagen."), + device.getDeviceSerial() + )); + } + } catch (Exception e){ + log(ERROR,"Exception while testing device"); + log(e); } unprepare(); @@ -103,6 +108,8 @@ public class DeviceTester extends Thread{ } + sleep( 500 ); + if (!checkCounters(20)) return false; @@ -191,7 +198,7 @@ public class DeviceTester extends Thread{ for (int i=0;i<32;i++){ if (_set[i] != _act[i]){ success = false; - log(INFO,"Setting Channel Counter %d failed",i); + log(INFO,"Setting Channel Counter %d failed [%d!=%d]",i,_set[i],_act[i]); } } return success; diff --git a/src/org/hwo/pulscounter/PulsCounterApplication.java b/src/org/hwo/pulscounter/PulsCounterApplication.java index dd4e8a6..0d1eaad 100644 --- a/src/org/hwo/pulscounter/PulsCounterApplication.java +++ b/src/org/hwo/pulscounter/PulsCounterApplication.java @@ -210,9 +210,7 @@ public class PulsCounterApplication implements ServiceLinkListener{ return this.applicationConfiguration; } - private static void logStartup(){ - Logging.setLogFileName("synololog.log"); - + private static void logStartup(){ log("Synololog Application Startup"); log("JAVA Environment: %s (%s)", System.getProperty("java.version"), diff --git a/src/org/hwo/pulscounter/device/SimpleLinkDeviceConnector.java b/src/org/hwo/pulscounter/device/SimpleLinkDeviceConnector.java index 2f9c9d1..aeeb2cd 100644 --- a/src/org/hwo/pulscounter/device/SimpleLinkDeviceConnector.java +++ b/src/org/hwo/pulscounter/device/SimpleLinkDeviceConnector.java @@ -9,6 +9,7 @@ import java.util.Date; import java.util.LinkedList; import java.util.List; +import org.hwo.ArrayHelper; import org.hwo.io.NewSerialPort.NewSerialPort; import org.hwo.pulscounter.SnapShot; import org.hwo.pulscounter.simplescript.SimpleScript.SimpleScriptElement; @@ -115,21 +116,22 @@ public class SimpleLinkDeviceConnector implements IDeviceConnector { @Override public int[] getCounters() { - int[] values = new int[32]; + checkOpen(); - for (int n=0;n<32;n++){ - values[n] = getCounter(n); + try { + return ArrayHelper.unbox(this.simpleLink.readInt(0x0600,32)); + } catch (ServiceLinkException | IOException e){ + log(e); + return null; } - - checkRealTimeClock(); - - return values; } @Override public void setCounters(int[] values) { - for (int n=0;n<32;n++){ - setCounter(n, values[n]); + try { + simpleLink.writeInt(0x0600, values); + } catch (IOException | ServiceLinkException e) { + log(e); } } @@ -140,7 +142,7 @@ public class SimpleLinkDeviceConnector implements IDeviceConnector { checkOpen(); try { - v = simpleLink.readInt( 0x600 + channel ); + v = simpleLink.readInt( 0x0600 + channel ); } catch (Exception e) { throw new NoDeviceConnectionException(); } @@ -311,13 +313,23 @@ public class SimpleLinkDeviceConnector implements IDeviceConnector { @Override public float[] getAnalogs() { - float[] values = new float[32]; - - for (int n=0;n<8;n++){ - values[n] = getAnalog(n); - } + checkOpen(); - return values; + try { + Integer[] values = this.simpleLink.readInt(0x8000, 8); + float[] analogs = new float[8]; + + for (int n=0;n<8;n++){ + if (values[n] != null){ + analogs[n] = (values[n] / 6553.60f); + } + } + + return analogs; + } catch (Exception e){ + log(e); + return null; + } } @Override @@ -365,11 +377,11 @@ public class SimpleLinkDeviceConnector implements IDeviceConnector { try { Integer sbrk,stacklimit,cycletime,enginestate; - - sbrk = simpleLink.readInt(0x0020); - stacklimit = simpleLink.readInt(0x0021); - cycletime = simpleLink.readInt(0x1310); - enginestate = simpleLink.readInt(0x0703); + Integer[] rd = simpleLink.readInt(new int[]{0x0020,0x0021,0x1310,0x0703}); + sbrk = rd[0]; + stacklimit = rd[1]; + cycletime = rd[2]; + enginestate = rd[3]; log(INFO,"HEAP END: 0x%04x SYS-STACK: 0x%04x",sbrk,stacklimit); log(INFO,"I/O cycle time: %dus",cycletime); @@ -550,19 +562,22 @@ public class SimpleLinkDeviceConnector implements IDeviceConnector { @Override public int[] getDebounce() { - int[] filters = new int[32]; + checkOpen(); - for (int i=0;i<32;i++){ - filters[i] = getDebounce(i); + try { + return ArrayHelper.unbox(this.simpleLink.readInt(0x1020,32)); + } catch (ServiceLinkException | IOException e){ + log(e); + return null; } - - return filters; } @Override public void setDebounce(int[] filters) { - for (int i=0;i<32;i++){ - setDebounce(i,filters[i]); + try { + this.simpleLink.writeInt(0x1020, filters); + } catch (ServiceLinkException | IOException e) { + log(e); } } @@ -592,13 +607,14 @@ public class SimpleLinkDeviceConnector implements IDeviceConnector { @Override public int[] getWindows() { - int[] windows = new int[32]; + checkOpen(); - for (int i=0;i<32;i++){ - windows[i] = getWindow(i); + try { + return ArrayHelper.unbox(this.simpleLink.readInt(0x1280,32)); + } catch (ServiceLinkException | IOException e){ + log(e); + return null; } - - return windows; } @Override @@ -799,13 +815,14 @@ public class SimpleLinkDeviceConnector implements IDeviceConnector { @Override public int[] getIncrements() { - int[] values = new int[32]; + checkOpen(); - for (int n=0;n<32;n++){ - values[n] = getIncrement(n); + try { + return ArrayHelper.unbox(this.simpleLink.readInt(0x12A0,32)); + } catch (ServiceLinkException | IOException e){ + log(e); + return null; } - - return values; } @Override diff --git a/src/org/hwo/pulscounter/ui/DeviceConfiguration.java b/src/org/hwo/pulscounter/ui/DeviceConfiguration.java index c5bab3f..46c4e48 100644 --- a/src/org/hwo/pulscounter/ui/DeviceConfiguration.java +++ b/src/org/hwo/pulscounter/ui/DeviceConfiguration.java @@ -412,10 +412,14 @@ public class DeviceConfiguration extends JDialog { windows = deviceConnector.getWindows(); increments = deviceConnector.getIncrements(); - tseI0.setValue( deviceConnector.getInterval(0) ); - tseI1.setValue( deviceConnector.getInterval(1) ); - tseI2.setValue( deviceConnector.getInterval(2) ); - tseI3.setValue( deviceConnector.getInterval(3) ); + Integer iv0 = deviceConnector.getInterval(0); + tseI0.setValue( iv0 == 0 ? null : iv0 ); + Integer iv1 = deviceConnector.getInterval(0); + tseI1.setValue( iv1 == 0 ? null : iv1 ); + Integer iv2 = deviceConnector.getInterval(0); + tseI2.setValue( iv2 == 0 ? null : iv2 ); + Integer iv3 = deviceConnector.getInterval(0); + tseI3.setValue( iv3 == 0 ? null : iv3 ); } private void writeDevice(){ diff --git a/src/org/hwo/pulscounter/ui/NewMainWindow.java b/src/org/hwo/pulscounter/ui/NewMainWindow.java index 36f6bc1..107f0bd 100644 --- a/src/org/hwo/pulscounter/ui/NewMainWindow.java +++ b/src/org/hwo/pulscounter/ui/NewMainWindow.java @@ -194,7 +194,6 @@ public class NewMainWindow implements PulsCounterApplicationListener, TaskletLis backgroundThread = new BackgroundThread(); backgroundThread.start(); - restoreState(); frmSynolog.setVisible(true); diff --git a/synololog.jardesc b/synololog.jardesc new file mode 100644 index 0000000..b4a285f --- /dev/null +++ b/synololog.jardesc @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +