0

此应用程序的串行端口唯一需要更改的是端口名称/编号。JSSC 能够像这样更新组合框

private void jComboBoxCommPortFocusGained(java.awt.event.FocusEvent evt) {                                              
    SetPortNames();
}                                             
private void SetPortNames() {
    jComboBoxCommPort.removeAllItems();
    String[] portNames = SerialPortList.getPortNames();
    for (String portName : portNames) {
        jComboBoxCommPort.addItem(portName);
        System.out.println(portName);
    }
}                                            

但是 ActionEvent

private void jComboBoxCommPortActionPerformed(java.awt.event.ActionEvent evt) {                                                  
    InitializeSerialPort(jComboBoxCommPort.getSelectedItem().toString());
}                                                 
private void InitializeSerialPort(String port) {
    try {
        if (serialPort.getPortName().contentEquals(port)) return;
        if (serialPort.isOpened()) serialPort.closePort();
        serialPort = new SerialPort(port);
        serialPort.openPort();
        serialPort.setParams(115200, 8, 1, 0);
        serialPort.setEventsMask(SerialPort.MASK_RXCHAR + SerialPort.MASK_CTS);
        serialPort.addEventListener(new SerialPortReader());
    }
    catch (SerialPortException ex) {
        System.out.println(ex);
    }
}

打破组合框并导致此

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at stb.serialization.JFrameSerialization.jComboBoxCommPortActionPerformed(JFrameSerialization.java:157)
    at stb.serialization.JFrameSerialization.access$300(JFrameSerialization.java:19)
    ...

更改 JSSC 串口的正确方法是什么?

4

1 回答 1

0

NullPointerException 是由 null jssc.SerialPort 引起的。通过替换修复

static SerialPort serialPort;

static SerialPort serialPort = new SerialPort("");
于 2013-12-20T18:34:42.820 回答