직렬 포트에서받은 데이터를 다른 클래스에서 액세스 할 문자열 변수에 저장하려고합니다. 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);
}
}
"메소드 밖"변수에 'null'을 반환하는 방법에 코드를 추가 할 수 있습니까? 또는 게시 된 코드의 어떤 부분이 이것을 수행하는 부분인지 나타낼 수 있습니까? –
rmess() 메서드가 onmessage() 내부에서 호출 된 경우 : onMessage() { ........... .......... System.out.println "받은 메시지 :"+ 메시지); System.out.println (rmess()); ....... ....... } 여기서 수신 된 메시지의 값을 반환합니다. 두 행 모두 동일한 출력을 제공하지만 (명백하게)이 클래스에서 rmess() 메서드가 호출되면 그것은 null을 반환합니다 .. – Manu