Hallo,
ich nutze die Bibliothek jSerialComm (http://fazecast.github.io/jSerialComm/) um mit einem Arduino Mega zu kommunizieren. Am Ende soll es sowohl auf Senden als auch Empfangen hinauslaufen, jedoch habe ich aktuell ein Problem beim Senden an den Arduino.
Zunächst muss ich dazu sagen, dass ich das ganze schon funktionerend mit einer kleinen grafischen Oberfläche getestet habe. Den Code dazu habe ich mit Hilfe eines Tutorials auf YouTube erstellt.
Der Code dazu hier:
Ich habe den entsprechenden Code zum Verbinden und Senden dann in mein eigentliches Programm übernommen. Beim Testen in dem Programm bekam ich dann jedes mal eine NullPointerException beim PrintWriter und konnte mir nicht erklären wieso. Habe dazu auch schon in den letzten Tagen Google benutzt und dieses Forum durchsucht. Da ich aber auf keine Lösung gestoßen bin habe ich mich nun hier angemeldet, da ich hoffe ihr könnt mir am Code gezielt weiterhelfen.
Habe mittlerweile auch herausgefunden, was denn null ist. Und zwar funktioniert chosenPort.getOutputStream() nicht bzw. gibt den Wert null zurück. Soweit ich weiß ist dies der Fall, wenn der Port nur in eine Richtung offen wäre, aber mit dem Testprogramm funktioniert alles.
Hier noch der exakte Fehler:
Hier der Code meines eigentlichen Programmes, vorsichtig, der ist mittlerweile recht umfangreich. Der entsprechende Code zum Verbinden ist ab Zeile 479 zu finden. Die if-Anweisung dient dazu, eine leere ComboBox abzufangen bzw. dann einen Fehler auszugeben, wenn versucht wird zu verbinden (noch nicht realisiert). Der Teil zum Senden bzw. der PrintWriter ist in Zeile 938 für einen Button und in Zeile 1015 für des MenuItem zu finden.
Vielen Dank für die Hilfe.
Falls ihr weitere Tipps habt und ich manches eher ungünstig mache oder so, wie man es nicht tun sollte, dann immer raus damit.
Ich nutze die IDE Eclipse und aus Bequemlichkeit auch den WindowBuilder und bin auch leider etwas faul, was das Kommentieren betrifft, hoffe das ist okay und ich liefer hier grad nichts allzu peinliches ab.
Ich finde leider keinen Unterschied bzw. woran es liegen kann, dass es im Testprogramm funktioniert und in dem anderen nicht.
MfG. Greyho
ich nutze die Bibliothek jSerialComm (http://fazecast.github.io/jSerialComm/) um mit einem Arduino Mega zu kommunizieren. Am Ende soll es sowohl auf Senden als auch Empfangen hinauslaufen, jedoch habe ich aktuell ein Problem beim Senden an den Arduino.
Zunächst muss ich dazu sagen, dass ich das ganze schon funktionerend mit einer kleinen grafischen Oberfläche getestet habe. Den Code dazu habe ich mit Hilfe eines Tutorials auf YouTube erstellt.
Der Code dazu hier:
Java:
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintWriter;
import javax.swing.JComboBox;
import com.fazecast.jSerialComm.SerialPort;
public class Textfeld {
private JFrame frmEingabetest;
private JTextField txtEingabe;
public JButton btnConnect;
public JComboBox<String> cbPortlist;
public String Eingabe;
static SerialPort chosenPort;
/**
* Launch the application.
*/
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
try
{
Textfeld window = new Textfeld();
window.frmEingabetest.setVisible(true);
}
catch (Exception e)
{
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Textfeld()
{
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize()
{
frmEingabetest = new JFrame();
frmEingabetest.setTitle("Eingabetest");
frmEingabetest.setBounds(100, 100, 450, 120);
frmEingabetest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmEingabetest.getContentPane().setLayout(null);
final JButton btnConnect = new JButton("Connect");
btnConnect.setBounds(10, 47, 100, 23);
frmEingabetest.getContentPane().add(btnConnect);
JButton btnSend = new JButton("Send");
btnSend.setBounds(324, 47, 100, 23);
frmEingabetest.getContentPane().add(btnSend);
txtEingabe = new JTextField();
txtEingabe.setBounds(124, 11, 300, 20);
frmEingabetest.getContentPane().add(txtEingabe);
final JComboBox<String> cbPortlist = new JComboBox<String>();
cbPortlist.setBounds(10, 11, 100, 20);
frmEingabetest.getContentPane().add(cbPortlist);
// populate the drop-down box
SerialPort[] portNames = SerialPort.getCommPorts();
for(int i = 0; i < portNames.length; i++)
cbPortlist.addItem(portNames[i].getSystemPortName());
// configure the connect button and use another thread to send data
btnConnect.addActionListener(new ActionListener()
{
@Override public void actionPerformed(ActionEvent arg0)
{
if(btnConnect.getText().equals("Connect"))
{
// attempt to connect to the serial port
chosenPort = SerialPort.getCommPort(cbPortlist.getSelectedItem().toString());
chosenPort.setComPortTimeouts(SerialPort.TIMEOUT_SCANNER, 0, 0);
System.out.println(chosenPort.getOutputStream());
if(chosenPort.openPort())
{
btnConnect.setText("Disconnect");
cbPortlist.setEnabled(false);
}
}
else
{
// disconnect from the serial port
chosenPort.closePort();
cbPortlist.setEnabled(true);
btnConnect.setText("Connect");
}
}
});
// create a new thread for sending data to the arduino
btnSend.addActionListener(new ActionListener()
{
@Override public void actionPerformed(ActionEvent arg0)
{
Thread thread = new Thread(){
@Override public void run()
{
// wait after connecting, so the bootloader can finish
try
{
Thread.sleep(100);
}
catch(Exception e)
{
}
PrintWriter output = new PrintWriter(chosenPort.getOutputStream());
Eingabe = txtEingabe.getText();
output.print(Eingabe);
output.flush();
}
};
thread.start();
}
});
}
}
Ich habe den entsprechenden Code zum Verbinden und Senden dann in mein eigentliches Programm übernommen. Beim Testen in dem Programm bekam ich dann jedes mal eine NullPointerException beim PrintWriter und konnte mir nicht erklären wieso. Habe dazu auch schon in den letzten Tagen Google benutzt und dieses Forum durchsucht. Da ich aber auf keine Lösung gestoßen bin habe ich mich nun hier angemeldet, da ich hoffe ihr könnt mir am Code gezielt weiterhelfen.
Habe mittlerweile auch herausgefunden, was denn null ist. Und zwar funktioniert chosenPort.getOutputStream() nicht bzw. gibt den Wert null zurück. Soweit ich weiß ist dies der Fall, wenn der Port nur in eine Richtung offen wäre, aber mit dem Testprogramm funktioniert alles.
Hier noch der exakte Fehler:
Code:
Exception in thread "Thread-2" java.lang.NullPointerException
at java.io.Writer.<init>(Writer.java:88)
at java.io.OutputStreamWriter.<init>(OutputStreamWriter.java:109)
at java.io.PrintWriter.<init>(PrintWriter.java:148)
at java.io.PrintWriter.<init>(PrintWriter.java:131)
at GUI_LeftHand$19$1.run(GUI_LeftHand.java:950)
Hier der Code meines eigentlichen Programmes, vorsichtig, der ist mittlerweile recht umfangreich. Der entsprechende Code zum Verbinden ist ab Zeile 479 zu finden. Die if-Anweisung dient dazu, eine leere ComboBox abzufangen bzw. dann einen Fehler auszugeben, wenn versucht wird zu verbinden (noch nicht realisiert). Der Teil zum Senden bzw. der PrintWriter ist in Zeile 938 für einen Button und in Zeile 1015 für des MenuItem zu finden.
Java:
import java.awt.EventQueue;
import java.awt.Image;
import java.awt.event.*;
import java.io.PrintWriter;
import javax.swing.JFrame;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JSpinner;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JMenu;
import javax.swing.JInternalFrame;
import javax.swing.JSlider;
import com.fazecast.jSerialComm.SerialPort;
import javax.swing.SpinnerNumberModel;
import javax.swing.SwingConstants;
public class GUI_LeftHand
{
public JFrame frmLinkeHand;
// erster Wert des Fingers ist immer -1 zur Kontrolle, ob jeder Figer angeklickt wurde (siehe unten)
public static int Daumen1 = -1;
public static int Daumen2 = 0;
public static int Zeigefinger1 = -1;
public static int Zeigefinger2 = 0;
public static int Zeigefinger3 = 0;
public static int Mittelfinger1 = -1;
public static int Mittelfinger2 = 0;
public static int Mittelfinger3 = 0;
public static int Ringfinger1 = -1;
public static int Ringfinger2 = 0;
public static int Ringfinger3 = 0;
public static int kleinerFinger1 = -1;
public static int kleinerFinger2 = 0;
public static int kleinerFinger3 = 0;
public static boolean links = false;
int Geschwindigkeit = 0;
public String Eingabe;
String Matrix = new String();
public static SerialPort chosenPort;
public static Hand_Auswahl HandAuswahl;
public static GUI_RightHand Right;
public static Winkelmessung Winkel;
/**
* Launch the application.
*/
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
try
{
GUI_LeftHand window = new GUI_LeftHand();
window.frmLinkeHand.setVisible(true);
}
catch (Exception e)
{
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public GUI_LeftHand()
{
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize()
{
frmLinkeHand = new JFrame();
frmLinkeHand.getContentPane().setLocation(-272, -142);
frmLinkeHand.setTitle("Linke Hand");
frmLinkeHand.setBounds(100, 100, 500, 450);
frmLinkeHand.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmLinkeHand.getContentPane().setLayout(null);
frmLinkeHand.setResizable(false);
final JButton btnAusfhren = new JButton("Ausf\u00FChren");
btnAusfhren.setBounds(10, 387, 100, 23);
frmLinkeHand.getContentPane().add(btnAusfhren);
btnAusfhren.setEnabled(false);
JButton btnBeenden = new JButton("Beenden");
btnBeenden.setBounds(374, 387, 100, 23);
frmLinkeHand.getContentPane().add(btnBeenden);
JButton btnVerbinden = new JButton("Verbinden");
btnVerbinden.setLocation(374, 34);
btnVerbinden.setSize(100, 23);
frmLinkeHand.getContentPane().add(btnVerbinden);
//MenuBar
JMenuBar menuBar = new JMenuBar();
menuBar.setBounds(0, 0, 494, 23);
frmLinkeHand.getContentPane().add(menuBar);
//Datei-Menü
JMenu mnDatei = new JMenu("Datei");
menuBar.add(mnDatei);
final JMenuItem mntmAusfhren = new JMenuItem("Ausf\u00FChren");
mnDatei.add(mntmAusfhren);
mntmAusfhren.setEnabled(false);
JMenuItem mntmRechteHand = new JMenuItem("Rechte Hand");
mnDatei.add(mntmRechteHand);
final JMenuItem mntmTrennen = new JMenuItem("Trennen");
mntmTrennen.setEnabled(false);
mnDatei.add(mntmTrennen);
JMenuItem mntmBeenden = new JMenuItem("Beenden");
mnDatei.add(mntmBeenden);
//Programme-Menü
JMenu mnProgramme = new JMenu("Programme");
menuBar.add(mnProgramme);
JMenuItem mntmTestprogramm = new JMenuItem("Testprogramm 1");
mnProgramme.add(mntmTestprogramm);
JMenuItem mntmTestprogramm_1 = new JMenuItem("Testprogramm 2");
mnProgramme.add(mntmTestprogramm_1);
JMenuItem mntmTestprogramm_2 = new JMenuItem("Testprogramm 3");
mnProgramme.add(mntmTestprogramm_2);
//Winkelmessung-Menü
JMenu mnWinkelmessung = new JMenu("Winkelmessung");
menuBar.add(mnWinkelmessung);
final JMenuItem mntmOeffnen = new JMenuItem("\u00D6ffnen");
mnWinkelmessung.add(mntmOeffnen);
mntmOeffnen.setEnabled(false);
//COM-Port auswählen
JLabel lblCOMPort = new JLabel("Port ausw\u00E4hlen:");
lblCOMPort.setHorizontalAlignment(SwingConstants.LEFT);
lblCOMPort.setBounds(10, 34, 156, 23);
frmLinkeHand.getContentPane().add(lblCOMPort);
final JComboBox<String> cbPortList = new JComboBox<String>();
cbPortList.setBounds(176, 35, 180, 20);
frmLinkeHand.getContentPane().add(cbPortList);
// populate the drop-down box
SerialPort[] portNames = SerialPort.getCommPorts();
for(int i = 0; i < portNames.length; i++)
cbPortList.addItem(portNames[i].getSystemPortName());
//Programmgeschwindigkeit
final JSlider sliderGeschw = new JSlider();
sliderGeschw.setValue(0);
sliderGeschw.setBounds(10, 100, 464, 26);
sliderGeschw.setEnabled(false);
frmLinkeHand.getContentPane().add(sliderGeschw);
JLabel lblGeschw = new JLabel("Programmgeschwindigkeit:");
lblGeschw.setBounds(10, 66, 201, 23);
frmLinkeHand.getContentPane().add(lblGeschw);
//Bild der Hand
JLabel lblLinkeHand = new JLabel("");
Image linkeHand = new ImageIcon(this.getClass().getResource("/linkeHand.png")).getImage();
lblLinkeHand.setIcon(new ImageIcon (linkeHand));
lblLinkeHand.setBounds(61, 152, 150, 200);
frmLinkeHand.getContentPane().add(lblLinkeHand);
//Button Finger
final JButton btnDaumen = new JButton("1");
btnDaumen.setBounds(196, 223, 50, 23);
btnDaumen.setEnabled(false);
frmLinkeHand.getContentPane().add(btnDaumen);
final JButton btnZeigefinger = new JButton("2");
btnZeigefinger.setBounds(179, 180, 50, 23);
btnZeigefinger.setEnabled(false);
frmLinkeHand.getContentPane().add(btnZeigefinger);
final JButton btnMittelfinger = new JButton("3");
btnMittelfinger.setBounds(103, 137, 50, 23);
btnMittelfinger.setEnabled(false);
frmLinkeHand.getContentPane().add(btnMittelfinger);
final JButton btnRingfinger = new JButton("4");
btnRingfinger.setBounds(27, 180, 50, 23);
btnRingfinger.setEnabled(false);
frmLinkeHand.getContentPane().add(btnRingfinger);
final JButton btnkleinerFinger = new JButton("5");
btnkleinerFinger.setBounds(10, 223, 50, 23);
btnkleinerFinger.setEnabled(false);
frmLinkeHand.getContentPane().add(btnkleinerFinger);
//PopUp-Frames
//Daumen
final JInternalFrame infDaumen = new JInternalFrame("Daumen");
infDaumen.setBounds(264, 152, 210, 152);
frmLinkeHand.getContentPane().add(infDaumen);
infDaumen.getContentPane().setLayout(null);
infDaumen.setVisible(false);
infDaumen.addComponentListener(new ComponentAdapter()
{
public void componentMoved(ComponentEvent e)
{
infDaumen.setLocation(264, 152);
}
});
final JSpinner spDaumen1 = new JSpinner();
spDaumen1.setModel(new SpinnerNumberModel(0, 0, 90, 1));
spDaumen1.setBounds(96, 24, 90, 20);
infDaumen.getContentPane().add(spDaumen1);
final JSpinner spDaumen2 = new JSpinner();
spDaumen2.setModel(new SpinnerNumberModel(0, 0, 90, 1));
spDaumen2.setBounds(96, 61, 90, 20);
infDaumen.getContentPane().add(spDaumen2);
JLabel lblDaumen1 = new JLabel("Glied 1: 0\u00B0-90\u00B0");
lblDaumen1.setBounds(96, 5, 90, 23);
infDaumen.getContentPane().add(lblDaumen1);
JLabel lblDaumen2 = new JLabel("Glied 2: 0\u00B0-90\u00B0");
lblDaumen2.setBounds(96, 43, 90, 23);
infDaumen.getContentPane().add(lblDaumen2);
JButton btnOk1 = new JButton("Ok");
btnOk1.setBounds(60, 92, 72, 23);
infDaumen.getContentPane().add(btnOk1);
//Bild des Daumens
JLabel lblDaumenlinks = new JLabel("");
lblDaumenlinks.setBounds(10, 5, 72, 83);
infDaumen.getContentPane().add(lblDaumenlinks);
lblDaumenlinks.setHorizontalAlignment(SwingConstants.CENTER);
Image Daumenlinks = new ImageIcon(this.getClass().getResource("/Daumenlinks.png")).getImage();
lblDaumenlinks.setIcon(new ImageIcon (Daumenlinks));
//Zeigefinger
final JInternalFrame infZeigefinger = new JInternalFrame("Zeigefinger");
infZeigefinger.setBounds(264, 152, 210, 190);
frmLinkeHand.getContentPane().add(infZeigefinger);
infZeigefinger.getContentPane().setLayout(null);
infZeigefinger.setVisible(false);
infZeigefinger.addComponentListener(new ComponentAdapter()
{
public void componentMoved(ComponentEvent e)
{
infZeigefinger.setLocation(264, 152);
}
});
JButton btnOk2 = new JButton("Ok");
btnOk2.setBounds(60, 130, 72, 23);
infZeigefinger.getContentPane().add(btnOk2);
JLabel lblZeigefinger1 = new JLabel("Glied 1: 0\u00B0-80\u00B0");
lblZeigefinger1.setBounds(96, 5, 90, 23);
infZeigefinger.getContentPane().add(lblZeigefinger1);
final JSpinner spZeigefinger1 = new JSpinner();
spZeigefinger1.setModel(new SpinnerNumberModel(0, 0, 80, 1));
spZeigefinger1.setBounds(96, 24, 90, 20);
infZeigefinger.getContentPane().add(spZeigefinger1);
JLabel lblZeigefinger2 = new JLabel("Glied 2: 0\u00B0-110\u00B0");
lblZeigefinger2.setBounds(96, 43, 90, 23);
infZeigefinger.getContentPane().add(lblZeigefinger2);
final JSpinner spZeigefinger2 = new JSpinner();
spZeigefinger2.setModel(new SpinnerNumberModel(0, 0, 110, 1));
spZeigefinger2.setBounds(96, 62, 90, 20);
infZeigefinger.getContentPane().add(spZeigefinger2);
JLabel lblZeigefinger3 = new JLabel("Glied 3: 0\u00B0-90\u00B0");
lblZeigefinger3.setBounds(96, 81, 90, 23);
infZeigefinger.getContentPane().add(lblZeigefinger3);
final JSpinner spZeigefinger3 = new JSpinner();
spZeigefinger3.setModel(new SpinnerNumberModel(0, 0, 90, 1));
spZeigefinger3.setBounds(96, 99, 90, 20);
infZeigefinger.getContentPane().add(spZeigefinger3);
//Bild des Zeigefingers
JLabel lblZeigefingerlinks = new JLabel("");
lblZeigefingerlinks.setHorizontalAlignment(SwingConstants.CENTER);
lblZeigefingerlinks.setBounds(10, 5, 72, 120);
infZeigefinger.getContentPane().add(lblZeigefingerlinks);
Image Zeigefingerlinks = new ImageIcon(this.getClass().getResource("/Zeigefingerlinks.png")).getImage();
lblZeigefingerlinks.setIcon(new ImageIcon (Zeigefingerlinks));
//Mittelfinger
final JInternalFrame infMittelfinger = new JInternalFrame("Mittelfinger");
infMittelfinger.setBounds(264, 152, 210, 190);
frmLinkeHand.getContentPane().add(infMittelfinger);
infMittelfinger.getContentPane().setLayout(null);
infMittelfinger.setVisible(false);
infMittelfinger.addComponentListener(new ComponentAdapter()
{
public void componentMoved(ComponentEvent e)
{
infMittelfinger.setLocation(264, 152);
}
});
JLabel lblMittelfinger1 = new JLabel("Glied 1: 0\u00B0-80\u00B0");
lblMittelfinger1.setBounds(96, 5, 90, 23);
infMittelfinger.getContentPane().add(lblMittelfinger1);
final JSpinner spMittelfinger1 = new JSpinner();
spMittelfinger1.setModel(new SpinnerNumberModel(0, 0, 80, 1));
spMittelfinger1.setBounds(96, 24, 90, 20);
infMittelfinger.getContentPane().add(spMittelfinger1);
JLabel lblMittelfinger2 = new JLabel("Glied 2: 0\u00B0-110\u00B0");
lblMittelfinger2.setBounds(96, 43, 90, 23);
infMittelfinger.getContentPane().add(lblMittelfinger2);
final JSpinner spMittelfinger2 = new JSpinner();
spMittelfinger2.setModel(new SpinnerNumberModel(0, 0, 110, 1));
spMittelfinger2.setBounds(96, 62, 90, 20);
infMittelfinger.getContentPane().add(spMittelfinger2);
JLabel lblMittelfinger3 = new JLabel("Glied 3: 0\u00B0-90\u00B0");
lblMittelfinger3.setBounds(96, 81, 90, 23);
infMittelfinger.getContentPane().add(lblMittelfinger3);
final JSpinner spMittelfinger3 = new JSpinner();
spMittelfinger3.setModel(new SpinnerNumberModel(0, 0, 90, 1));
spMittelfinger3.setBounds(96, 100, 90, 20);
infMittelfinger.getContentPane().add(spMittelfinger3);
JButton btnOk3 = new JButton("Ok");
btnOk3.setBounds(60, 130, 72, 23);
infMittelfinger.getContentPane().add(btnOk3);
//Bild des Mittelfingers
JLabel lblMittelfingerlinks = new JLabel("");
lblMittelfingerlinks.setHorizontalAlignment(SwingConstants.CENTER);
lblMittelfingerlinks.setBounds(10, 5, 72, 120);
infMittelfinger.getContentPane().add(lblMittelfingerlinks);
Image Mittelfingerlinks = new ImageIcon(this.getClass().getResource("/Mittelfingerlinks.png")).getImage();
lblMittelfingerlinks.setIcon(new ImageIcon (Mittelfingerlinks));
//Ringfinger
final JInternalFrame infRingfinger = new JInternalFrame("Ringfinger");
infRingfinger.setBounds(264, 152, 210, 190);
frmLinkeHand.getContentPane().add(infRingfinger);
infRingfinger.getContentPane().setLayout(null);
infRingfinger.setVisible(false);
infRingfinger.addComponentListener(new ComponentAdapter()
{
public void componentMoved(ComponentEvent e)
{
infRingfinger.setLocation(264, 152);
}
});
JLabel lblRingfinger1 = new JLabel("Glied 1: 0\u00B0-80\u00B0");
lblRingfinger1.setBounds(96, 5, 90, 23);
infRingfinger.getContentPane().add(lblRingfinger1);
final JSpinner spRingfinger1 = new JSpinner();
spRingfinger1.setModel(new SpinnerNumberModel(0, 0, 80, 1));
spRingfinger1.setBounds(96, 24, 90, 20);
infRingfinger.getContentPane().add(spRingfinger1);
JLabel lblRingfinger2 = new JLabel("Glied 2: 0\u00B0-110\u00B0");
lblRingfinger2.setBounds(96, 43, 90, 23);
infRingfinger.getContentPane().add(lblRingfinger2);
final JSpinner spRingfinger2 = new JSpinner();
spRingfinger2.setModel(new SpinnerNumberModel(0, 0, 110, 1));
spRingfinger2.setBounds(96, 62, 90, 20);
infRingfinger.getContentPane().add(spRingfinger2);
JLabel lblRingfinger3 = new JLabel("Glied 3: 0\u00B0-90\u00B0");
lblRingfinger3.setBounds(96, 81, 90, 23);
infRingfinger.getContentPane().add(lblRingfinger3);
final JSpinner spRingfinger3 = new JSpinner();
spRingfinger3.setModel(new SpinnerNumberModel(0, 0, 90, 1));
spRingfinger3.setBounds(96, 100, 90, 20);
infRingfinger.getContentPane().add(spRingfinger3);
JButton btnOk4 = new JButton("Ok");
btnOk4.setBounds(60, 130, 72, 23);
infRingfinger.getContentPane().add(btnOk4);
//Bild des Ringfingers
JLabel lblRingfingerlinks = new JLabel("");
lblRingfingerlinks.setHorizontalAlignment(SwingConstants.CENTER);
lblRingfingerlinks.setBounds(10, 5, 72, 120);
infRingfinger.getContentPane().add(lblRingfingerlinks);
Image Ringfingerlinks = new ImageIcon(this.getClass().getResource("/Ringfingerlinks.png")).getImage();
lblRingfingerlinks.setIcon(new ImageIcon (Ringfingerlinks));
//kleiner Finger
final JInternalFrame infkleinerFinger = new JInternalFrame("Kleiner Finger");
infkleinerFinger.setBounds(264, 152, 210, 190);
frmLinkeHand.getContentPane().add(infkleinerFinger);
infkleinerFinger.getContentPane().setLayout(null);
infkleinerFinger.setVisible(false);
infkleinerFinger.addComponentListener(new ComponentAdapter()
{
public void componentMoved(ComponentEvent e)
{
infkleinerFinger.setLocation(264, 152);
}
});
JLabel lblkleinerFinger1 = new JLabel("Glied 1: 0\u00B0-80\u00B0");
lblkleinerFinger1.setBounds(96, 5, 90, 23);
infkleinerFinger.getContentPane().add(lblkleinerFinger1);
final JSpinner spkleinerFinger1 = new JSpinner();
spkleinerFinger1.setModel(new SpinnerNumberModel(0, 0, 80, 1));
spkleinerFinger1.setBounds(96, 24, 90, 20);
infkleinerFinger.getContentPane().add(spkleinerFinger1);
final JSpinner spkleinerFinger2 = new JSpinner();
spkleinerFinger2.setModel(new SpinnerNumberModel(0, 0, 110, 1));
spkleinerFinger2.setBounds(96, 62, 90, 20);
infkleinerFinger.getContentPane().add(spkleinerFinger2);
final JSpinner spkleinerFinger3 = new JSpinner();
spkleinerFinger3.setBounds(96, 100, 90, 20);
infkleinerFinger.getContentPane().add(spkleinerFinger3);
JLabel lblkleinerFinger2 = new JLabel("Glied 2: 0\u00B0-110\u00B0");
lblkleinerFinger2.setBounds(96, 43, 90, 23);
infkleinerFinger.getContentPane().add(lblkleinerFinger2);
JLabel lblkleinerFinger3 = new JLabel("Glied 3: 0\u00B0-90\u00B0");
lblkleinerFinger3.setBounds(96, 81, 90, 23);
infkleinerFinger.getContentPane().add(lblkleinerFinger3);
JButton btnOk5 = new JButton("Ok");
btnOk5.setBounds(60, 130, 72, 23);
infkleinerFinger.getContentPane().add(btnOk5);
//Bild des kleinen Fingers
JLabel lblKleinerFingerlinks = new JLabel("");
lblKleinerFingerlinks.setHorizontalAlignment(SwingConstants.CENTER);
lblKleinerFingerlinks.setBounds(10, 5, 72, 120);
infkleinerFinger.getContentPane().add(lblKleinerFingerlinks);
Image KleinerFingerlinks = new ImageIcon(this.getClass().getResource("/KleinerFingerlinks.png")).getImage();
lblKleinerFingerlinks.setIcon(new ImageIcon (KleinerFingerlinks));
//Btn-Verbinden
btnVerbinden.addActionListener(new ActionListener()
{
@Override public void actionPerformed(ActionEvent arg0)
{
if (cbPortList.getSelectedItem() != null)
{
chosenPort = SerialPort.getCommPort(cbPortList.getSelectedItem().toString());
chosenPort.setComPortTimeouts(SerialPort.TIMEOUT_SCANNER, 0, 0);
chosenPort.getOutputStream();
System.out.println(chosenPort.getOutputStream());
btnDaumen.setEnabled(true);
btnZeigefinger.setEnabled(true);
btnMittelfinger.setEnabled(true);
btnRingfinger.setEnabled(true);
btnkleinerFinger.setEnabled(true);
sliderGeschw.setEnabled(true);
mntmTrennen.setEnabled(true);
cbPortList.setEnabled(false);
}
else
{
//Verbindungsfehler -> noch erstellen
}
}
});
//Btn-Ok Daumen
btnOk1.addActionListener(new ActionListener()
{
@Override public void actionPerformed(ActionEvent arg0)
{
infDaumen.setVisible(false);
btnDaumen.setEnabled(true);
Daumen1 = (Integer) spDaumen1.getValue();
Daumen2 = (Integer) spDaumen2.getValue();
if (Daumen1 >= 0 && Zeigefinger1 >= 0 && Mittelfinger1 >= 0 && Ringfinger1 >= 0 && kleinerFinger1 >= 0 && sliderGeschw.getValue() != 0)
{
mntmAusfhren.setEnabled(true);
btnAusfhren.setEnabled(true);
mntmOeffnen.setEnabled(true);
}
else
{
//ansonsten bleibt alles, wie es ist!
}
}
});
//Btn-Ok Zeigefinger
btnOk2.addActionListener(new ActionListener()
{
@Override public void actionPerformed(ActionEvent arg0)
{
infZeigefinger.setVisible(false);
btnZeigefinger.setEnabled(true);
Zeigefinger1 = (Integer) spZeigefinger1.getValue();
Zeigefinger2 = (Integer) spZeigefinger2.getValue();
Zeigefinger3 = (Integer) spZeigefinger3.getValue();
if (Daumen1 >= 0 && Zeigefinger1 >= 0 && Mittelfinger1 >= 0 && Ringfinger1 >= 0 && kleinerFinger1 >= 0 && sliderGeschw.getValue() != 0)
{
mntmAusfhren.setEnabled(true);
btnAusfhren.setEnabled(true);
mntmOeffnen.setEnabled(true);
}
else
{
//ansonsten bleibt alles, wie es ist!
}
}
});
//Btn-Ok Mittelfinger
btnOk3.addActionListener(new ActionListener()
{
@Override public void actionPerformed(ActionEvent arg0)
{
infMittelfinger.setVisible(false);
btnMittelfinger.setEnabled(true);
Mittelfinger1 = (Integer) spMittelfinger1.getValue();
Mittelfinger2 = (Integer) spMittelfinger2.getValue();
Mittelfinger3 = (Integer) spMittelfinger3.getValue();
if (Daumen1 >= 0 && Zeigefinger1 >= 0 && Mittelfinger1 >= 0 && Ringfinger1 >= 0 && kleinerFinger1 >= 0 && sliderGeschw.getValue() != 0)
{
mntmAusfhren.setEnabled(true);
btnAusfhren.setEnabled(true);
mntmOeffnen.setEnabled(true);
}
else
{
//ansonsten bleibt alles, wie es ist!
}
}
});
//Btn-Ok Ringfinger
btnOk4.addActionListener(new ActionListener()
{
@Override public void actionPerformed(ActionEvent arg0)
{
infRingfinger.setVisible(false);
btnRingfinger.setEnabled(true);
System.out.println(chosenPort);
Ringfinger1 = (Integer) spRingfinger1.getValue();
Ringfinger2 = (Integer) spRingfinger2.getValue();
Ringfinger3 = (Integer) spRingfinger3.getValue();
if (Daumen1 >= 0 && Zeigefinger1 >= 0 && Mittelfinger1 >= 0 && Ringfinger1 >= 0 && kleinerFinger1 >= 0 && sliderGeschw.getValue() != 0)
{
mntmAusfhren.setEnabled(true);
btnAusfhren.setEnabled(true);
mntmOeffnen.setEnabled(true);
}
else
{
//ansonsten bleibt alles, wie es ist!
}
}
});
//Btn-Ok kleiner Finger
btnOk5.addActionListener(new ActionListener()
{
@Override public void actionPerformed(ActionEvent arg0)
{
infkleinerFinger.setVisible(false);
btnkleinerFinger.setEnabled(true);
kleinerFinger1 = (Integer) spkleinerFinger1.getValue();
kleinerFinger2 = (Integer) spkleinerFinger2.getValue();
kleinerFinger3 = (Integer) spkleinerFinger3.getValue();
if (Daumen1 >= 0 && Zeigefinger1 >= 0 && Mittelfinger1 >= 0 && Ringfinger1 >= 0 && kleinerFinger1 >= 0 && sliderGeschw.getValue() != 0)
{
mntmAusfhren.setEnabled(true);
btnAusfhren.setEnabled(true);
mntmOeffnen.setEnabled(true);
}
else
{
//ansonsten bleibt alles, wie es ist!
}
}
});
//Btn-Daumen
btnDaumen.addActionListener(new ActionListener()
{
@Override public void actionPerformed(ActionEvent arg0)
{
infDaumen.setVisible(true);
if(infZeigefinger.isVisible())
{
infZeigefinger.setVisible(false);
Zeigefinger1 = (Integer) spZeigefinger1.getValue();
Zeigefinger2 = (Integer) spZeigefinger2.getValue();
Zeigefinger3 = (Integer) spZeigefinger3.getValue();
}
if(infMittelfinger.isVisible())
{
infMittelfinger.setVisible(false);
Mittelfinger1 = (Integer) spMittelfinger1.getValue();
Mittelfinger2 = (Integer) spMittelfinger2.getValue();
Mittelfinger3 = (Integer) spMittelfinger3.getValue();
}
if(infRingfinger.isVisible())
{
infRingfinger.setVisible(false);
Ringfinger1 = (Integer) spRingfinger1.getValue();
Ringfinger2 = (Integer) spRingfinger2.getValue();
Ringfinger3 = (Integer) spRingfinger3.getValue();
}
if(infkleinerFinger.isVisible())
{
infkleinerFinger.setVisible(false);
kleinerFinger1 = (Integer) spkleinerFinger1.getValue();
kleinerFinger2 = (Integer) spkleinerFinger2.getValue();
kleinerFinger3 = (Integer) spkleinerFinger3.getValue();
}
btnDaumen.setEnabled(false);
btnZeigefinger.setEnabled(true);
btnMittelfinger.setEnabled(true);
btnRingfinger.setEnabled(true);
btnkleinerFinger.setEnabled(true);
if (Daumen1 >= 0 && Zeigefinger1 >= 0 && Mittelfinger1 >= 0 && Ringfinger1 >= 0 && kleinerFinger1 >= 0 && sliderGeschw.getValue() != 0)
{
mntmAusfhren.setEnabled(true);
btnAusfhren.setEnabled(true);
mntmOeffnen.setEnabled(true);
}
else
{
//ansonsten bleibt alles, wie es ist!
}
}
});
//Btn-Zeigefinger
btnZeigefinger.addActionListener(new ActionListener()
{
@Override public void actionPerformed(ActionEvent arg0)
{
infZeigefinger.setVisible(true);
if(infDaumen.isVisible())
{
infDaumen.setVisible(false);
Daumen1 = (Integer) spDaumen1.getValue();
Daumen2 = (Integer) spDaumen2.getValue();
}
if(infMittelfinger.isVisible())
{
infMittelfinger.setVisible(false);
Mittelfinger1 = (Integer) spMittelfinger1.getValue();
Mittelfinger2 = (Integer) spMittelfinger2.getValue();
Mittelfinger3 = (Integer) spMittelfinger3.getValue();
}
if(infRingfinger.isVisible())
{
infRingfinger.setVisible(false);
Ringfinger1 = (Integer) spRingfinger1.getValue();
Ringfinger2 = (Integer) spRingfinger2.getValue();
Ringfinger3 = (Integer) spRingfinger3.getValue();
}
if(infkleinerFinger.isVisible())
{
infkleinerFinger.setVisible(false);
kleinerFinger1 = (Integer) spkleinerFinger1.getValue();
kleinerFinger2 = (Integer) spkleinerFinger2.getValue();
kleinerFinger3 = (Integer) spkleinerFinger3.getValue();
}
btnZeigefinger.setEnabled(false);
btnDaumen.setEnabled(true);
btnMittelfinger.setEnabled(true);
btnRingfinger.setEnabled(true);
btnkleinerFinger.setEnabled(true);
if (Daumen1 >= 0 && Zeigefinger1 >= 0 && Mittelfinger1 >= 0 && Ringfinger1 >= 0 && kleinerFinger1 >= 0 && sliderGeschw.getValue() != 0)
{
mntmAusfhren.setEnabled(true);
btnAusfhren.setEnabled(true);
mntmOeffnen.setEnabled(true);
}
else
{
//ansonsten bleibt alles, wie es ist!
}
}
});
//Btn-Mittelfinger
btnMittelfinger.addActionListener(new ActionListener()
{
@Override public void actionPerformed(ActionEvent arg0)
{
infMittelfinger.setVisible(true);
if(infZeigefinger.isVisible())
{
infZeigefinger.setVisible(false);
Zeigefinger1 = (Integer) spZeigefinger1.getValue();
Zeigefinger2 = (Integer) spZeigefinger2.getValue();
Zeigefinger3 = (Integer) spZeigefinger3.getValue();
}
if(infDaumen.isVisible())
{
infDaumen.setVisible(false);
Daumen1 = (Integer) spDaumen1.getValue();
Daumen2 = (Integer) spDaumen2.getValue();
}
if(infRingfinger.isVisible())
{
infRingfinger.setVisible(false);
Ringfinger1 = (Integer) spRingfinger1.getValue();
Ringfinger2 = (Integer) spRingfinger2.getValue();
Ringfinger3 = (Integer) spRingfinger3.getValue();
}
if(infkleinerFinger.isVisible())
{
infkleinerFinger.setVisible(false);
kleinerFinger1 = (Integer) spkleinerFinger1.getValue();
kleinerFinger2 = (Integer) spkleinerFinger2.getValue();
kleinerFinger3 = (Integer) spkleinerFinger3.getValue();
}
btnMittelfinger.setEnabled(false);
btnZeigefinger.setEnabled(true);
btnDaumen.setEnabled(true);
btnRingfinger.setEnabled(true);
btnkleinerFinger.setEnabled(true);
if (Daumen1 >= 0 && Zeigefinger1 >= 0 && Mittelfinger1 >= 0 && Ringfinger1 >= 0 && kleinerFinger1 >= 0 && sliderGeschw.getValue() != 0)
{
mntmAusfhren.setEnabled(true);
btnAusfhren.setEnabled(true);
mntmOeffnen.setEnabled(true);
}
else
{
//ansonsten bleibt alles, wie es ist!
}
}
});
//Btn-Ringfinger
btnRingfinger.addActionListener(new ActionListener()
{
@Override public void actionPerformed(ActionEvent arg0)
{
infRingfinger.setVisible(true);
if(infZeigefinger.isVisible())
{
infZeigefinger.setVisible(false);
Zeigefinger1 = (Integer) spZeigefinger1.getValue();
Zeigefinger2 = (Integer) spZeigefinger2.getValue();
Zeigefinger3 = (Integer) spZeigefinger3.getValue();
}
if(infMittelfinger.isVisible())
{
infMittelfinger.setVisible(false);
Mittelfinger1 = (Integer) spMittelfinger1.getValue();
Mittelfinger2 = (Integer) spMittelfinger2.getValue();
Mittelfinger3 = (Integer) spMittelfinger3.getValue();
}
if(infDaumen.isVisible())
{
infDaumen.setVisible(false);
Daumen1 = (Integer) spDaumen1.getValue();
Daumen2 = (Integer) spDaumen2.getValue();
}
if(infkleinerFinger.isVisible())
{
infkleinerFinger.setVisible(false);
kleinerFinger1 = (Integer) spkleinerFinger1.getValue();
kleinerFinger2 = (Integer) spkleinerFinger2.getValue();
kleinerFinger3 = (Integer) spkleinerFinger3.getValue();
}
btnRingfinger.setEnabled(false);
btnZeigefinger.setEnabled(true);
btnMittelfinger.setEnabled(true);
btnDaumen.setEnabled(true);
btnkleinerFinger.setEnabled(true);
if (Daumen1 >= 0 && Zeigefinger1 >= 0 && Mittelfinger1 >= 0 && Ringfinger1 >= 0 && kleinerFinger1 >= 0 && sliderGeschw.getValue() != 0)
{
mntmAusfhren.setEnabled(true);
btnAusfhren.setEnabled(true);
mntmOeffnen.setEnabled(true);
}
else
{
//ansonsten bleibt alles, wie es ist!
}
}
});
//Btn-kleinerFinger
btnkleinerFinger.addActionListener(new ActionListener()
{
@Override public void actionPerformed(ActionEvent arg0)
{
infkleinerFinger.setVisible(true);
if(infZeigefinger.isVisible())
{
infZeigefinger.setVisible(false);
Zeigefinger1 = (Integer) spZeigefinger1.getValue();
Zeigefinger2 = (Integer) spZeigefinger2.getValue();
Zeigefinger3 = (Integer) spZeigefinger3.getValue();
}
if(infMittelfinger.isVisible())
{
infMittelfinger.setVisible(false);
Mittelfinger1 = (Integer) spMittelfinger1.getValue();
Mittelfinger2 = (Integer) spMittelfinger2.getValue();
Mittelfinger3 = (Integer) spMittelfinger3.getValue();
}
if(infRingfinger.isVisible())
{
infRingfinger.setVisible(false);
Ringfinger1 = (Integer) spRingfinger1.getValue();
Ringfinger2 = (Integer) spRingfinger2.getValue();
Ringfinger3 = (Integer) spRingfinger3.getValue();
}
if(infDaumen.isVisible())
{
infDaumen.setVisible(false);
Daumen1 = (Integer) spDaumen1.getValue();
Daumen2 = (Integer) spDaumen2.getValue();
}
btnkleinerFinger.setEnabled(false);
btnZeigefinger.setEnabled(true);
btnMittelfinger.setEnabled(true);
btnRingfinger.setEnabled(true);
btnDaumen.setEnabled(true);
if (Daumen1 >= 0 && Zeigefinger1 >= 0 && Mittelfinger1 >= 0 && Ringfinger1 >= 0 && kleinerFinger1 >= 0 && sliderGeschw.getValue() != 0)
{
mntmAusfhren.setEnabled(true);
btnAusfhren.setEnabled(true);
mntmOeffnen.setEnabled(true);
}
else
{
//ansonsten bleibt alles, wie es ist!
}
}
});
//Btn-Beenden
btnBeenden.addActionListener(new ActionListener()
{
@Override public void actionPerformed(ActionEvent arg0)
{
System.exit(0);
}
});
//Btn-Ausführen
btnAusfhren.addActionListener(new ActionListener()
{
@Override public void actionPerformed(ActionEvent arg0)
{
Geschwindigkeit = sliderGeschw.getValue();
Matrix = ("1;" + Daumen1 + ";" + Daumen2 + ";" + Geschwindigkeit + ":2;" + Zeigefinger1 + ";" + Zeigefinger2 + ";" + Zeigefinger3 + ";" + Geschwindigkeit + ":3;" + Mittelfinger1 + ";" + Mittelfinger2 + ";" + Mittelfinger3 + ";" + Geschwindigkeit + ":4;" + Ringfinger1 + ";" + Ringfinger2 + ";" + Ringfinger3 + ";" + Geschwindigkeit + ":5;" + kleinerFinger1 + ";" + kleinerFinger2 + ";" + kleinerFinger3 + ";" + Geschwindigkeit + "!");
mntmAusfhren.setEnabled(false);
btnAusfhren.setEnabled(false);
sliderGeschw.setValue(0);
Daumen1 = -1;
Zeigefinger1 = -1;
Mittelfinger1 = -1;
Ringfinger1 = -1;
kleinerFinger1 = -1;
Thread thread = new Thread()
{
@Override public void run()
{
// wait after connecting, so the bootloader can finish
try
{
Thread.sleep(100);
}
catch(Exception e)
{
}
PrintWriter output = new PrintWriter(chosenPort.getOutputStream());
Eingabe = "!" + Matrix;
output.println(Eingabe);
output.flush();
}
};
thread.start();
}
});
// Menü-Funktionen
mntmBeenden.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
chosenPort.closePort();
System.exit(0);
}
});
mntmTrennen.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
chosenPort.closePort();
}
});
mntmRechteHand.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
frmLinkeHand.setVisible(false);
Right = new GUI_RightHand();
Right.frmRechteHand.setVisible(true);
}
});
mntmOeffnen.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
links = true;
Winkel = new Winkelmessung();
Winkel.frmWinkel.setVisible(true);
mntmOeffnen.setEnabled(false);
}
});
mntmAusfhren.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Geschwindigkeit = sliderGeschw.getValue();
Matrix = ("1;" + Daumen1 + ";" + Daumen2 + ";" + Geschwindigkeit + ":2;" + Zeigefinger1 + ";" + Zeigefinger2 + ";" + Zeigefinger3 + ";" + Geschwindigkeit + ":3;" + Mittelfinger1 + ";" + Mittelfinger2 + ";" + Mittelfinger3 + ";" + Geschwindigkeit + ":4;" + Ringfinger1 + ";" + Ringfinger2 + ";" + Ringfinger3 + ";" + Geschwindigkeit + ":5;" + kleinerFinger1 + ";" + kleinerFinger2 + ";" + kleinerFinger3 + ";" + Geschwindigkeit + "!");
mntmAusfhren.setEnabled(false);
btnAusfhren.setEnabled(false);
sliderGeschw.setValue(0);
Daumen1 = -1;
Zeigefinger1 = -1;
Mittelfinger1 = -1;
Ringfinger1 = -1;
kleinerFinger1 = -1;
Thread thread = new Thread()
{
@Override public void run()
{
// wait after connecting, so the bootloader can finish
try
{
Thread.sleep(100);
}
catch(Exception e)
{
}
PrintWriter output = new PrintWriter(chosenPort.getOutputStream());
output.print("! " + Matrix);
output.flush();
}
};
thread.start();
}
});
}
}
Vielen Dank für die Hilfe.
Falls ihr weitere Tipps habt und ich manches eher ungünstig mache oder so, wie man es nicht tun sollte, dann immer raus damit.
Ich nutze die IDE Eclipse und aus Bequemlichkeit auch den WindowBuilder und bin auch leider etwas faul, was das Kommentieren betrifft, hoffe das ist okay und ich liefer hier grad nichts allzu peinliches ab.
Ich finde leider keinen Unterschied bzw. woran es liegen kann, dass es im Testprogramm funktioniert und in dem anderen nicht.
MfG. Greyho