Input/Output Arduino komischer Fehler.

DanielsLPecke

Mitglied
Wenn ich mit meinem Java Programm etwas zum Arduino schicken will erkennt er das nicht.
Wenn ich aber mit dem Seriellen Monitor von der Arduino IDE teste geht es.
Es kommt keine Fehlermeldung.
Der Arduino scheint aber ein Signal zu bekommen. Weil er blinkt und dann einfach nichts tut.

BITTE Sagt mir was falsch ist..


C:
  if(text == "sets01maunzi"){
    digitalWrite(p0,HIGH);
  }
  if(text == "sets00maunzi"){
    digitalWrite(p0,LOW);
  }


Java:
private static void sendToArduino(String string,SerialPort s) {
     
        System.out.println("Sending: "+string);
        OutputStream os = chosenPort.getOutputStream();
        PrintWriter p = new PrintWriter(os);
     
        p.print(string);
        p.flush();
     
        p.close();
        try {
            os.close();
        } catch (IOException e) {System.out.println("ERROR!");}
    }

DANKE! dass du dir das hier durchgelesen hast.
 

javastudent25

Bekanntes Mitglied
Das geht so natürlich nicht.
Arduino benötigt C-Code. Etwas anderes versteht der nicht.
Das ist wie wenn man von dir auf Chinesisch oder sonst was etwas möchte.
 
Zuletzt bearbeitet:

DanielsLPecke

Mitglied
AAALSO der arduino bekommt das hier:
C:
  if(text == "sets01maunzi"){
    digitalWrite(p0,HIGH);
  }
  if(text == "sets00maunzi"){
    digitalWrite(p0,LOW);
  }
und mein Java Programm dass das Relai steuern soll. das:
private static void sendToArduino(String string,SerialPort s){

System.out.println("Sending: "+string);
OutputStream os = chosenPort.getOutputStream();
PrintWriter p =newPrintWriter(os);

p.print(string);
p.flush();

p.close();
try{
os.close();
}catch(IOException e){System.out.println("ERROR!");}
}
 

javastudent25

Bekanntes Mitglied
Nochmals:
du kannst deine Anweisung um das Relais zu steuern nicht in Java Code schreiben, dieses kompilieren lassen und dem Arduino schicken. Das frisst dir der Arduino nicht, soweit mir bekannt ist.

Warum willst du das unbedingt über Java machen, wenn du doch eh die Arduino IDE hast und die paar Zeilen Code?
 

DanielsLPecke

Mitglied
Nein nein :) Das ist so:
Das JAVA Programm schickt ein String über die Serielle Schnittstelle.
der Arduino guckt ob es "sets00maunzi" oder "sets01maunzi" ist.
Das geht aber nicht.
 

JStein52

Top Contributor
Natürlich geht das mit Java !!! Mache ich auch. Aber warum das bei dir nicht tut sehe ich auch gerade nicht.

Edit: ich nehme mal an es liegt nicht daran dass du choosenPort verwendest statt dem übergebenen SerialPort s ??
 

InfectedBytes

Top Contributor
Das geht so natürlich nicht.
Arduino benötigt C-Code. Etwas anderes versteht der nicht.
Das ist wie wenn man von dir auf Chinesisch oder sonst was etwas möchte.
Das Java Programm läuft ja auch nicht auf den Arduino.
Der erste Code war C und ist das was der TE auf dem Arduino laufen lässt.
Der zweite Code ist Java und läuft auf dem PC, um dem Arduino Daten zu schicken.

Zu deinem Problem, kann es vielleicht sein, dass das println dazwischen funkt? Das also eigentlich sets00maunzi\n empfangen wird
 

JStein52

Top Contributor
Aber was ist >>std::strcmp<<?
mit dieser Schreibweise kannst du namespaces angeben. Aber ich habe dir oben gepostet wie du es am Arduino abfragen kannst:
if(strcmp(text, "sets01maunzi")== 0)
Und das testen am Arduino ist ein bisschen schwierig in diesem Fall weil du die IDE nicht benutzen kannst. Wenn du z.B. einen Arduino mit SD-Karte hast könntest du den empfangenen String in eine Log-Datei schreiben und dir danach anschauen. Ganz primitiv kannst du dir bestimmte Dinge halt per LED kontrollieren, z.B. Länge des empfangenen Strings ist 10 -> du lässt die LED 10x blinken usw.
Was natuerlich noch ginge wäre wenn du eine Ethernet-Karte hast dass du darüber ein Logging implementierst, z.B. über deinen Browser. Ist aber alles viel Programmieraufwand ....
 

DanielsLPecke

Mitglied
Leider habe ich nur meinen Arduino und meinen PC (zubehör..) ... Keine Shields.
//Edit:
Was MACHT: if(strcmp(text, "sets01maunzi")== 0)
//Edit: Google ist mein Freund :D

Mein neuer Fehler o.o
Das führt der Arduino aus:
C:
  if(strcmp(text, "stts9maunzi")== 0){
    if(digitalRead(p9) == HIGH){ Serial.println("true"); } if(digitalRead(p9) == LOW){ Serial.println("false"); }
  }
