Java串口通信读写串口导致程序崩溃问题

最近心血来潮想用java实现与下位机的串口通讯,下位机使用STM32等间隔向串口发送八位的数据,上位机主要实现数据的接收和发送。过程中遇到的问题为:一旦执行到输入输出流对串口进行读写操作时,程序直接崩溃,截图和全部代码如下,希望有经验的朋友能指点迷津:

程序运行初始界面:
在这里插入图片描述
点击“打开串口”按钮后直接闪退崩溃:
在这里插入图片描述

项目所有代码片(无保留):

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.Border;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Scanner;
import java.util.TooManyListenersException;

import gnu.io.CommPort;
import gnu.io.CommPortIdentifier;
import gnu.io.NoSuchPortException;
import gnu.io.PortInUseException;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import gnu.io.UnsupportedCommOperationException;

public class serialCommunication extends JFrame implements ActionListener, SerialPortEventListener {
   
    //串口对象、串口名称列表
    SerialPort serialPort;
    ArrayList<String> arrayList = null;
    InputStream inputStream = null;
    OutputStream outputStream = null;
    //拆分窗格
    JSplitPane jSplitPane1;
    //设置、接收区、发送区、发送总区、左总区、右绘图区、小区1,2,3
    JPanel panel1, panel2, panel3, panel4, panel5, panel6, panel7, panel8, panel9;
    //清空接收区、打开/关闭串口、清空发送区、发送数据
    JButton button1, button2, button3, button4;
    //选择串口、波特率、发送模式、接收模式
    JLabel jLabel1, jLabel2, jLabel3, jLabel4;
    //选择串口组合框、波特率组合框
    JComboBox jComboBox1, jComboBox2;
    //Hex、字符、Hex、字符
    JRadioButton jRadioButton1, jRadioButton2, jRadioButton3, jRadioButton4;
    //组里只可二选一
    ButtonGroup buttonGroup1, buttonGroup2;
    //接收显示区、发送显示区
    JTextArea jTextArea1, jTextArea2;
    //显示区滚动条
    JScrollPane jScrollPane1, jScrollPane2;

    //主--方法
    public static void main(String[] args) {
   
        new serialCommunication();
    }

    //构造--方法
    public serialCommunication() {
   
        initWindow();
        addSerialPort();
    }

    //初始化窗口控件--方法--调用于构造函数serialCommunication()
    public void initWindow() {
   
        panel1 = new JPanel();  //设置
        panel2 = new JPanel();  //接收区
        panel3 = new JPanel();  //发送区
        panel4 = new JPanel();  //发送总区
        panel5 = new JPanel();  //左边总区
        panel6 = new JPanel();  //右边绘图区
        panel7 = new JPanel();  //单选区1
        panel8 = new JPanel();  //单选区2
        panel9 = new JPanel();  //小区3
        //设置panel左上标题
        Border titleBorder1 = BorderFactory.createTitledBorder("设置");
        panel1.setBorder(titleBorder1);
        Border titleBorder2 = BorderFactory.createTitledBorder("接收区");
        panel2.setBorder(titleBorder2);
        Border titleBorder3 = BorderFactory.createTitledBorder("发送区");
        panel3.setBorder(titleBorder3);
        jLabel1 = new JLabel("选择串口", JLabel.CENTER);
        jLabel2 = new JLabel("波 特 率", JLabel.CENTER);
        jLabel3 = new JLabel("发送模式", JLabel.CENTER);
        jLabel4 = new JLabel("接收模式", JLabel.CENTER);
        jLabel1.setFont(new Font("Dialog", Font.BOLD, 14))
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值