From c3544130a5a3edc73ba4ba2d7ed7f541e822ea5c Mon Sep 17 00:00:00 2001 From: Harald Wolff Date: Fri, 24 Jan 2014 11:41:56 +0100 Subject: [PATCH] Initial Commit --- .classpath | 7 + .project | 17 ++ .settings/org.eclipse.jdt.core.prefs | 11 + src/org/hwo/pulscounter/CounterChannel.java | 29 +++ src/org/hwo/pulscounter/PulsCounter.java | 20 ++ .../hwo/pulscounter/PulsCounterInterface.java | 37 +++ .../hwo/pulscounter/PulsCounterWindow.java | 229 ++++++++++++++++++ src/org/hwo/pulscounter/TimeBarrier.java | 64 +++++ 8 files changed, 414 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 src/org/hwo/pulscounter/CounterChannel.java create mode 100644 src/org/hwo/pulscounter/PulsCounter.java create mode 100644 src/org/hwo/pulscounter/PulsCounterInterface.java create mode 100644 src/org/hwo/pulscounter/PulsCounterWindow.java create mode 100644 src/org/hwo/pulscounter/TimeBarrier.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..0eb4515 --- /dev/null +++ b/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..ed216f2 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + org.hwo.pulscounter + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..8000cd6 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/src/org/hwo/pulscounter/CounterChannel.java b/src/org/hwo/pulscounter/CounterChannel.java new file mode 100644 index 0000000..2f96864 --- /dev/null +++ b/src/org/hwo/pulscounter/CounterChannel.java @@ -0,0 +1,29 @@ +package org.hwo.pulscounter; + +import org.hwo.models.TableMapper.TableColumn; + +public class CounterChannel { + + @TableColumn(label="Kanal",firstColumn=true) + private Integer channel; + @TableColumn(label="ZŠhlerstand",after="Kanal") + public Integer value; + @TableColumn(label="Korrekturwert",after="ZŠhlerstand") + public Integer correct; + + @TableColumn(label="Ergebnis",after="Korrekturwert") + private Integer correctedValue() + { + return value + correct; + } + + public CounterChannel(int ch) + { + channel = ch; + value = 0; + correct = 0; + } + + + +} diff --git a/src/org/hwo/pulscounter/PulsCounter.java b/src/org/hwo/pulscounter/PulsCounter.java new file mode 100644 index 0000000..e40c1eb --- /dev/null +++ b/src/org/hwo/pulscounter/PulsCounter.java @@ -0,0 +1,20 @@ +package org.hwo.pulscounter; + +public class PulsCounter { + + + public static void main(String args[]) + { + + PulsCounterWindow window = new PulsCounterWindow(); + window.setVisible(true); + + + + } + + + + + +} diff --git a/src/org/hwo/pulscounter/PulsCounterInterface.java b/src/org/hwo/pulscounter/PulsCounterInterface.java new file mode 100644 index 0000000..d4ff928 --- /dev/null +++ b/src/org/hwo/pulscounter/PulsCounterInterface.java @@ -0,0 +1,37 @@ +package org.hwo.pulscounter; + +import java.io.RandomAccessFile; +import java.util.ArrayList; +import java.util.List; + +import org.hwo.io.SerialPort; + +public class PulsCounterInterface { + + SerialPort port; + + public PulsCounterInterface(String portName) + { + port = new SerialPort(portName); + } + + public List readCounter() + { + ArrayList counter = new ArrayList(); + + /* + if (port.open()) + { + port.close(); + } + */ + for (int i=0;i<32;i++) + counter.add( i * i); + + return counter; + } + + + + +} diff --git a/src/org/hwo/pulscounter/PulsCounterWindow.java b/src/org/hwo/pulscounter/PulsCounterWindow.java new file mode 100644 index 0000000..fb91d50 --- /dev/null +++ b/src/org/hwo/pulscounter/PulsCounterWindow.java @@ -0,0 +1,229 @@ +package org.hwo.pulscounter; + +import java.awt.EventQueue; + +import javax.swing.JFrame; +import javax.swing.JPanel; + +import java.awt.BorderLayout; + +import javax.swing.JButton; + +import java.awt.GridBagLayout; +import java.awt.GridBagConstraints; + +import javax.swing.JLabel; +import javax.swing.JComboBox; + +import org.hwo.csv.CSV; +import org.hwo.io.SerialPort; +import org.hwo.models.TableMapper.TableMapper; + +import java.awt.Insets; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.prefs.Preferences; + +import javax.swing.JTable; +import javax.swing.JScrollPane; + +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; + +public class PulsCounterWindow extends JFrame{ + private JComboBox cbInterfaces; + private JTable tCounter; + + private TableMapper tmCounter; + private Preferences prefs; + private List counterChannels; + + List timeBarriers; + + + public PulsCounterWindow() { + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setBounds(100, 100, 732, 350); + setTitle("PulsCounter"); + GridBagLayout gridBagLayout = new GridBagLayout(); + gridBagLayout.columnWidths = new int[]{0, 0}; + gridBagLayout.rowHeights = new int[]{0, 0, 0}; + gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE}; + gridBagLayout.rowWeights = new double[]{0.0, 1.0, Double.MIN_VALUE}; + getContentPane().setLayout(gridBagLayout); + + JPanel panel = new JPanel(); + GridBagConstraints gbc_panel = new GridBagConstraints(); + gbc_panel.insets = new Insets(0, 0, 5, 0); + gbc_panel.fill = GridBagConstraints.BOTH; + gbc_panel.gridx = 0; + gbc_panel.gridy = 0; + getContentPane().add(panel, gbc_panel); + GridBagLayout gbl_panel = new GridBagLayout(); + gbl_panel.columnWidths = new int[]{0, 0, 0, 0, 0, 0}; + gbl_panel.rowHeights = new int[]{0, 0, 0}; + gbl_panel.columnWeights = new double[]{0.0, 1.0, 0.0, 0.0, 0.0, Double.MIN_VALUE}; + gbl_panel.rowWeights = new double[]{0.0, 1.0, Double.MIN_VALUE}; + panel.setLayout(gbl_panel); + + JLabel lblNewLabel = new JLabel("Schnittstelle:"); + GridBagConstraints gbc_lblNewLabel = new GridBagConstraints(); + gbc_lblNewLabel.insets = new Insets(0, 0, 5, 5); + gbc_lblNewLabel.anchor = GridBagConstraints.WEST; + gbc_lblNewLabel.gridx = 0; + gbc_lblNewLabel.gridy = 0; + panel.add(lblNewLabel, gbc_lblNewLabel); + + cbInterfaces = new JComboBox(); + cbInterfaces.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent arg0) { + + System.err.println("Save Pref PORT"); + + prefs.put("io.port", cbInterfaces.getSelectedItem().toString()); + try + { + prefs.sync(); + } catch (Exception e) + { + System.err.println("Exception: " + e); + e.printStackTrace(); + } + } + }); + GridBagConstraints gbc_cbInterfaces = new GridBagConstraints(); + gbc_cbInterfaces.insets = new Insets(0, 0, 5, 5); + gbc_cbInterfaces.fill = GridBagConstraints.HORIZONTAL; + gbc_cbInterfaces.gridx = 1; + gbc_cbInterfaces.gridy = 0; + panel.add(cbInterfaces, gbc_cbInterfaces); + + JButton btnNewButton = new JButton("Jetzt aktualisieren..."); + btnNewButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent arg0) { + updateCounter(); + } + }); + GridBagConstraints gbc_btnNewButton = new GridBagConstraints(); + gbc_btnNewButton.insets = new Insets(0, 0, 5, 5); + gbc_btnNewButton.gridx = 2; + gbc_btnNewButton.gridy = 0; + panel.add(btnNewButton, gbc_btnNewButton); + + JButton btnTagesdateiSchreiben = new JButton("Tagesdatei schreiben..."); + btnTagesdateiSchreiben.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent arg0) { + writeDayFile(); + } + }); + GridBagConstraints gbc_btnTagesdateiSchreiben = new GridBagConstraints(); + gbc_btnTagesdateiSchreiben.insets = new Insets(0, 0, 5, 5); + gbc_btnTagesdateiSchreiben.gridx = 3; + gbc_btnTagesdateiSchreiben.gridy = 0; + panel.add(btnTagesdateiSchreiben, gbc_btnTagesdateiSchreiben); + + JButton btnNewButton_1 = new JButton("New button"); + GridBagConstraints gbc_btnNewButton_1 = new GridBagConstraints(); + gbc_btnNewButton_1.insets = new Insets(0, 0, 5, 0); + gbc_btnNewButton_1.gridx = 4; + gbc_btnNewButton_1.gridy = 0; + panel.add(btnNewButton_1, gbc_btnNewButton_1); + + JScrollPane scrollPane = new JScrollPane(); + GridBagConstraints gbc_scrollPane = new GridBagConstraints(); + gbc_scrollPane.fill = GridBagConstraints.BOTH; + gbc_scrollPane.gridx = 0; + gbc_scrollPane.gridy = 1; + getContentPane().add(scrollPane, gbc_scrollPane); + + tCounter = new JTable(); + scrollPane.setViewportView(tCounter); + + + initialize(); + } + + private void initialize() { + + prefs = Preferences.userRoot(); + + String defaultPort = prefs.get("io.port", "COM1"); + + for (String portName:SerialPort.getPortNames()) + cbInterfaces.addItem(portName); + + System.err.println("Default Port: " + defaultPort); + + for (int i=0;i < cbInterfaces.getItemCount();i++) + { + if (cbInterfaces.getItemAt(i).equals(defaultPort)) + cbInterfaces.setSelectedIndex(i); + } + + counterChannels = new ArrayList(); + for (int i=0;i<32;i++) + counterChannels.add(new CounterChannel( i + 1) ); + + tmCounter = new TableMapper(CounterChannel.class, tCounter); + tmCounter.setRows(counterChannels); + tmCounter.getColumnInfo().get(0).setReadOnly(true); + tmCounter.getColumnInfo().get(1).setReadOnly(true); + tmCounter.getColumnInfo().get(3).setReadOnly(true); + + timeBarriers = new ArrayList(); + + timeBarriers.add(new TimeBarrier(01,00)); + timeBarriers.add(new TimeBarrier(03,00)); + timeBarriers.add(new TimeBarrier(06,00)); + + } + + private void updateCounter() + { + PulsCounterInterface intf = new PulsCounterInterface(cbInterfaces.getSelectedItem().toString()); + + List values = intf.readCounter(); + for (int i=0;i values; + + public TimeBarrier(Integer timeOfDay) + { + this.timeOfDay = timeOfDay; + values = new ArrayList(); + load(); + } + + public TimeBarrier(Integer HourOfDay,Integer MinuteOfDay) + { + this.timeOfDay = (HourOfDay * 60) + MinuteOfDay; + values = new ArrayList(); + load(); + } + + + + public void update(List values) + { + Date date = new Date(); + int now = (date.getHours() * 60) + date.getMinutes(); + + if (now < timeOfDay) + { + this.values.clear(); + for (Integer v: values) + this.values.add(v); + } + } + + public void save() + { + CSV csv = new CSV(); + for (Integer i:values) + csv.getCells().add(new String[]{i.toString()}); + + + csv.saveToFile(String.format("day-%d.csv", timeOfDay)); + } + + public void load() + { + CSV csv = new CSV(); + csv.readFromFile(String.format("day-%d.csv", timeOfDay)); + + for (String[] row: csv.getCells()) + this.values.add(Integer.parseInt(row[0])); + + } + + +}