From: felix Date: Tue, 15 May 2007 19:55:17 +0000 (+0000) Subject: Oszilloskop aufgenommen X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=a25ffcdb7159e947664faad9114cfe7efec89da0;p=bytewurf.git Oszilloskop aufgenommen git-svn-id: https://www.internetallee.de/svn/bytewurf@24 a944a559-bf0e-0410-8ddc-85264b264b6c --- diff --git a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdosenApplet.java b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdosenApplet.java index 63a59a8..e03ea29 100644 --- a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdosenApplet.java +++ b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdosenApplet.java @@ -42,6 +42,7 @@ public class NetzdosenApplet extends Applet { modePanel.add("Config", new ConfigPanel(netzdose)); modePanel.add("LED", new NetzdosenLEDPanel(netzdose)); modePanel.add("Commands", new CommandPanel(netzdose)); + modePanel.add("Oszilloskop", new Oszilloskop(netzdose)); JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); splitPane.add(modePanel, JSplitPane.TOP); diff --git a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/Oszilloskop.java b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/Oszilloskop.java new file mode 100644 index 0000000..e1f2a6c --- /dev/null +++ b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/Oszilloskop.java @@ -0,0 +1,105 @@ +/* + * Created on 15.05.2007 + * + * To change this generated comment go to + * Window>Preferences>Java>Code Generation>Code Template + */ +package de.bytewurf.projekte.netzschalter; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.geom.Line2D; + +import javax.swing.BorderFactory; +import javax.swing.JPanel; + +/** + * @author felix + */ +public class Oszilloskop extends JPanel { + + Netzdose netzdose; + + int[] data; + + int min; + + int max; + + public Oszilloskop(Netzdose netzdose) { + this.netzdose = netzdose; + data = new int[] { -20, 1, 30, 10, 20, 25, 10, 2 }; + this.setPreferredSize(new Dimension(200, 100)); + this.setBorder(BorderFactory.createLoweredBevelBorder()); + repaint(); + } + + public void paintComponent(Graphics g2) { + super.paintComponent(g2); + Graphics2D g = (Graphics2D) g2; + Dimension size = getSize(); + int border_x = 10; + int border_y = 10; + + setBackground(Color.black); + g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + g.setPaint(Color.red); + g.drawRect(border_x, border_y, (int) size.getWidth() - 2 * border_x, + (int) size.getHeight() - 2 * border_y); + + if (data != null) { + if (min == max) { + min = getMin(); + max = getMax(); + } + LogMediator.getInstance().log("Min: " + min + " Max: " + max); + + double factor_x = (size.getWidth() - border_x * 2.0) / data.length; + double factor_y = (size.getHeight() - border_y * 2.0) / (max - min); + + g.setPaint(Color.green); + int old_y = size.height + - ((int) ((data[0] - min) * factor_y + border_y)); + int old_x = border_x; + for (int i = 0; i < data.length; i++) { + + int x = (int) (border_x + i * factor_x); + int y = size.height + - ((int) ((data[i] - min) * factor_y + border_y)); + g.draw(new Line2D.Double(old_x, old_y, x, y)); + old_x = x; + old_y = y; + } + + } + g.setPaint(Color.black); + } + + private int getMax() { + int result = Integer.MIN_VALUE; + for (int i = 0; i < data.length; i++) + if (data[i] > result) + result = data[i]; + return result; + } + + private int getMin() { + int result = Integer.MAX_VALUE; + for (int i = 0; i < data.length; i++) + if (data[i] < result) + result = data[i]; + return result; + } + + public void setData(int[] data) { + this.data = data; + min = 0; + max = 0; + repaint(); + } + +}