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.
 
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:
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!");}
}
 
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?
 
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.
 
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 ??
 
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
 
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 ....
 
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 😀

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:
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)
 
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..
 
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.
 
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.
 
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
 
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.
 
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)
 
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 ...
 
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 ?
 
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.
 
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
 
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.
 
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.
 
LOL WAS ES FUNKTIONIERT. Ich habe einfach den Button gespammt. xD ^^ 😀
//Edit irgendwie war das ein einzelfall.
//EDIT2 ES FUNKTIONIERT OHNE PROBLEME xD
 
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"); }
  }
 
 
}
 
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.
 

Neue Themen


Zurück
Oben