gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 13:23:09 24 4
gpt4 key购买 nike

我正在尝试从 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 等)。

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

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

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

关于java - 尝试从同一个 com 端口写入和读取,写入成功,但读取失败。做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32883348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com