Input und Outputstream , serielle Schnittstelle

Tonimakkaroni

Aktives Mitglied
Code:
SerialPort[] portNames = SerialPort.getCommPorts();
        for(int i = 0; i < portNames.length; i++)
            portList.addItem(portNames[i].getSystemPortName());
      
        connectButton.addActionListener(new ActionListener(){
            @Override public void actionPerformed(ActionEvent arg0) {
                if(connectButton.getText().equals("Connect")) {
                  
                    chosenPort = SerialPort.getCommPort(portList.getSelectedItem().toString());
                    chosenPort.setComPortTimeouts(SerialPort.TIMEOUT_SCANNER, 0, 0);
                    if(chosenPort.openPort()) {
                        connectButton.setText("Disconnect");
                        portList.setEnabled(false);
                      
                      
                        Thread thread = new Thread(){
                            @Override public void run() {
                                Scanner scanner = new Scanner(chosenPort.getInputStream());
                                while(scanner.hasNextLine()) {
                                    try {
                                        String sb = scanner.nextLine();
                                        textField.setText(sb.toString());   
                                      
                                    } catch(Exception e) {}
                                }
                                scanner.close();
                            }
                        };
                        thread.start();
                    Senden.addActionListener(new ActionListener() {
                            public void actionPerformed(ActionEvent e) {
                          
                                PrintWriter output = new PrintWriter(chosenPort.getOutputStream());
                              
                                    output.print(textField.getText() + "\r");
                                  
                                  
                                    output.flush();
                                  
                                    textField.setText("");                          
                            }
                        });
Hallo, i will über ein textfield und den druck auf den Button "Senden" einen String an einen seriellen Port senden und das textfield soll danach wieder leer sein, bei mir kommt jedoch beim 2ten mal Senden die erste Eingabe wieder ins textfield. kann mir hier wer weiter helfen ?

zum InputStream: ich will die serielle schnitstelle über ein Jtextarea ausgeben und dabei nach jeden String einen Zeilenumbruch machen, so dass ich immer nach oben scrollen kann um zu sehen was bisher über den Inputstream reinkam. doch zur Zeit zeigt mir das textarea gar nichts an.
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Zurück
Oben