gpt4 book ai didi

java - 我想将从串行端口接收到的数据存储在一个字符串变量中,该变量将在另一个类中访问

转载 作者:行者123 更新时间:2023-12-01 15:15:40 24 4
gpt4 key购买 nike

我想将从串行端口接收到的数据存储在一个字符串变量中,该变量将在另一个类中访问。我编写了打印从 com 端口接收到的数据的代码,但是当从方法中访问变量时,它返回 null..请帮助我。我正在使用 RxTx 库。

public class ProtocolImpl implements Protocol {  

byte[] buffer = new byte[1024];
int tail = 0;
public String message;

public void onReceive(byte b) {
// simple protocol: each message ends with new line
if (b=='\n') {
onMessage();
} else {
buffer[tail] = b;
tail++;
}
}

public void onStreamClosed() {
onMessage();
}

/*
* When message is recognized onMessage is invoked
*/
private void onMessage() {
if (tail!=0)
{
// constructing message
message = getMessage(buffer, tail);
//rmess = message;
System.out.println("RECEIVED MESSAGE: " + message);

if ("KITM".equalsIgnoreCase(message)) {
CommPortSender.send(getMessage("OK"));
}
tail = 0;
}
}

public String rmess() /*this method is returning null.. please help me out*/
{
if (tail!=0) {
message = getMessage(buffer, tail);
}
return message;
}

// helper methods
public byte[] getMessage(String message) {
return (message).getBytes();
}

public String getMessage(byte[] buffer, int len) {
return new String(buffer, 0, tail);
}
}

最佳答案

您正在使用 instance variable 消息。每个 ProtocolImpl 对象都有一个该变量的实例。据推测,调用 onMessageProtocolImpl 对象是调用 rmess 的不同 ProtocolImpl 对象。 p>

简单的解决方法就是将消息设为static variable这样整个程序中只有该变量的一个实例。但要小心,这可能会导致一些微妙的问题,例如同步和对象独立性。更好的解决方案是确保使用相同的 ProtocolImpl 对象来调用 onMessagermess

关于java - 我想将从串行端口接收到的数据存储在一个字符串变量中,该变量将在另一个类中访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11638797/

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