我正在尝试从套接字连接中读取数据,并试图弄清楚如何在STX和ETX字符/整数之间获取数据。
响应的结构为STX SEQ DATA ETX LRC。我需要阅读STX和ETX之间的所有内容,而忽略校验和(LRC)。
到目前为止,我已经知道了:
StringBuilder sb = new StringBuilder();
try {
int c;
int prevC = 0;
while ((c = in.read()) != -1) {
if(c == 3){
break;
}else if(c == 6){
sb.append(MathOperations.convertIntToHex(c));
break;
}
else{
sb.append(MathOperations.convertIntToHex(c));
}
}
} catch (Exception e) {
LOGGER.error("Error reading loop socket ({})", e.getMessage(), e);
}
String response = sb.toString();
LOGGER.info("Received response from remote server - data ({})",response);
return response;
我目前遇到的问题是LRC数据也附加到字符串。我如何摆脱它?是否有一种更优雅的方式仅读取两者之间的数据?
c == 6用于检查从服务器接收到的请求的确认。
最佳答案
我目前遇到的问题是LRC数据也附加到字符串。我如何摆脱它?
简单的答案是读取LRC的字节并将其丢弃。
是否有一种更优雅的方式仅读取两者之间的数据?skipBytes(n)
方法将执行相同的操作。稍微更优雅...
关于java - 在DataInputStream中检测STX和ETX,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52106724/