Jserial-Java程序运行良好,但似乎与端口没有连接
我尝试在Arduino uno r3和macOS 10.15.4上的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(
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显示屏上不会显示任何内容
我为混乱的代码提前道歉