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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+