尝试从同一个 com 端口写入和读取,写入成功,但读取失败。做什么?

Trying to write and read from the same com port, successful at writing, but failing at reading. Wat do?

我正在尝试从 com 端口获取一些数据,我正在写入数据的端口是同一端口,但事实证明它很难读取。我设法找到了一个简单的代码片段来读取它,但现在,我只读取了零。可能是什么原因?

我在下面发送我的代码,并解释了它们的预期用途。

private void ReadFromComPortActionPerformed(java.awt.event.ActionEvent evt) {                                                
    try {
        String text = EmulatorInput.getText();
        sendData(text, "COM4");
        String out_Text = Arrays.toString(read());
        EmulatorOutput.setText(out_Text);
        System.out.println(out_Text);
    } catch (IOException ex) {
            Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
    }
}  

这是一个JButton,方法名称和参数已由NetBeans 创建。代码首先从输入面板获取文本作为字符串,将其与 com 端口名称一起发送,连接到该端口,并通过它打开 input/output 流,然后将从输入面板获取的字符串写入 OutputStream .然后,我创建一个新字符串,命名为 out_Text 并使用 read() 方法从端口读取数据。

这里是读取方法;

private byte[] read() throws IOException {
    byte[] buffer = new byte[16];
    int total = 0, read = 0;
    while (total <= 16 && (read = input.read(buffer, total, 16-total)) > 0)  {
        total += read;
    }
    return buffer;
}

在我发布的第一个方法使用 read() 将其汇聚成一个可以作为字节数组打印的字符串后,我最终只得到一个零字节。

[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]

我对此很困惑,因为我确定我写到端口。我什至监控了我写的东西,可以看到当我使用程序向com端口写入数据时,它接收到的数据增加了。

如有不明之处或需要更多代码,请通过评论联系。

谢谢你。

经过几次尝试,我尝试了jSSC同样的操作,并成功地再次写入。但是,我仍然无法阅读。然后我注意到,我正在创建 的 com 端口。所以,简单地说,我开始写入一个端口,并从这对端口的另一个端口接收数据。它就像一个魅力。我不确定同样的想法是否适用于 rxtx 库,但是因为 jSSC 的文档是描述性的,而且它很容易使用,我切换到它,并且我的工作方式。你可以在下面找到我如何做的详细解释,没有代码。

PreStep > 当我开始这个的时候我的 COM6 和 COM7 完好无损。

Step1 > 通过 jSSC 的方法打开了两个端口。我将它们构建为SerialPort,然后设置它们的参数(BaudRate、DataBits等)。

Step2 > 我开始从控制台获取输入,并将它们写入 COM6。当我监视端口及其中的字节时,每次发送输入时它都在变化。

Step3 > 每次我按 "Enter" 发送输入时,我都会从 COM7 对象调用一个读取方法,它会发送一个字节数组到控制台(通过 Arrays.toString(byte[] array) 方法)。

我不知道为什么我不能从我写的同一个端口读取,但是,唉,我的问题解决了。感谢您花时间阅读此答案。如果您有任何问题,请 post 在此下方作为评论。