Da kommt aber ein Error:
Code:
exit status 1
cannot convert 'String' to 'const char*' for argument '1' to 'int strcmp(const char*, const char*)'
 
Zuletzt bearbeitet:

JStein52

Top Contributor
Was ist denn text bei dir ? Bei mir wäre das ein:

Code:
char      text[MAX_TEXT_LENGTH];

Und die Abfrage oben prüft ob die beiden Strings gleich sind ( == 0)
 

DanielsLPecke

Mitglied
C:
int p0 = 13,p1 = 12,p2 = 11 ,p3 = 10,p4 = 9,p5 = 8,p6 = 7,p7 = 6,p8 = 5,p9 = 4;
void setup() {
Serial.begin(9600);
Serial.setTimeout(50);
pinMode(p0,OUTPUT);
pinMode(p1,OUTPUT);
pinMode(p2,OUTPUT);
pinMode(p3,OUTPUT);
pinMode(p4,OUTPUT);
pinMode(p5,OUTPUT);
pinMode(p6,OUTPUT);
pinMode(p7,OUTPUT);
pinMode(p8,OUTPUT);
pinMode(p9,OUTPUT);
}

void loop() {

  String text = Serial.readString();

  if(strcmp(text, "sets01maunzi")== 0){
    digitalWrite(p0,HIGH);
  }
  if(strcmp(text, "sets00maunzi")== 0){
    digitalWrite(p0,LOW);
  }


  if(strcmp(text, "sets11maunzi")== 0){
    digitalWrite(p1,HIGH);
  }
  if(strcmp(text, "sets10maunzi")== 0){
    digitalWrite(p1,LOW);
  }

  if(strcmp(text, "sets21maunzi")== 0){
    digitalWrite(p2,HIGH);
  }
  if(strcmp(text, "sets20maunzi")== 0){
    digitalWrite(p2,LOW);
  }

  if(strcmp(text, "sets31maunzi")== 0){
    digitalWrite(p3,HIGH);
  }
  if(strcmp(text, "sets30maunzi")== 0){
    digitalWrite(p3,LOW);
  }

  if(strcmp(text, "sets41maunzi")== 0){
    digitalWrite(p4,HIGH);
  }
  if(strcmp(text, "sets40maunzi")== 0){
    digitalWrite(p4,LOW);
  }

  if(strcmp(text, "sets51maunzi")== 0){
    digitalWrite(p5,HIGH);
  }
  if(strcmp(text, "sets50maunzi")== 0){
    digitalWrite(p5,LOW);
  }

  if(strcmp(text, "sets61maunzi")== 0){
    digitalWrite(p6,HIGH);
  }
  if(strcmp(text, "sets60maunzi")== 0){
    digitalWrite(p6,LOW);
  }

  if(strcmp(text, "sets71maunzi")== 0){
    digitalWrite(p7,HIGH);
  }
  if(strcmp(text, "sets70maunzi")== 0){
    digitalWrite(p7,LOW);
  }

  if(strcmp(text, "sets81maunzi")== 0){
    digitalWrite(p8,HIGH);
  }
  if(strcmp(text, "sets80maunzi")== 0){
    digitalWrite(p8,LOW);
  }

  if(strcmp(text, "sets91maunzi")== 0){
    digitalWrite(p9,HIGH);
  }
  if(strcmp(text, "sets90maunzi")== 0){
    digitalWrite(p9,LOW);
  }








  if(strcmp(text, "stts0maunzi")== 0){
    if(digitalRead(p0) == HIGH){ Serial.println("true"); } if(digitalRead(p0) == LOW){ Serial.println("false"); }
  }
  if(strcmp(text, "stts1maunzi")== 0){
    if(digitalRead(p1) == HIGH){ Serial.println("true"); } if(digitalRead(p1) == LOW){ Serial.println("false"); }
  }
  if(strcmp(text, "stts2maunzi")== 0){
    if(digitalRead(p2) == HIGH){ Serial.println("true"); } if(digitalRead(p2) == LOW){ Serial.println("false"); }
  }
  if(strcmp(text, "stts3maunzi")== 0){
    if(digitalRead(p3) == HIGH){ Serial.println("true"); } if(digitalRead(p3) == LOW){ Serial.println("false"); }
  }
  if(strcmp(text, "stts4maunzi")== 0){
    if(digitalRead(p4) == HIGH){ Serial.println("true"); } if(digitalRead(p4) == LOW){ Serial.println("false"); }
  }
  if(strcmp(text, "stts5maunzi")== 0){
    if(digitalRead(p5) == HIGH){ Serial.println("true"); } if(digitalRead(p5) == LOW){ Serial.println("false"); }
  }
  if(strcmp(text, "stts6maunzi")== 0){
    if(digitalRead(p6) == HIGH){ Serial.println("true"); } if(digitalRead(p6) == LOW){ Serial.println("false"); }
  }
  if(strcmp(text, "stts7maunzi")== 0){
    if(digitalRead(p7) == HIGH){ Serial.println("true"); } if(digitalRead(p7) == LOW){ Serial.println("false"); }
  }
  if(strcmp(text, "stts8maunzi")== 0){
    if(digitalRead(p8) == HIGH){ Serial.println("true"); } if(digitalRead(p8) == LOW){ Serial.println("false"); }
  }
  if(strcmp(text, "stts9maunzi")== 0){
    if(digitalRead(p9) == HIGH){ Serial.println("true"); } if(digitalRead(p9) == LOW){ Serial.println("false"); }
  }


}
Der String Text ist das was der Arduino bekommt.(SERIELL)

