繁体   English   中英

尝试从同一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端口名称发送该文本,连接至该端口,并由此打开输入/输出流,然后将从输入面板获取的字符串写入到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完好无损。

步骤1 >通过jSSC的方法打开两个端口。 我将它们构造为SerialPort,然后设置其参数(BaudRate,DataBits等)。

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

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

我不知道为什么无法从与编写相同的端口读取内容,但是,我的问题已解决。 感谢您抽出宝贵时间阅读此答案。 如有任何疑问,请将其张贴在此评论下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM