Jserial-Java程序运行良好,但似乎与端口没有连接

Jserial-Java程序运行良好,但似乎与端口没有连接,java,arduino,Java,Arduino,我尝试在Arduino uno r3和macOS 10.15.4上的java之间进行一些基本的通信。我编写的应用程序没有抛出任何错误,但它似乎没有正确地与端口通信。我对这个很陌生,所以很可能我错过了一些明显的东西,但我不完全确定它是否能起作用 我使用了三个类,一个用于运行,一个用于串行连接,一个用于图形 这是主要课程 import javafx.application.Application; public class main { public static void main(

我尝试在Arduino uno r3和macOS 10.15.4上的java之间进行一些基本的通信。我编写的应用程序没有抛出任何错误,但它似乎没有正确地与端口通信。我对这个很陌生,所以很可能我错过了一些明显的东西,但我不完全确定它是否能起作用

我使用了三个类,一个用于运行,一个用于串行连接,一个用于图形

这是主要课程

import javafx.application.Application;

public class main  {

    public static void main(String[] args)
    {
       Application.launch(Graphics.class, args);

    }


}
这是处理通信的类

import com.fazecast.jSerialComm.SerialPort;
import javafx.scene.control.Label;

import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;

public class SerialManagment {

    SerialPort[] ports = SerialPort.getCommPorts();
    SerialPort serialPort;
    OutputStream outPut;


    public void getPortNames(ArrayList data)
    {



        int i = 1;
        for(SerialPort port : ports) {
            data.add(i++ + ": " + port.getSystemPortName());
        }

    }

    public void openPort(int portNumb, Label result)
    {
        serialPort = ports[portNumb + 1];

        if(serialPort.openPort())
        {
            result.setText("Port connected succsesfully");
        } else
        {
            result.setText("port connection unsuccsesful");
        }
        serialPort.setComPortParameters(9600, 8, 1, SerialPort.NO_PARITY);
        serialPort.setComPortTimeouts(SerialPort.TIMEOUT_SCANNER, 0, 0);
        outPut = serialPort.getOutputStream();
    }

    public void sendMessage(String message)
    {
        try {
            outPut.write(message.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public void disconnect()
    {
        serialPort.closePort();
    }
}
这是处理图形的类

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

import java.util.ArrayList;

public class Graphics extends Application {

    Button send;
    Button connect;
    Button disconnect;
    Label result;
    ChoiceBox<String> portSelect;
    TextField input;
    VBox pane;
    Scene window;
    ArrayList<String> data = new ArrayList<String>();
    ObservableList<String> oData;
    SerialManagment g = new SerialManagment();
    String portValue;

    @Override
    public void start(Stage primaryStage) throws Exception {


        g.getPortNames(data);
        oData = FXCollections.observableArrayList(data);
        portSelect = new ChoiceBox<>(oData);
        result = new Label("no port connected");

        disconnect = new Button("disconnect");
        disconnect.setOnAction(e -> g.disconnect());

        connect = new Button("connect");
        connect.setOnAction(e -> connect());
        send = new Button("Send");
        send.setOnAction(e -> sendFile());
        input = new TextField();
        pane = new VBox(10);
        pane.getChildren().addAll(portSelect,connect,disconnect,result,input,send);


        window = new Scene(pane, 600, 400);
        primaryStage.setScene(window);
        primaryStage.setTitle("Data Input");
        primaryStage.setResizable(true);
        primaryStage.show();

    }

    public void connect()
    {
       portValue = portSelect.getValue();

       g.openPort(portValue.indexOf(1), result);
    }

    public void sendFile()
    {
        g.sendMessage(input.getText());
        input.clear();
    }
}
这是我的Arduino使用的代码

#include <LiquidCrystal.h>

const int pin_RS = 8; 
const int pin_EN = 9; 
const int pin_d4 = 4; 
const int pin_d5 = 5; 
const int pin_d6 = 6; 
const int pin_d7 = 7; 
const int pin_BL = 10; 
LiquidCrystal lcd( pin_RS,  pin_EN,  pin_d4,  pin_d5,  pin_d6,  pin_d7);

String input;

void setup() {
 Serial.begin(9600);
 

 lcd.begin(16, 2);
 lcd.setCursor(0,0);

 while(!Serial)
 {
  ;
  }

 Serial.write("startup");
}

void loop() {
  
  if(Serial.available() > 0){
  
  input = Serial.readString();
  if(input != -1){
    lcd.clear();
    lcd.print(input);
  
  }
  }
  

}
它是使用intellij IDEA CE 2020.2制作的

确切的情况是弹出UI,我可以从选择框中选择Arduino。当我点击connect按钮时,结果标签显示它已连接,但当我在输入框中键入消息并按下send时,我正在使用的lcd显示屏上不会显示任何内容

我为混乱的代码提前道歉