Ich erkläre mal:
sets01maunzi
Das "sets" steht für Relai an Port 0 auf 1 stellen. und dann einfach ein Passwort..
stts1maunzi
Das "stts" steht für Status an Port 1 und dann einfach ein Passwort..
 

JStein52

Top Contributor
Oh, sorry. Dein text ist ja vom Typ String ! Dann kannst du den == - Operator schon verwenden :(:(:(
Ich würde zu Beginn der Loop noch einbauen :

Code:
while (!Serial.available()) ;

Dann wartet er dort bis der PC was gesendet hat. Und mit den Serial.println() willst du deinem Java-Programm was mitteilen oder ? Nur zur Sicherheit noch die Frage: du stellst in deinem Java-Programm die serielle Schnittstelle schon richtig ein oder ? (Baudrate etc.)

Edit: ob dein Serial.setTimeout was bewirkt bin ich mir nicht sicher. Guckst du hier:

Serial.setTimeout() sets the maximum milliseconds to wait for serial data when using Serial.readBytesUntil(), Serial.readBytes(), Serial.parseInt() or Serial.parseFloat(). It defaults to 1000 milliseconds.
 

DanielsLPecke

Mitglied
Also:
Java:
package com.daniel;

import java.awt.BorderLayout;
import java.awt.Font;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Scanner;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import com.fazecast.jSerialComm.SerialPort;

public class Main{
    static SerialPort chosenPort;
  
    public static void main(String[] args) {
        JFrame j = new JFrame(":D - By: DanielsLPecke");
        j.setSize(500,500);
        j.setLayout(new BorderLayout());
        j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
        JComboBox<String> portList = new JComboBox<String>();
        JButton sendB = new JButton("Set");
        JButton getB = new JButton("GetFromArduino");
        JPanel panel = new JPanel();
        JTextField txt = new JTextField();
        txt.setSize(100, 25);
        txt.setText("0");
        JLabel lbl = new JLabel("PortNumber:");
        JCheckBox b = new JCheckBox();
        b.setSelected(true);
        b.setText("Enabled?");
        JPanel stts = new JPanel();
        JTextField pw = new JTextField("maunzi");
        JLabel txtlbl = new JLabel("Password:");
        JTextArea txtarea = new JTextArea();
        txtarea.setFont(new Font("Comic sans ms",15, 15));
        txtarea.setText("Starting Program...");
        txtarea.setEditable(false);
      
        stts.add(getB);
        stts.add(txtarea);
        panel.add(txtlbl);
        panel.add(pw);
        panel.add(b);
        panel.add(lbl);
        panel.add(txt);
        panel.add(portList);
        panel.add(sendB);
        j.add(txtarea,BorderLayout.CENTER);
        j.add(getB,BorderLayout.NORTH);
        j.add(panel,BorderLayout.SOUTH);
      
        SerialPort[] portNames = SerialPort.getCommPorts();
        for(int i =0; i<portNames.length;i++){
            portList.addItem(portNames[i].getSystemPortName());
        }
      
  //NICHT FERTIG!!  getB.addActionListener(e->{
        chosenPort = SerialPort.getCommPort(portList.getSelectedItem().toString());
        chosenPort.setBaudRate(9600);
        chosenPort.setComPortTimeouts(SerialPort.TIMEOUT_SCANNER, 0,0);
        if(chosenPort.openPort()){
                Thread t = new Thread(){
                    private Scanner s;

                    @Override
                    public void run(){
                        for(int i = 0; i<10;i++){
                            sendToArduino("stts"+i+"pw", chosenPort);
                            System.out.println("Okay i: "+i);
                            InputStream iS = chosenPort.getInputStream();
                            s = new Scanner(iS);
                          
                          
                            txtarea.setText(txtarea.getText()+"\nArduino: "+s.nextLine());
                          
                        }
                    }

                  
                };
                t.start();
        }
        });
      
        sendB.addActionListener(e->{
            if(sendB.getText().equalsIgnoreCase("Set")){
                chosenPort = SerialPort.getCommPort(portList.getSelectedItem().toString());
                chosenPort.setBaudRate(9600);
                chosenPort.setComPortTimeouts(SerialPort.TIMEOUT_READ_BLOCKING, 0,0);
                if(chosenPort.openPort()){
                    sendB.setText("Sending..");
                    sendB.setEnabled(false);
                    txt.setEditable(false);
                    portList.setEnabled(false);
                    pw.setEditable(false);
                    b.setEnabled(false);
                  
                    InputStream in = chosenPort.getInputStream();
                    try {
                        while(true)
                            System.out.print((char) in.read());
//                        in.close();
                    } catch (Exception e456) {
                        e456.printStackTrace();
                    }
                  
                    if(b.isSelected())sendToArduino("sets"+txt.getText()+"1"+pw.getText(),chosenPort);
                    if(!b.isSelected())sendToArduino("sets"+txt.getText()+"0"+pw.getText(),chosenPort);
                  
                    try{Thread.sleep(1500);}catch(Exception e7){}
                    sendB.setText("Set");
                    sendB.setEnabled(true);
                    txt.setEditable(true);
                    portList.setEnabled(true);
                    pw.setEditable(true);
                    b.setEnabled(true);  
                  
                    chosenPort.closePort();
                }else {
                    int dialogButton = JOptionPane.OK_OPTION;
                    JOptionPane.showConfirmDialog(null, "Der "+chosenPort.getSystemPortName()+" Port ist leider belegt.","Error.", dialogButton);
                }
              
           
            }
        });
        j.setVisible(true);
        txtarea.setText(txtarea.getText()+"\nFinished!");
      
    }

    private static void sendToArduino(String string,SerialPort s) {
      
        System.out.print("Sending: "+string);
        OutputStream os = s.getOutputStream();
        PrintWriter p = new PrintWriter(os);
      
        p.println(string);
        p.flush();
      
        p.close();
        try {
            os.close();
        } catch (IOException e) {System.out.println("ERROR!");}
    }
}

Der Sinn dahinter ist:
Ich will mit dem Java Programm Relais steuern. Das will ich so machen dass ich einen String sende und wenn der gleich ist mit z.B. "sets00maunzi "schaltet er das Relai auf 0.

So dann soll das Programm noch sowas wie "stts0maunzi" schicken um den Status zurück zubekommen.
 

JStein52

Top Contributor
Sieht ja eigentlich alles ganz richtig aus. Aber ich habe bei einem ähnlichen Arduino-Projekt festgestellt dass das lesen der Daten irgendwie eine kritische Sache ist weil er manchmal nicht alle Daten zurückliefert die man ihm vom PC sendet. Deshalb habe ich dann von Serial die Funktionen mit dem Suffix ...Until verwendet und damit auf ein "\n" gewartet:

Serial.readBytesUntil('\n', buffer, length);

aber es gibt da ja auch die passende readStringUntil !! Die könntest du verwenden
 

JStein52

Top Contributor
Ja ich weiss. Das gleiche Problem hatte ich auch immer. Man arbeitet mit den Serial-Funktionen ja sozusagen auf der Hardware-Schicht und die Sicherungs-Schicht die für die korrekte Übertragung und evtl. Wiederholungen im Fall von Datenverlust sorgt fehlt. Ich hatte das dann bei mir sogar soweit getrieben dass ich einen Quttungsverkehr implementiert hatte nach dem Motto:
- pass auf ich schick dir was,
- da hast du es
- ist es angekommen
- gut
- oh es ist nicht angekommen, warte ich schicke es nochmal.
 

JStein52

Top Contributor
Die Syntax der entsprechenden String-Funktion geht anders, nämlich so in deinem Fall:

text = Serial.readStringUntil('\n');

Und ein \n sollte ja kommen da du es auf Java-Seite entsprechend sendest. Und falls der Timeout doch wirkt würde ich ihn am Anfang mal ganz hoch setzen ( 1 sec oder so)
 

DanielsLPecke

Mitglied
Nope funktioniert nicht...
Komischer Effekt. Erst blinkt die LED 13 auf.
Dann die LED RX. dann alles aus dann ~500ms pause und wieder an.. und wieder aus xD

Bei den anderen LEDS ist das nicht so ...
 

JStein52

Top Contributor
Und wie lange geht das so ? Was schickt dein Java-Programm deiner Meinung nach ? LED13 ist ja p0,
d.h. der entsprechende String-Vergleich muss mal zuschlagen. Es gibt ja nur die eine Stelle wo p0 auf HIGH und LOW gesetzt wird.
Hast du übrigens mal in dein Java-Programm an der entsprechenden Stelle ein System.out.println() eingebaut um zu sehen ob das blinken irgendwie mit den Aktivitäten des Java-Programmes korrespondiert ?
 

DanielsLPecke

Mitglied
Ja habe ich. Es wird einmal "sets01maunzi" gesendet.. aber der Arduino scheint es GARNICHT zu erkennen... Ich denke das weil wenn ich die anderen Ports anspreche dasselbe passiert.
 

JStein52

Top Contributor
Also das Blinken korrespondiert mit dem Senden des Java-Programmes ? Und wie lange blinkt es ? Ersetze doch mal in den Befehlen:

Code:
digitalWrite(p0,HIGH bzw.LOW);

das p0 durch p1. Dann sollte ja eine ander LED blinken
 

JStein52

Top Contributor
Und noch was fällt mir gerade ein: du öffnest ja in deinem ActionListener immer den comPort und schliesst ihn nach dem senden. Das hat bei mir nie funktioniert weil das öffnen immer einen "Reset" des Arduino ausgelöst hat.
 

JStein52

Top Contributor
Ich kenne ja die Anwendung die bei dir hinter den Relais steckt nicht. Und ich weiss auch nicht ob dein Java-Programm bzw. der PC ständig mit dem Arduino verbunden ist ? Wenn ja dann öffnest und initialisierst du deinen Port einmal irgendwo an einer geeigneten Stelle und lässt ihn offen bis sich das Programm beendet und dort machst du den close. Ansonsten wenn du z.B. einmal am Tag deinen PC an den Arduino stöpseln willst um irgendwas zu setzen oder auszulesen musst du damit leben dass dann ein Reset durchgeführt wird (ist beim aktivieren des IDE-Monitors ja auch so!!) Wenn du Daten über einen Reset des Arduino retten willst geht das glaube ich auch indem du sie im EEPROM ablegst. Das habe ich aber gerade nicht parat wie man das macht.
 

DanielsLPecke

Mitglied
LOL WAS ES FUNKTIONIERT. Ich habe einfach den Button gespammt. xD ^^ :D
//Edit irgendwie war das ein einzelfall.
//EDIT2 ES FUNKTIONIERT OHNE PROBLEME xD
 

DanielsLPecke

Mitglied
Java:
package com.daniel;

import com.fazecast.jSerialComm.SerialPort;

import javax.swing.*;
import java.awt.*;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Scanner;

public class Main{
    static SerialPort chosenPort;
    static JTextArea txtarea;
    static JFrame j;
    public static void main(String[] args) {

            j = new JFrame(":D - By: DanielsLPecke");
        j.setSize(700,500);
        j.setLayout(new BorderLayout());
        j.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
       
        JComboBox<String> portList = new JComboBox<String>();
        JButton sendB = new JButton("COM-Port Setzen");
        JButton getB = new JButton("GetFromArduino");
        JButton disconect = new JButton("Disconect");
        disconect.setEnabled(false);
        JPanel panel = new JPanel();
        JTextField txt = new JTextField();
        txt.setSize(100, 25);
        txt.setText("0");
        JLabel lbl = new JLabel("PortNumber:");
        JCheckBox b = new JCheckBox();
        b.setSelected(true);
        b.setText("Enabled?");
        JPanel stts = new JPanel();
        JTextField pw = new JTextField("maunzi");
        JLabel txtlbl = new JLabel("Password:");
        txtarea = new JTextArea();
        JScrollPane jsp = new JScrollPane();
        jsp.setViewportView(txtarea);
        txtarea.setFont(new Font("Comic sans ms",15, 15));
        Log("Logging","Starting the Programm");
        txtarea.setEditable(false);

        //stts.add(getB);
        //stts.add(jsp);
        panel.add(disconect);
        panel.add(txtlbl);
        panel.add(pw);
        panel.add(b);
        panel.add(lbl);
        panel.add(txt);
        panel.add(portList);
        panel.add(sendB);
        j.add(jsp,BorderLayout.CENTER);
        //    j.add(getB,BorderLayout.NORTH);
        j.add(panel,BorderLayout.SOUTH);
        SerialPort[] portNames = SerialPort.getCommPorts();

        for(int i =0; i<portNames.length;i++){
            portList.addItem(portNames[i].getSystemPortName());
        }

      //  chosenPort = SerialPort.getCommPort(portList.getSelectedItem().toString());
    disconect.addActionListener(e->{
        chosenPort.closePort();
        disconect.setEnabled(false);
        sendB.setText("COM-Port Setzen");
    });

    getB.addActionListener(e->{
                Thread t = new Thread(){
                    private Scanner s;

                    @Override
                    public void run(){
                        for(int i = 0; i<10;i++){
                            sendToArduino("stts"+i+"pw", chosenPort);
                            System.out.println("Okay i: "+i);
                            InputStream iS = chosenPort.getInputStream();
                            s = new Scanner(iS);
                           
                           
                            txtarea.setText(txtarea.getText()+"\nArduino: "+s.nextLine());
                           
                        }
                    }

                   
                };
                t.start();

        });


        sendB.addActionListener(e->{
            if(sendB.getText().equalsIgnoreCase("com-port setzen")){
                chosenPort = SerialPort.getCommPort(portList.getSelectedItem().toString());
                chosenPort.setBaudRate(9600);
                chosenPort.setComPortTimeouts(SerialPort.TIMEOUT_SCANNER, 0,0);
                if(chosenPort.openPort()){}else{
                    int dialogButton = JOptionPane.OK_OPTION;
                    JOptionPane.showConfirmDialog(null, "Der "+chosenPort.getSystemPortName()+" Port ist leider belegt.","Error.", dialogButton);
                    Log("Logging"," Port used.");
                }
                portList.setEnabled(false);
                disconect.setEnabled(true);
                sendB.setText("Senden");
            }
            if(sendB.getText().equalsIgnoreCase("Senden")){
                    Log("Logging","Try to Send");
                    sendB.setText("Senden");
                    sendB.setEnabled(false);
                    txt.setEditable(false);
                    portList.setEnabled(false);
                    pw.setEditable(false);
                    b.setEnabled(false);

                    if(b.isSelected())sendToArduino("sets"+txt.getText()+"1"+pw.getText(),chosenPort);
                    if(!b.isSelected())sendToArduino("sets"+txt.getText()+"0"+pw.getText(),chosenPort);
                   
                    try{Thread.sleep(50);}catch(Exception e7){}
                    sendB.setText("Senden");
                    sendB.setEnabled(true);
                    txt.setEditable(true);
                    portList.setEnabled(true);
                    pw.setEditable(true);
                    b.setEnabled(true);
                }

            //}
        });
        j.setVisible(true);
        Log("Logging","Finished.");
    }

    public static void Log(String title,String text){
        txtarea.setText(txtarea.getText()+" "+title+": "+text+" \n");
        j.repaint();
    }
    private static void sendToArduino(String string,SerialPort s) {
        Log("Sending",string);
        OutputStream os = s.getOutputStream();
        PrintWriter p = new PrintWriter(os);
       
        p.print(string);
        p.flush();
       
        p.close();
        try {
            os.close();
        } catch (IOException e) {System.out.println("ERROR!");}
        Log("Loggin","Successfully send!");
    }
}
C:
int p0 = 13,p1 = 12,p2 = 11 ,p3 = 10,p4 = 9,p5 = 8,p6 = 7,p7 = 6,p8 = 5,p9 = 4;
void setup() {
Serial.begin(9600);
pinMode(p0,OUTPUT);
pinMode(p1,OUTPUT);
pinMode(p2,OUTPUT);
pinMode(p3,OUTPUT);
pinMode(p4,OUTPUT);
pinMode(p5,OUTPUT);
pinMode(p6,OUTPUT);
pinMode(p7,OUTPUT);
pinMode(p8,OUTPUT);
pinMode(p9,OUTPUT);
}

void loop() {
  String text;
  if(Serial.available()>0)
  text = Serial.readStringUntil('\n');
  else text = "";
 
  if(text == "sets01maunzi"){
    digitalWrite(p0,HIGH);
  }
  if(text == "sets00maunzi"){
    digitalWrite(p0,LOW);
  }
 
 
  if(text == "sets11maunzi"){
    digitalWrite(p1,HIGH);
  }
  if(text == "sets10maunzi"){
    digitalWrite(p1,LOW);
  }
 
  if(text == "sets21maunzi"){
    digitalWrite(p2,HIGH);
  }
  if(text == "sets20maunzi"){
    digitalWrite(p2,LOW);
  }
 
  if(text == "sets31maunzi"){
    digitalWrite(p3,HIGH);
  }
  if(text == "sets30maunzi"){
    digitalWrite(p3,LOW);
  }
 
  if(text == "sets41maunzi"){
    digitalWrite(p4,HIGH);
  }
  if(text == "sets40maunzi"){
    digitalWrite(p4,LOW);
  }
 
  if(text == "sets51maunzi"){
    digitalWrite(p5,HIGH);
  }
  if(text == "sets50maunzi"){
    digitalWrite(p5,LOW);
  }
 
  if(text == "sets61maunzi"){
    digitalWrite(p6,HIGH);
  }
  if(text == "sets60maunzi"){
    digitalWrite(p6,LOW);
  }
 
  if(text == "sets71maunzi"){
    digitalWrite(p7,HIGH);
  }
  if(text == "sets70maunzi"){
    digitalWrite(p7,LOW);
  }
 
  if(text == "sets81maunzi"){
    digitalWrite(p8,HIGH);
  }
  if(text == "sets80maunzi"){
    digitalWrite(p8,LOW);
  }
 
  if(text == "sets91maunzi"){
    digitalWrite(p9,HIGH);
  }
  if(text == "sets90maunzi"){
    digitalWrite(p9,LOW);
  }







 
  if(text == "stts0maunzi"){
    if(digitalRead(p0) == HIGH){ Serial.println("true"); } if(digitalRead(p0) == LOW){ Serial.println("false"); }
  }
  if(text == "stts1maunzi"){
    if(digitalRead(p1) == HIGH){ Serial.println("true"); } if(digitalRead(p1) == LOW){ Serial.println("false"); }
  }
  if(text == "stts2maunzi"){
    if(digitalRead(p2) == HIGH){ Serial.println("true"); } if(digitalRead(p2) == LOW){ Serial.println("false"); }
  }
  if(text == "stts3maunzi"){
    if(digitalRead(p3) == HIGH){ Serial.println("true"); } if(digitalRead(p3) == LOW){ Serial.println("false"); }
  }
  if(text == "stts4maunzi"){
    if(digitalRead(p4) == HIGH){ Serial.println("true"); } if(digitalRead(p4) == LOW){ Serial.println("false"); }
  }
  if(text == "stts5maunzi"){
    if(digitalRead(p5) == HIGH){ Serial.println("true"); } if(digitalRead(p5) == LOW){ Serial.println("false"); }
  }
  if(text == "stts6maunzi"){
    if(digitalRead(p6) == HIGH){ Serial.println("true"); } if(digitalRead(p6) == LOW){ Serial.println("false"); }
  }
  if(text == "stts7maunzi"){
    if(digitalRead(p7) == HIGH){ Serial.println("true"); } if(digitalRead(p7) == LOW){ Serial.println("false"); }
  }
  if(text == "stts8maunzi"){
    if(digitalRead(p8) == HIGH){ Serial.println("true"); } if(digitalRead(p8) == LOW){ Serial.println("false"); }
  }
  if(text == "stts9maunzi"){
    if(digitalRead(p9) == HIGH){ Serial.println("true"); } if(digitalRead(p9) == LOW){ Serial.println("false"); }
  }
 
 
}
 

JStein52

Top Contributor
Ok, ich habe auch eine andere serielle Library benutzt (RXTXserial). Keine Ahnung womit das genau zusammenhing, war aber bei mir auch kein Problem, deshalb hatte ich es nicht weiter verfolgt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Mike80 Processing Programm fiert ohne Arduino ein Allgemeine Java-Themen 2
J Arduino – Processing – Java Allgemeine Java-Themen 0
G String an Arduino senden NullPointerException in PrintWriter Allgemeine Java-Themen 6
DanielsLPecke Input/Output Arduino input. Allgemeine Java-Themen 4
Meeresgott Java und Arduino Allgemeine Java-Themen 16
L Kursverlauf vorhersagen mit Deeplearning4j, aber komischer Knick am Anfang der Vorhersage Allgemeine Java-Themen 3
T Interpreter-Fehler Komischer Bug Allgemeine Java-Themen 3
A Swing paintcomponent komischer Fehler Allgemeine Java-Themen 6
J Eclipse komischer Fehler Allgemeine Java-Themen 2
G komischer out of bounds fehler Allgemeine Java-Themen 3
V komischer ClassPath Allgemeine Java-Themen 6
leifg komischer Java code Allgemeine Java-Themen 4
S Komischer Fehler bei Programmstart Allgemeine Java-Themen 4
G komischer Fehler Allgemeine Java-Themen 5
flashfactor Komischer Fehler beim Einlesen einer Datei. Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
S Fehler: <ID> erwartet Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
Pinhg Discord JDA Bot - Fehler Allgemeine Java-Themen 3
KonradN CVE-2022-21449: Fehler in Java bei Signaturprüfung Allgemeine Java-Themen 20
L Fehler mit Boolean. (Glaube ich zumindest) Allgemeine Java-Themen 6
P Selenium Scriipt zeigt Fehler beim Import Allgemeine Java-Themen 3
O Fehler bei Variablen Allgemeine Java-Themen 2
HerrBolte Seltsamer Fehler nur in der Windows- und nicht in der Java-Console O_O Allgemeine Java-Themen 16
M Kein Scanner Fehler durch falsche EIngabe Allgemeine Java-Themen 4
N nicht einsehbarer Fehler im code, kann nicht mehr übersetzten Allgemeine Java-Themen 51
yakazuqi Fehler beim Laden. JDA (Java Discord API) Allgemeine Java-Themen 1
C Fehler bei der Benutzung von itextpdf Allgemeine Java-Themen 1
U Fehler beim Compillieren Allgemeine Java-Themen 13
x46 String Format Fehler Allgemeine Java-Themen 2
bueseb84 Fehler beim Import von Maven Dependencies aus lokalem artifactory Allgemeine Java-Themen 2
MiMa Datei verschieben hat einen Fehler?? Allgemeine Java-Themen 20
O xlsx Datei auslesen mit POI von Apache wirft seltsamen Fehler. Allgemeine Java-Themen 11
T Java-Quiz Code Fehler Allgemeine Java-Themen 10
A Fehler beim Öffnen eines Projekts Allgemeine Java-Themen 6
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
T Fehler bei IF abfrage Allgemeine Java-Themen 8
C Fehler beim Debuggen von Listen Allgemeine Java-Themen 4
M Einheitenrechner - Fehler Allgemeine Java-Themen 12
D Erste Schritte Fehler mit negativen und 0 Zahlen im String Allgemeine Java-Themen 6
T Denk-Fehler? Allgemeine Java-Themen 4
A Finde den Fehler nicht. Allgemeine Java-Themen 7
H Class 'java.io.BuferedReader' is not present in JRE Emulation Libary | GWT Fehler?! Allgemeine Java-Themen 0
D Unbekannter Fehler Allgemeine Java-Themen 1
R Fehler im Code Allgemeine Java-Themen 1
R Fehler im Code Allgemeine Java-Themen 3
ReinerCoder Methode einer Klasse meldet Fehler "misplaced construct(s)" Allgemeine Java-Themen 13
R Wo ist mein Fehler in der Methode DRINGEND Allgemeine Java-Themen 9
R Wo ist mein Fehler in diesem Code Allgemeine Java-Themen 7
I Fehler beim Ant-Package erstellen mit Java 9 Allgemeine Java-Themen 1
L Fehler bei der Ausführung einer Jar Allgemeine Java-Themen 2
T OOP Fehler im Design Allgemeine Java-Themen 9
Thallius Unfassbarer Fehler. Brauche Ideen zum Debuggen Allgemeine Java-Themen 9
U Eclipse MANIFEST fehler Allgemeine Java-Themen 7
I Fehler bei HashMaps Darstellung Allgemeine Java-Themen 10
R Classnotfoundexception Fehler Allgemeine Java-Themen 3
A Fehler beim Aktualisieren JTable Allgemeine Java-Themen 1
N Compiler-Fehler Warum erhalte ich einen Nullpointer Fehler? Allgemeine Java-Themen 2
N Prim's Algorithm - wo ist der Fehler? Allgemeine Java-Themen 3
J-Gallus Erste Schritte Wahrscheinlich Anfänger Fehler beim rechnen. Falsches Ergebnis. Allgemeine Java-Themen 9
M Line-Fehler Allgemeine Java-Themen 8
U Input/Output Warum wirft mir das Programm diesen Fehler? Allgemeine Java-Themen 6
RalleYTN Merkwürdiger Fehler mit JFrame im Vollbild Allgemeine Java-Themen 4
V AudioInputStream Fehler Allgemeine Java-Themen 1
J Interpreter-Fehler Fehler beim Verschlüsseln Invalid AES key length Allgemeine Java-Themen 1
G Fehler mit Vector Allgemeine Java-Themen 3
F Java Fehler "buildTableModel" Allgemeine Java-Themen 3
F Fehler in Zeile in Log schreiben Allgemeine Java-Themen 6
V JavaFX Fehler beim Starten einer Jar Allgemeine Java-Themen 7
S Hashtable Fehler Allgemeine Java-Themen 14
S Zwei String vergleichen, Fehler markieren Allgemeine Java-Themen 3
C Hilfe bei einer Fehler meldung Allgemeine Java-Themen 3
K Was ist mein Fehler? Allgemeine Java-Themen 2
Tausendsassa Compiler-Fehler Fertiges Programm mit Fehler Allgemeine Java-Themen 10
B Eclipse Nach Export einer .jar Fehler: Hauptklasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 5
K Fehler beim erstellen von .jar Datei Allgemeine Java-Themen 3
P Java Fehler auf Win2008 Server java.io.FilePermission IE8 Version JRE 1.7.0_51 Allgemeine Java-Themen 7
M Eclipse - Fehler: Hauptklasse de.xyz.init.MeineKlasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 2
Seikuassi Swing Stehe auf dem Schlauch...(BufferedReader_Writer-Fehler?) Allgemeine Java-Themen 4
M Eclipse Fehler beim Installieren des Plugins "Jigloo" Allgemeine Java-Themen 12
A Eclipse - Fehler beim "RUN" - "Unable to Launch - The selection cannot be launched" Allgemeine Java-Themen 6
B Fehler bei einem Programm Allgemeine Java-Themen 10
F HILFEEEEEE JAVA Fehler - Tiny Umbrella Allgemeine Java-Themen 1
N JavaFX IndexOutOfBounds-Fehler Allgemeine Java-Themen 11
N GPIB - Fehler: Unable to open device Allgemeine Java-Themen 1
S Ganzes Programm "stucked" - JVM-Fehler? Allgemeine Java-Themen 2
D Variablen Ausgabe bzw. einlese Fehler Allgemeine Java-Themen 7
I Fehler java.lang.NullPointerException Allgemeine Java-Themen 5
B NullPointerException - Aber kein Fehler im Code Allgemeine Java-Themen 4
B Eclipse Fehler in eclipse/Java Allgemeine Java-Themen 13
B Fehler beim Auslesen von Einstellungen. Zwei ähnliche Blöcke, nur eins geht. Allgemeine Java-Themen 5
H JUnit Fehler beim Compilieren - erledigt Allgemeine Java-Themen 0
J Fehler beim parsens eine Datums Allgemeine Java-Themen 3
A Thread Fehler absichtlich provozieren Allgemeine Java-Themen 3
J Compiler-Fehler .nextLine fehler Allgemeine Java-Themen 3
B Fehler im Java-Code Allgemeine Java-Themen 4
S Java Fehler bei Konsolenprogramm Allgemeine Java-Themen 2
N Was ist ein Fehler (Requirement-Engineering) Allgemeine Java-Themen 3
C System.out.print("") Compiler Fehler Allgemeine Java-Themen 2
T Programm bleibt ohne Fehler stehen Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben