1

我正在尝试使用 RXTX java 库通过我的 gui 中的单击侦听器发送字符串,但我无法编辑 RXTX 的代码以发送字符串,它只响应来自控制台的输入,所以我该如何编辑代码不仅发送从控制台输入的数据?

我在这里使用相同的代码:

http://rxtx.qbang.org/wiki/index.php/Two_way_communcation_with_the_serial_port

我尝试编写这个额外的函数并从其他类中调用它:

public void writetoport() {
    String serialMessage = "test";
    try {
        // i have made 'out' as a global variable// 
        this.out.write(serialMessage.getBytes());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

但我在控制台中收到此错误:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at TwoWaySerialComm.writetoport(TwoWaySerialComm.java:121)
4

1 回答 1

1

在 twowaycommuncation 类中,您可以在 if 语句中执行以下操作:

if ( commPort instanceof SerialPort )
        {
            SerialPort serialPort = (SerialPort) commPort;
            serialPort.setSerialPortParams(115200,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
            InputStream in = serialPort.getInputStream();
            OutputStream out = serialPort.getOutputStream();
out1=out;  //add this line, where out1 is a global variable//  
            (new Thread(new SerialReader(in))).start();
         (new Thread(new SerialWriter(out))).start();

        }

然后从这个类的任何地方发送一个这样的字符串:

  public void writetoport(String send) {

    try {
            out1.write(send.getBytes());
            out1.flush();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}

或任何你想做的方式。

所以现在您可以发送您在代码中定义的字符串或在控制台中输入它。

于 2013-06-16T15:31:09.487 回答