Hallo Leute;
ich habe eine Klasse geschrieben, die einen Befehl zu einem "Messgerät" sendet, und bekommt Antwort.
Das Problem ist das die Daten die ich bekomme werden nicht im chart gezeichnet.
Java Code:
Danke im voraus
Gruß
ich habe eine Klasse geschrieben, die einen Befehl zu einem "Messgerät" sendet, und bekommt Antwort.
Das Problem ist das die Daten die ich bekomme werden nicht im chart gezeichnet.
Java Code:
Code:
import javax.comm.CommPortIdentifier;
import javax.comm.SerialPort;
import javax.comm.SerialPortEvent;
import javax.comm.SerialPortEventListener;
import javax.comm.UnsupportedCommOperationException;
import javax.swing.JButton;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.XYSeries;
import org.jfree.data.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.awt.*;
import java.awt.event.*;
public class TempBefehl extends ApplicationFrame implements ActionListener
{
static CommPortIdentifier portID;
static SerialPort serialport;
static InputStream ins;
static OutputStream out;
static double temp = 0;
static double winkel = 0;
static PrintWriter aus ;
String nachricht= null;
final JButton button1 = new JButton("Add To Series 1");
final static XYSeries series = new XYSeries("");
final static XYSeriesCollection dataset = new XYSeriesCollection(series);
public TempBefehl(String title)//(String port, String title)
{
super(title);
try
{
// erzeugt ein CommPortIdentfier-Objekt, hier heisst es portID
portID = CommPortIdentifier.getPortIdentifier("COM1");
// öffne den port COM1
serialport = (SerialPort) portID.open("COM1", 5000);
}
catch (Exception exc)
{
System.out.println("Fehler :" + exc);
}
try
{
// InputStream
ins = serialport.getInputStream();
// OutputStream
out = serialport.getOutputStream();
serialport.addEventListener(new commListener());
}
catch (Exception e)
{
System.out.println("Fehler: " + e);
}
serialport.notifyOnDataAvailable(true);
try
{
// Hier werden die Parameter festgelegt
serialport.setSerialPortParams(115200, SerialPort.DATABITS_8,
SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
}
catch (UnsupportedCommOperationException e)
{
}
final JFreeChart chart = ChartFactory.createXYLineChart(
"Diagramm",
"Winkel",
"Temperatur",
dataset,
PlotOrientation.VERTICAL,
true,
true,
false);
final ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
chartPanel.setMouseZoomable(true, false);
setContentPane(chartPanel);
final XYPlot plot = chart.getXYPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setRangeGridlinePaint(Color.white);
final ValueAxis axis = plot.getDomainAxis();
axis.setAutoRange(true);// x axe wird gefüllt
axis.setRange(0,90);
final NumberAxis rangeAxis2 = (NumberAxis) plot.getRangeAxis();
// rangeAxis2.setAutoRangeIncludesZero(false);
rangeAxis2.setRange(0,200);
final JPanel content = new JPanel(new BorderLayout());
content.add(chartPanel);
content.add(chartPanel);
button1.setActionCommand("ADD_DATA_1");
//button1.addActionListener(this);
final JPanel buttonPanel = new JPanel(new FlowLayout());
buttonPanel.add(button1);
content.add(buttonPanel, BorderLayout.SOUTH);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
setContentPane(content);
button1.addActionListener(this);
}
// public class sendeListener implements ActionListener
//{
public void actionPerformed(ActionEvent e)
{
Object source = e.getSource();
while(true)
{
int x = 0X02;
char stx = (char)x;
//System.out.println(stx);
aus = new PrintWriter(out);
aus.println(stx);
aus.flush();
aus.close();
try
{
Thread.sleep(1000);//1000 millisekunde = 1 sekunde
}
catch(InterruptedException ex)
{
ex.printStackTrace();
//close();
}
}
}
public class commListener implements SerialPortEventListener
{
public void serialEvent(SerialPortEvent event)
{
if (event.getEventType() == SerialPortEvent.DATA_AVAILABLE)
{
byte[] readBuffer = new byte[256];
try
{
//while (ins.available() > 0)
if (ins.read(readBuffer)!= readBuffer.length)
{
int numBytes = ins.read(readBuffer);
byte zeichen;
for (int i=2 ;i<readBuffer.length; i++)
{
zeichen = (readBuffer[i]);
winkel = (255/255.0)*(i-2);
temp = byteToInt(zeichen)/255.0 * (200-100) + 100;
System.out.println(winkel+" "+temp+"\n");
series.add(winkel,temp);
}
series.clear();
}
}
catch (IOException e)
{
System.out.println("Fehler: " + e);
//close();
}
}
}
}
public static int byteToInt(byte b)
{
return (b & 0x00ff);
}
public void close()
{
try
{
ins.close();
out.close();
}
catch (IOException e)
{}
serialport.close();
}
public static void zeichnen()
{
TempBefehl demo = new TempBefehl("");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
}
Danke im voraus
Gruß